test(fe): use jest mock

This commit is contained in:
hexxa 2022-01-22 10:24:26 +08:00 committed by Hexxa
parent 40c1d81d58
commit 8165c70bcb
6 changed files with 98 additions and 62 deletions

View file

@ -6,13 +6,16 @@ import { AuthPane } from "../pane_login";
import { ICoreState, newState } from "../core_state"; import { ICoreState, newState } from "../core_state";
import { updater } from "../state_updater"; import { updater } from "../state_updater";
import { UploadState, UploadEntry } from "../../worker/interface"; import { UploadState, UploadEntry } from "../../worker/interface";
import { MockUsersClient, resps as usersResps } from "../../client/users_mock"; import {
import { MockFilesClient, resps as filesResps } from "../../client/files_mock"; NewMockUsersClient,
import { MockSettingsClient } from "../../client/settings_mock"; resps as usersResps,
} from "../../client/users_mock";
import {
NewMockFilesClient,
resps as filesResps,
} from "../../client/files_mock";
import { NewMockSettingsClient } from "../../client/settings_mock";
import { controlName as panelTabs } from "../root_frame"; import { controlName as panelTabs } from "../root_frame";
import {} from "../layers";
import {} from "../dialog_settings";
import {} from "../panel_files";
import { import {
sharingCtrl, sharingCtrl,
ctrlOn, ctrlOn,
@ -33,9 +36,9 @@ describe("Login", () => {
update: (updater: (prevState: ICoreState) => ICoreState) => {}, update: (updater: (prevState: ICoreState) => ICoreState) => {},
}); });
const usersCl = new MockUsersClient(""); const usersCl = NewMockUsersClient("");
const filesCl = new MockFilesClient(""); const filesCl = NewMockFilesClient("");
const settingsCl = new MockSettingsClient(""); const settingsCl = NewMockSettingsClient("");
updater().init(coreState); updater().init(coreState);
updater().setClients(usersCl, filesCl, settingsCl); updater().setClients(usersCl, filesCl, settingsCl);

View file

