From ac797848e89b40791fdf6f91ed89d06be4367502 Mon Sep 17 00:00:00 2001 From: hexxa Date: Sun, 12 Sep 2021 21:20:07 +0800 Subject: [PATCH] test(state_mgr): fix broken test --- .../components/__test__/state_mgr.test.tsx | 18 +++++++-- .../web/src/components/state_updater.ts | 37 +++++++++++-------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/src/client/web/src/components/__test__/state_mgr.test.tsx b/src/client/web/src/components/__test__/state_mgr.test.tsx index dffc30f..6052721 100644 --- a/src/client/web/src/components/__test__/state_mgr.test.tsx +++ b/src/client/web/src/components/__test__/state_mgr.test.tsx @@ -2,11 +2,11 @@ import { List, Set, Map } from "immutable"; import { mock, instance } from "ts-mockito"; import { StateMgr } from "../state_mgr"; -import { User } from "../../client"; +import { User, UploadInfo } from "../../client"; import { MockFilesClient, resps as filesResps } from "../../client/files_mock"; import { MockUsersClient, resps as usersResps } from "../../client/users_mock"; import { ICoreState, newWithWorker } from "../core_state"; -import { MockWorker } from "../../worker/interface"; +import { MockWorker, UploadState, UploadEntry } from "../../worker/interface"; describe("State Manager", () => { test("initUpdater", async () => { @@ -35,8 +35,20 @@ describe("State Manager", () => { List(filesResps.listSharingsMockResp.data.sharingDirs) ); expect(coreState.browser.uploadings).toEqual( - List(filesResps.listUploadingsMockResp.data.uploadInfos) + List( + filesResps.listUploadingsMockResp.data.uploadInfos.map((info: UploadInfo) => { + return { + file: undefined, + filePath: info.realFilePath, + size: info.size, + uploaded: info.uploaded, + state: UploadState.Ready, + err: "", + }; + }) + ) ); + expect(coreState.browser.items).toEqual( List(filesResps.listHomeMockResp.data.metadatas) ); diff --git a/src/client/web/src/components/state_updater.ts b/src/client/web/src/components/state_updater.ts index 377a6f7..29b68e1 100644 --- a/src/client/web/src/components/state_updater.ts +++ b/src/client/web/src/components/state_updater.ts @@ -15,7 +15,7 @@ import { } from "../client"; import { FilesClient } from "../client/files"; import { UsersClient } from "../client/users"; -import { UploadEntry } from "../worker/interface"; +import { UploadEntry, UploadState } from "../worker/interface"; import { Up } from "../worker/upload_mgr"; import { alertMsg } from "../common/env"; import { LocalStorage } from "../common/localstorage"; @@ -110,25 +110,32 @@ export class Updater { return false; } - let remoteUploads = Map([]); - luResp.data.uploadInfos.forEach((info: UploadInfo) => { - remoteUploads = remoteUploads.set(info.realFilePath, info); + let localUploads = Map([]); + this.props.browser.uploadings.forEach((entry: UploadEntry) => { + localUploads = localUploads.set(entry.filePath, entry); }) + let updatedUploads = List([]); - this.props.browser.uploadings.forEach((localInfo: UploadEntry) => { - const remoteInfo = remoteUploads.get(localInfo.filePath); - if (remoteInfo == null) { - // TODO: i18n - localInfo.err = "not found in server"; - } else { - updatedUploads.push({ - file: localInfo.file, - filePath: localInfo.filePath, + luResp.data.uploadInfos.forEach((remoteInfo: UploadInfo) => { + const localEntry = localUploads.get(remoteInfo.realFilePath); + if (localEntry == null) { + updatedUploads = updatedUploads.push({ + file: undefined, + filePath: remoteInfo.realFilePath, size: remoteInfo.size, uploaded: remoteInfo.uploaded, - state: localInfo.state, - err: localInfo.err, + state: UploadState.Ready, + err: "", + }); + } else { + updatedUploads = updatedUploads.push({ + file: localEntry.file, + filePath: localEntry.filePath, + size: remoteInfo.size, + uploaded: remoteInfo.uploaded, + state: localEntry.state, + err: localEntry.err, }); } });