diff options
Diffstat (limited to 'test/background/usecases')
-rw-r--r-- | test/background/usecases/SettingUseCase.test.ts | 64 | ||||
-rw-r--r-- | test/background/usecases/StartFindUseCase.test.ts | 229 | ||||
-rw-r--r-- | test/background/usecases/parsers.test.ts | 30 |
3 files changed, 143 insertions, 180 deletions
diff --git a/test/background/usecases/SettingUseCase.test.ts b/test/background/usecases/SettingUseCase.test.ts index 8a4c2b2..395e8a4 100644 --- a/test/background/usecases/SettingUseCase.test.ts +++ b/test/background/usecases/SettingUseCase.test.ts @@ -7,9 +7,7 @@ import Settings, { DefaultSetting, } from "../../../src/shared/settings/Settings"; import Notifier from "../../../src/background/presenters/Notifier"; -import { expect } from "chai"; import Properties from "../../../src/shared/settings/Properties"; -import sinon from "sinon"; class MockSettingRepository implements SettingRepository { load(): Promise<SettingData | null> { @@ -77,17 +75,15 @@ describe("SettingUseCase", () => { hintchars: "abcd1234", }), }); - sinon - .stub(cachedSettingRepository, "get") - .returns(Promise.resolve(settings)); + jest.spyOn(cachedSettingRepository, "get").mockResolvedValue(settings); const got = await sut.getCached(); - expect(got.properties.hintchars).to.equal("abcd1234"); + expect(got.properties.hintchars).toEqual("abcd1234"); }); }); describe("reload", () => { - context("when sync is not set", () => { + describe("when sync is not set", () => { it("loads settings from local storage", async () => { const settings = new Settings({ keymaps: DefaultSetting.keymaps, @@ -102,21 +98,19 @@ describe("SettingUseCase", () => { json: JSONTextSettings.fromSettings(settings).toJSONText(), }); - sinon - .stub(syncSettingRepository, "load") - .returns(Promise.resolve(null)); - sinon - .stub(localSettingRepository, "load") - .returns(Promise.resolve(settingData)); + jest.spyOn(syncSettingRepository, "load").mockResolvedValue(null); + jest + .spyOn(localSettingRepository, "load") + .mockResolvedValue(settingData); await sut.reload(); const current = await cachedSettingRepository.get(); - expect(current.properties.hintchars).to.equal("abcd1234"); + expect(current.properties.hintchars).toEqual("abcd1234"); }); }); - context("when local is not set", () => { + describe("when local is not set", () => { it("loads settings from sync storage", async () => { const settings = new Settings({ keymaps: DefaultSetting.keymaps, @@ -131,37 +125,29 @@ describe("SettingUseCase", () => { json: JSONTextSettings.fromSettings(settings).toJSONText(), }); - sinon - .stub(syncSettingRepository, "load") - .returns(Promise.resolve(settingData)); - sinon - .stub(localSettingRepository, "load") - .returns(Promise.resolve(null)); + jest + .spyOn(syncSettingRepository, "load") + .mockResolvedValue(settingData); + jest.spyOn(localSettingRepository, "load").mockResolvedValue(null); await sut.reload(); const current = await cachedSettingRepository.get(); - expect(current.properties.hintchars).to.equal("aaaa1111"); + expect(current.properties.hintchars).toEqual("aaaa1111"); }); }); - context("neither local nor sync not set", () => { - it("loads default settings", async () => { - it("loads settings from sync storage", async () => { - sinon - .stub(syncSettingRepository, "load") - .returns(Promise.resolve(null)); - sinon - .stub(localSettingRepository, "load") - .returns(Promise.resolve(null)); - - await sut.reload(); - - const current = await cachedSettingRepository.get(); - expect(current.properties.hintchars).to.equal( - DefaultSetting.properties.hintchars - ); - }); + describe("neither local nor sync not set", () => { + it("loads settings from sync storage", async () => { + jest.spyOn(syncSettingRepository, "load").mockResolvedValue(null); + jest.spyOn(localSettingRepository, "load").mockResolvedValue(null); + + await sut.reload(); + + const current = await cachedSettingRepository.get(); + expect(current.properties.hintchars).toEqual( + DefaultSetting.properties.hintchars + ); }); }); }); diff --git a/test/background/usecases/StartFindUseCase.test.ts b/test/background/usecases/StartFindUseCase.test.ts index 24e1fdc..0bfe18a 100644 --- a/test/background/usecases/StartFindUseCase.test.ts +++ b/test/background/usecases/StartFindUseCase.test.ts @@ -1,4 +1,3 @@ -import * as sinon from "sinon"; import MockFindClient from "../mock/MockFindClient"; import MockFindRepository from "../mock/MockFindRepository"; import MockConsoleClient from "../mock/MockConsoleClient"; @@ -21,160 +20,144 @@ describe("StartFindUseCase", () => { frameRepository ); - beforeEach(async () => { - sinon.restore(); + const getFrameIdsSpy = jest + .spyOn(frameRepository, "getFrameIds") + .mockResolvedValue(frameIds); + const clearSelectionSpy = jest + .spyOn(findClient, "clearSelection") + .mockReturnValue(Promise.resolve()); + const findNextSpy = jest.spyOn(findClient, "findNext"); + const setLocalStateSpy = jest + .spyOn(findRepository, "setLocalState") + .mockReturnValue(Promise.resolve()); - sinon - .stub(frameRepository, "getFrameIds") - .returns(Promise.resolve(frameIds)); + beforeEach(async () => { + getFrameIdsSpy.mockClear(); + clearSelectionSpy.mockClear(); + findNextSpy.mockClear(); + setLocalStateSpy.mockClear(); }); describe("startFind", () => { it("starts a find with a keyword", async () => { - const mockFindClient = sinon.mock(findClient); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 0); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 100); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 101); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 0, keyword) - .returns(Promise.resolve(false)); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 100, keyword) - .returns(Promise.resolve(true)); - const mockFindRepository = sinon.mock(findRepository); - mockFindRepository - .expects("setLocalState") - .withArgs(currentTabId, { keyword, frameId: 100 }); - const mockConsoleClient = sinon.mock(consoleClient); - mockConsoleClient - .expects("showInfo") - .withArgs(currentTabId, "Pattern found: " + keyword); + findNextSpy.mockResolvedValueOnce(false).mockResolvedValueOnce(true); + const showInfoSpy = jest + .spyOn(consoleClient, "showInfo") + .mockReturnValue(Promise.resolve()); await sut.startFind(currentTabId, keyword); - mockFindClient.verify(); - mockFindRepository.verify(); - mockConsoleClient.verify(); + expect(clearSelectionSpy).toBeCalledTimes(3); + expect(clearSelectionSpy.mock.calls[0][1]).toEqual(0); + expect(clearSelectionSpy.mock.calls[1][1]).toEqual(100); + expect(clearSelectionSpy.mock.calls[2][1]).toEqual(101); + expect(findNextSpy).toBeCalledTimes(2); + expect(findNextSpy.mock.calls[0][1]).toEqual(0); + expect(findNextSpy.mock.calls[1][1]).toEqual(100); + expect(setLocalStateSpy).toBeCalledWith(currentTabId, { + keyword, + frameId: 100, + }); + expect(showInfoSpy).toBeCalledWith( + currentTabId, + "Pattern found: " + keyword + ); }); it("starts a find with last local state", async () => { - const mockFindClient = sinon.mock(findClient); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 0); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 100); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 101); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 0, keyword) - .returns(Promise.resolve(false)); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 100, keyword) - .returns(Promise.resolve(true)); - const mockFindRepository = sinon.mock(findRepository); - mockFindRepository - .expects("getLocalState") - .withArgs(currentTabId) - .returns(Promise.resolve({ keyword, frameId: 0 })); - mockFindRepository - .expects("setLocalState") - .withArgs(currentTabId, { keyword, frameId: 100 }); - const mockConsoleClient = sinon.mock(consoleClient); - mockConsoleClient - .expects("showInfo") - .withArgs(currentTabId, "Pattern found: " + keyword); + findNextSpy.mockResolvedValueOnce(false).mockResolvedValueOnce(true); + const getLocalStateSpy = jest + .spyOn(findRepository, "getLocalState") + .mockResolvedValue({ keyword, frameId: 0 }); + const showInfoSpy = jest + .spyOn(consoleClient, "showInfo") + .mockReturnValue(Promise.resolve()); await sut.startFind(currentTabId, undefined); - mockFindClient.verify(); - mockFindRepository.verify(); - mockConsoleClient.verify(); + expect(clearSelectionSpy).toBeCalledTimes(3); + expect(clearSelectionSpy.mock.calls[0][1]).toEqual(0); + expect(clearSelectionSpy.mock.calls[1][1]).toEqual(100); + expect(clearSelectionSpy.mock.calls[2][1]).toEqual(101); + expect(findNextSpy).toBeCalledTimes(2); + expect(findNextSpy.mock.calls[0][1]).toEqual(0); + expect(findNextSpy.mock.calls[1][1]).toEqual(100); + expect(getLocalStateSpy).toBeCalledWith(currentTabId); + expect(setLocalStateSpy).toBeCalledWith(currentTabId, { + keyword, + frameId: 100, + }); + expect(showInfoSpy).toBeCalledWith( + currentTabId, + "Pattern found: " + keyword + ); }); it("starts a find with last global state", async () => { - const mockFindClient = sinon.mock(findClient); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 0); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 100); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 101); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 0, keyword) - .returns(Promise.resolve(false)); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 100, keyword) - .returns(Promise.resolve(true)); - const mockFindRepository = sinon.mock(findRepository); - mockFindRepository - .expects("getLocalState") - .withArgs(currentTabId) - .returns(Promise.resolve(undefined)); - mockFindRepository - .expects("getGlobalKeyword") - .returns(Promise.resolve(keyword)); - mockFindRepository - .expects("setLocalState") - .withArgs(currentTabId, { keyword, frameId: 100 }); - const mockConsoleClient = sinon.mock(consoleClient); - mockConsoleClient - .expects("showInfo") - .withArgs(currentTabId, "Pattern found: " + keyword); + findNextSpy.mockResolvedValueOnce(false).mockResolvedValueOnce(true); + const getLocalStateSpy = jest + .spyOn(findRepository, "getLocalState") + .mockResolvedValue(undefined); + jest.spyOn(findRepository, "getGlobalKeyword").mockResolvedValue(keyword); + const showInfoSpy = jest + .spyOn(consoleClient, "showInfo") + .mockReturnValue(Promise.resolve()); await sut.startFind(currentTabId, undefined); - mockFindClient.verify(); - mockFindRepository.verify(); - mockConsoleClient.verify(); + expect(clearSelectionSpy).toBeCalledTimes(3); + expect(clearSelectionSpy.mock.calls[0][1]).toEqual(0); + expect(clearSelectionSpy.mock.calls[1][1]).toEqual(100); + expect(clearSelectionSpy.mock.calls[2][1]).toEqual(101); + expect(findNextSpy).toBeCalledTimes(2); + expect(findNextSpy.mock.calls[0][1]).toEqual(0); + expect(findNextSpy.mock.calls[1][1]).toEqual(100); + expect(getLocalStateSpy).toBeCalledWith(currentTabId); + expect(setLocalStateSpy).toBeCalledWith(currentTabId, { + keyword, + frameId: 100, + }); + expect(showInfoSpy).toBeCalledWith( + currentTabId, + "Pattern found: " + keyword + ); }); it("shows an error when pattern not found", async () => { - const mockFindClient = sinon.mock(findClient); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 0); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 100); - mockFindClient.expects("clearSelection").withArgs(currentTabId, 101); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 0, keyword) - .returns(Promise.resolve(false)); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 100, keyword) - .returns(Promise.resolve(false)); - mockFindClient - .expects("findNext") - .withArgs(currentTabId, 101, keyword) - .returns(Promise.resolve(false)); - const mockFindRepository = sinon.mock(findRepository); - mockFindRepository.expects("setLocalState").never(); - const mockConsoleClient = sinon.mock(consoleClient); - mockConsoleClient - .expects("showError") - .withArgs(currentTabId, "Pattern not found: " + keyword); + findNextSpy.mockResolvedValue(false); + const showErrorSpy = jest + .spyOn(consoleClient, "showError") + .mockReturnValue(Promise.resolve()); await sut.startFind(currentTabId, keyword); - mockFindClient.verify(); - mockFindRepository.verify(); - mockConsoleClient.verify(); + expect(clearSelectionSpy).toBeCalledTimes(3); + expect(clearSelectionSpy.mock.calls[0][1]).toEqual(0); + expect(clearSelectionSpy.mock.calls[1][1]).toEqual(100); + expect(clearSelectionSpy.mock.calls[2][1]).toEqual(101); + expect(setLocalStateSpy).not.toBeCalled(); + expect(showErrorSpy).toBeCalledWith( + currentTabId, + "Pattern not found: " + keyword + ); }); it("shows an error when no last keywords", async () => { - sinon - .stub(findRepository, "getLocalState") - .returns(Promise.resolve(undefined)); - sinon - .stub(findRepository, "getGlobalKeyword") - .returns(Promise.resolve(undefined)); - - const mockConsoleClient = sinon.mock(consoleClient); - mockConsoleClient - .expects("showError") - .withArgs(currentTabId, "No previous search keywords"); + jest.spyOn(findRepository, "getLocalState").mockResolvedValue(undefined); + jest + .spyOn(findRepository, "getGlobalKeyword") + .mockResolvedValue(undefined); + + const showErrorSpy = jest + .spyOn(consoleClient, "showError") + .mockReturnValue(Promise.resolve()); await sut.startFind(currentTabId, undefined); - mockConsoleClient.verify(); + expect(showErrorSpy).toBeCalledWith( + currentTabId, + "No previous search keywords" + ); }); }); }); diff --git a/test/background/usecases/parsers.test.ts b/test/background/usecases/parsers.test.ts index 019b56e..db26b7a 100644 --- a/test/background/usecases/parsers.test.ts +++ b/test/background/usecases/parsers.test.ts @@ -1,42 +1,36 @@ import * as parsers from "../../../src/background/usecases/parsers"; -import { expect } from "chai"; describe("shared/commands/parsers", () => { describe("#parsers.parseSetOption", () => { it("parse set string", () => { const [key, value] = parsers.parseSetOption("hintchars=abcdefgh"); - expect(key).to.equal("hintchars"); - expect(value).to.equal("abcdefgh"); + expect(key).toEqual("hintchars"); + expect(value).toEqual("abcdefgh"); }); it("parse set empty string", () => { const [key, value] = parsers.parseSetOption("hintchars="); - expect(key).to.equal("hintchars"); - expect(value).to.equal(""); + expect(key).toEqual("hintchars"); + expect(value).toEqual(""); }); it("parse set boolean", () => { let [key, value] = parsers.parseSetOption("smoothscroll"); - expect(key).to.equal("smoothscroll"); - expect(value).to.be.true; + expect(key).toEqual("smoothscroll"); + expect(value).toBeTruthy; [key, value] = parsers.parseSetOption("nosmoothscroll"); - expect(key).to.equal("smoothscroll"); - expect(value).to.be.false; + expect(key).toEqual("smoothscroll"); + expect(value).toBeFalsy; }); it("throws error on unknown property", () => { - expect(() => parsers.parseSetOption("encoding=utf-8")).to.throw( - Error, + expect(() => parsers.parseSetOption("encoding=utf-8")).toThrowError( "Unknown" ); - expect(() => parsers.parseSetOption("paste")).to.throw(Error, "Unknown"); - expect(() => parsers.parseSetOption("nopaste")).to.throw( - Error, - "Unknown" - ); - expect(() => parsers.parseSetOption("smoothscroll=yes")).to.throw( - Error, + expect(() => parsers.parseSetOption("paste")).toThrowError("Unknown"); + expect(() => parsers.parseSetOption("nopaste")).toThrowError("Unknown"); + expect(() => parsers.parseSetOption("smoothscroll=yes")).toThrowError( "Invalid argument" ); }); |