@ -5,12 +5,15 @@ import { initMockWorker } from "../../test/helpers";
import { FilesPanel } from "../panel_files"; import { FilesPanel } from "../panel_files";
import { ICoreState, newState } from "../core_state"; import { ICoreState, newState } from "../core_state";
import { updater } from "../state_updater"; import { updater } from "../state_updater";
import { MockUsersClient, resps as usersResps } from "../../client/users_mock"; import {
NewMockUsersClient,
resps as usersResps,
} from "../../client/users_mock";
import { import {
NewMockFilesClient, NewMockFilesClient,
resps as filesResps, resps as filesResps,
} from "../../client/files_mock"; } from "../../client/files_mock";
import { MockSettingsClient } from "../../client/settings_mock"; import { NewMockSettingsClient } from "../../client/settings_mock";
import { makePromise } from "../../test/helpers"; import { makePromise } from "../../test/helpers";
describe("FilesPanel", () => { describe("FilesPanel", () => {
@ -18,9 +21,9 @@ describe("FilesPanel", () => {
initMockWorker(); initMockWorker();
const coreState = newState(); const coreState = newState();
const usersCl = new MockUsersClient(""); const usersCl = NewMockUsersClient("");
const filesCl = NewMockFilesClient(""); const filesCl = NewMockFilesClient("");
const settingsCl = new MockSettingsClient(""); const settingsCl = NewMockSettingsClient("");
updater().init(coreState); updater().init(coreState);
updater().setClients(usersCl, filesCl, settingsCl); updater().setClients(usersCl, filesCl, settingsCl);

View file

@ -1,14 +1,15 @@
import { mock, instance, verify, when, anything } from "ts-mockito"; import { mock, instance, verify, when, anything } from "ts-mockito";
import { List, Map } from "immutable"; import { Map } from "immutable";
import { SharingsPanel } from "../panel_sharings"; import { SharingsPanel } from "../panel_sharings";
import { initUploadMgr } from "../../worker/upload_mgr"; import { initUploadMgr } from "../../worker/upload_mgr";
import { ICoreState, newState } from "../core_state"; import { ICoreState, newState } from "../core_state";
import { updater } from "../state_updater"; import { updater } from "../state_updater";
import { MockWorker } from "../../worker/interface"; import { MockWorker } from "../../worker/interface";
import { MockUsersClient, resps as usersResps } from "../../client/users_mock"; import { NewMockUsersClient } from "../../client/users_mock";
import { MockFilesClient, resps as filesResps } from "../../client/files_mock"; import { NewMockFilesClient } from "../../client/files_mock";
import { MockSettingsClient } from "../../client/settings_mock"; import { NewMockSettingsClient } from "../../client/settings_mock";
import { makePromise } from "../../test/helpers";
describe("SharingsPanel", () => { describe("SharingsPanel", () => {
const initSharingsPanel = (): any => { const initSharingsPanel = (): any => {
@ -17,9 +18,9 @@ describe("SharingsPanel", () => {
initUploadMgr(mockWorker); initUploadMgr(mockWorker);
const coreState = newState(); const coreState = newState();
const usersCl = new MockUsersClient(""); const usersCl = NewMockUsersClient("");
const filesCl = new MockFilesClient(""); const filesCl = NewMockFilesClient("");
const settingsCl = new MockSettingsClient(""); const settingsCl = NewMockSettingsClient("");
updater().init(coreState); updater().init(coreState);
updater().setClients(usersCl, filesCl, settingsCl); updater().setClients(usersCl, filesCl, settingsCl);
@ -43,21 +44,20 @@ describe("SharingsPanel", () => {
const { sharingsPanel, usersCl, filesCl } = initSharingsPanel(); const { sharingsPanel, usersCl, filesCl } = initSharingsPanel();
const newSharings = Map<string, string>({ const newSharings = Map<string, string>({
"mock_sharingfolder1": "f123456", mock_sharingfolder1: "f123456",
"mock_sharingfolder2": "f123456", mock_sharingfolder2: "f123456",
}) });
filesCl.setMock({ filesCl.listSharingIDs = jest.fn().mockReturnValueOnce(
...filesResps, makePromise({
listSharingIDsMockResp: {
status: 200, status: 200,
statusText: "", statusText: "",
data: { data: {
// it seems immutable map will be converted into built-in map automatically // it seems immutable map will be converted into built-in map automatically
IDs: newSharings, IDs: newSharings,
}, },
}, })
}); );
await sharingsPanel.deleteSharing(); await sharingsPanel.deleteSharing();

View file

@ -5,9 +5,9 @@ import { initUploadMgr } from "../../worker/upload_mgr";
import { ICoreState, newState } from "../core_state"; import { ICoreState, newState } from "../core_state";
import { updater } from "../state_updater"; import { updater } from "../state_updater";
import { MockWorker } from "../../worker/interface"; import { MockWorker } from "../../worker/interface";
import { MockUsersClient, resps as usersResps } from "../../client/users_mock"; import { NewMockUsersClient, resps as usersResps } from "../../client/users_mock";
import { MockFilesClient, resps as filesResps } from "../../client/files_mock"; import { NewMockFilesClient, resps as filesResps } from "../../client/files_mock";
import { MockSettingsClient } from "../../client/settings_mock"; import { NewMockSettingsClient } from "../../client/settings_mock";
describe("UploadingsPanel", () => { describe("UploadingsPanel", () => {
const initUploadingsPanel = (): any => { const initUploadingsPanel = (): any => {
@ -16,9 +16,9 @@ describe("UploadingsPanel", () => {
initUploadMgr(mockWorker); initUploadMgr(mockWorker);
const coreState = newState(); const coreState = newState();
const usersCl = new MockUsersClient(""); const usersCl = NewMockUsersClient("");
const filesCl = new MockFilesClient(""); const filesCl = NewMockFilesClient("");
const settingsCl = new MockSettingsClient(""); const settingsCl = NewMockSettingsClient("");
updater().init(coreState); updater().init(coreState);
updater().setClients(usersCl, filesCl, settingsCl); updater().setClients(usersCl, filesCl, settingsCl);

View file

@ -1,12 +1,19 @@
import { List, Set, Map } from "immutable"; import { List, Set, Map } from "immutable";
import { initMockWorker } from "../../test/helpers"; import { initMockWorker, makePromise } from "../../test/helpers";
import { StateMgr } from "../state_mgr"; import { StateMgr } from "../state_mgr";
import { User, UploadInfo } 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 { import {
MockSettingsClient, NewMockFilesClient,
resps as filesResps,
} from "../../client/files_mock";
import { shareDirQuery } from "../../client/files";
import {
NewMockUsersClient,
resps as usersResps,
} from "../../client/users_mock";
import {
NewMockSettingsClient,
resps as settingsResps, resps as settingsResps,
} from "../../client/settings_mock"; } from "../../client/settings_mock";
import { ICoreState, newState } from "../core_state"; import { ICoreState, newState } from "../core_state";
@ -22,9 +29,9 @@ describe("State Manager", () => {
// }; // };
test("initUpdater for admin", async () => { test("initUpdater for admin", async () => {
const usersCl = new MockUsersClient(""); const usersCl = NewMockUsersClient("");
const filesCl = new MockFilesClient(""); const filesCl = NewMockFilesClient("");
const settingsCl = new MockSettingsClient(""); const settingsCl = NewMockSettingsClient("");
const mgr = new StateMgr({}); // it will call initUpdater const mgr = new StateMgr({}); // it will call initUpdater
mgr.setUsersClient(usersCl); mgr.setUsersClient(usersCl);
@ -122,9 +129,10 @@ describe("State Manager", () => {
}); });
test("initUpdater for visitor in sharing mode", async () => { test("initUpdater for visitor in sharing mode", async () => {
const usersCl = new MockUsersClient(""); const usersCl = NewMockUsersClient("");
const filesCl = new MockFilesClient(""); const filesCl = NewMockFilesClient("");
const settingsCl = new MockSettingsClient(""); const settingsCl = NewMockSettingsClient("");
const mockSelfResp = { const mockSelfResp = {
status: 200, status: 200,
statusText: "", statusText: "",
@ -151,13 +159,12 @@ describe("State Manager", () => {
}, },
}, },
}; };
const mockIsAuthedResp = { status: 401, statusText: "", data: {} }; usersCl.isAuthed = jest
const mockUserResps = { .fn()
...usersResps, .mockReturnValue(
isAuthedMockResp: mockIsAuthedResp, makePromise({ status: 401, statusText: "", data: {} })
selfMockResp: mockSelfResp, );
}; usersCl.self = jest.fn().mockReturnValue(makePromise(mockSelfResp));
usersCl.setMock(mockUserResps);
const coreState = newState(); const coreState = newState();
@ -171,7 +178,8 @@ describe("State Manager", () => {
}; };
const sharingPath = "sharingPath/files"; const sharingPath = "sharingPath/files";
const query = new URLSearchParams(`?dir=${sharingPath}`); const query = new URLSearchParams(`?${shareDirQuery}=${sharingPath}`);
await mgr.initUpdater(coreState, query); await mgr.initUpdater(coreState, query);
// browser // browser

View file

@ -1,12 +1,18 @@
import { List, Set, Map } from "immutable"; import { List, Set, Map } from "immutable";
import { initMockWorker } from "../../test/helpers"; import { initMockWorker, makePromise } from "../../test/helpers";
import { TopBar } from "../topbar"; import { TopBar } from "../topbar";
import { ICoreState, newState } from "../core_state"; import { ICoreState, newState } from "../core_state";
import { updater } from "../state_updater"; import { updater } from "../state_updater";
import { MockUsersClient, resps as usersResps } from "../../client/users_mock"; import {
import { MockFilesClient, resps as filesResps } from "../../client/files_mock"; NewMockUsersClient,
import { MockSettingsClient } from "../../client/settings_mock"; resps as usersResps,
} from "../../client/users_mock";
import {
NewMockFilesClient,
resps as filesResps,
} from "../../client/files_mock";
import { NewMockSettingsClient } from "../../client/settings_mock";
import { UploadInfo, visitorID, roleVisitor, MetadataResp } from "../../client"; import { UploadInfo, visitorID, roleVisitor, MetadataResp } from "../../client";
import { UploadEntry, UploadState } from "../../worker/interface"; import { UploadEntry, UploadState } from "../../worker/interface";
@ -69,11 +75,27 @@ describe("TopBar", () => {
isAuthedMockResp, isAuthedMockResp,
}; };
const filesCl = new MockFilesClient(""); const filesCl = NewMockFilesClient("");
filesCl.setMock(mockFileResps); filesCl.listHome = jest
const usersCl = new MockUsersClient(""); .fn()
usersCl.setMock(mockUserResps); .mockReturnValueOnce(makePromise(listHomeMockResp));
const settingsCl = new MockSettingsClient(""); filesCl.isSharing = jest
.fn()
.mockReturnValueOnce(makePromise(isSharingMockResp));
filesCl.listSharings = jest
.fn()
.mockReturnValueOnce(makePromise(listSharingsMockResp));
filesCl.listUploadings = jest
.fn()
.mockReturnValueOnce(makePromise(listUploadingsMockResp));
const usersCl = NewMockUsersClient("");
usersCl.self = jest.fn().mockReturnValueOnce(makePromise(selfMockResp));
usersCl.isAuthed = jest
.fn()
.mockReturnValueOnce(makePromise(isAuthedMockResp));
const settingsCl = NewMockSettingsClient("");
updater().init(coreState); updater().init(coreState);
updater().setClients(usersCl, filesCl, settingsCl); updater().setClients(usersCl, filesCl, settingsCl);