diff options
Diffstat (limited to 'test/background/usecases/NavigateUseCase.test.ts')
-rw-r--r-- | test/background/usecases/NavigateUseCase.test.ts | 127 |
1 files changed, 103 insertions, 24 deletions
diff --git a/test/background/usecases/NavigateUseCase.test.ts b/test/background/usecases/NavigateUseCase.test.ts index 48a1c5b..7ad0e4f 100644 --- a/test/background/usecases/NavigateUseCase.test.ts +++ b/test/background/usecases/NavigateUseCase.test.ts @@ -1,26 +1,107 @@ +import "reflect-metadata"; import TabPresenter from '../../../src/background/presenters/TabPresenter'; import NavigateUseCase from '../../../src/background/usecases/NavigateUseCase'; import NavigateClient from '../../../src/background/clients/NavigateClient'; -// import { expect } from 'chai'; import * as sinon from 'sinon'; +class MockTabPresenter implements TabPresenter { + create(_url: string, _opts?: object): Promise<browser.tabs.Tab> { + throw new Error("not implemented"); + } + + duplicate(_id: number): Promise<browser.tabs.Tab> { + throw new Error("not implemented"); + } + + getAll(): Promise<browser.tabs.Tab[]> { + throw new Error("not implemented"); + } + + getByKeyword(_keyword: string, _excludePinned: boolean): Promise<browser.tabs.Tab[]> { + throw new Error("not implemented"); + } + + getCurrent(): Promise<browser.tabs.Tab> { + throw new Error("not implemented"); + } + + getLastSelectedId(): Promise<number | undefined> { + throw new Error("not implemented"); + } + + getZoom(_tabId: number): Promise<number> { + throw new Error("not implemented"); + } + + onSelected(_listener: (arg: { tabId: number; windowId: number }) => void): void { + throw new Error("not implemented"); + } + + open(_url: string, _tabId?: number): Promise<browser.tabs.Tab> { + throw new Error("not implemented"); + } + + reload(_tabId: number, _cache: boolean): Promise<void> { + throw new Error("not implemented"); + } + + remove(_ids: number[]): Promise<void> { + throw new Error("not implemented"); + } + + reopen(): Promise<void> { + throw new Error("not implemented"); + } + + select(_tabId: number): Promise<void> { + throw new Error("not implemented"); + } + + setPinned(_tabId: number, _pinned: boolean): Promise<void> { + throw new Error("not implemented"); + } + + setZoom(_tabId: number, _factor: number): Promise<void> { + throw new Error("not implemented"); + } +} + describe('NavigateUseCase', () => { let sut: NavigateUseCase; let tabPresenter: TabPresenter; let navigateClient: NavigateClient; + beforeEach(() => { - tabPresenter = new TabPresenter(); + tabPresenter = new MockTabPresenter(); navigateClient = new NavigateClient(); sut = new NavigateUseCase(tabPresenter, navigateClient); }); + const newTab = (url: string): browser.tabs.Tab => { + return { + index: 0, + title: 'dummy title', + url: url, + active: true, + hidden: false, + highlighted: false, + incognito: false, + isArticle: false, + isInReaderMode: false, + lastAccessed: 1585446733000, + pinned: false, + selected: false, + windowId: 0 + }; + }; + describe('#openParent()', async () => { it('opens parent directory of file', async() => { - const stub = sinon.stub(tabPresenter, 'getCurrent'); - stub.returns(Promise.resolve({ url: 'https://google.com/fruits/yellow/banana' })) + sinon.stub(tabPresenter, 'getCurrent') + .returns(Promise.resolve(newTab('https://google.com/fruits/yellow/banana'))); - const mock = sinon.mock(tabPresenter); - mock.expects('open').withArgs('https://google.com/fruits/yellow/'); + const mock = sinon.mock(tabPresenter) + .expects('open').withArgs('https://google.com/fruits/yellow/'); await sut.openParent(); @@ -28,11 +109,11 @@ describe('NavigateUseCase', () => { }); it('opens parent directory of directory', async() => { - const stub = sinon.stub(tabPresenter, 'getCurrent'); - stub.returns(Promise.resolve({ url: 'https://google.com/fruits/yellow/' })) + sinon.stub(tabPresenter, 'getCurrent') + .returns(Promise.resolve(newTab('https://google.com/fruits/yellow/'))); - const mock = sinon.mock(tabPresenter); - mock.expects('open').withArgs('https://google.com/fruits/'); + const mock = sinon.mock(tabPresenter) + .expects('open').withArgs('https://google.com/fruits/'); await sut.openParent(); @@ -40,11 +121,11 @@ describe('NavigateUseCase', () => { }); it('removes hash', async() => { - const stub = sinon.stub(tabPresenter, 'getCurrent'); - stub.returns(Promise.resolve({ url: 'https://google.com/#top' })) + sinon.stub(tabPresenter, 'getCurrent') + .returns(Promise.resolve(newTab('https://google.com/#top'))); - const mock = sinon.mock(tabPresenter); - mock.expects('open').withArgs('https://google.com/'); + const mock = sinon.mock(tabPresenter) + .expects('open').withArgs('https://google.com/'); await sut.openParent(); @@ -52,11 +133,11 @@ describe('NavigateUseCase', () => { }); it('removes search query', async() => { - const stub = sinon.stub(tabPresenter, 'getCurrent'); - stub.returns(Promise.resolve({ url: 'https://google.com/search?q=apple' })) + sinon.stub(tabPresenter, 'getCurrent') + .returns(Promise.resolve(newTab('https://google.com/search?q=apple'))); - const mock = sinon.mock(tabPresenter); - mock.expects('open').withArgs('https://google.com/search'); + const mock = sinon.mock(tabPresenter) + .expects('open').withArgs('https://google.com/search'); await sut.openParent(); @@ -66,13 +147,11 @@ describe('NavigateUseCase', () => { describe('#openRoot()', () => { it('opens root direectory', async() => { - const stub = sinon.stub(tabPresenter, 'getCurrent'); - stub.returns(Promise.resolve({ - url: 'https://google.com/seach?q=apple', - })) + sinon.stub(tabPresenter, 'getCurrent') + .returns(Promise.resolve(newTab('https://google.com/seach?q=apple'))); - const mock = sinon.mock(tabPresenter); - mock.expects('open').withArgs('https://google.com'); + const mock = sinon.mock(tabPresenter) + .expects('open').withArgs('https://google.com'); await sut.openRoot(); |