diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/background/completion/TabCompletionUseCase.test.ts | 6 | ||||
| -rw-r--r-- | test/background/usecases/NavigateUseCase.test.ts | 127 | 
2 files changed, 106 insertions, 27 deletions
diff --git a/test/background/completion/TabCompletionUseCase.test.ts b/test/background/completion/TabCompletionUseCase.test.ts index e2c7c19..254bfe6 100644 --- a/test/background/completion/TabCompletionUseCase.test.ts +++ b/test/background/completion/TabCompletionUseCase.test.ts @@ -96,9 +96,9 @@ describe('TabCompletionUseCase', () => {        sinon.stub(tabPresenter, 'getLastSelectedId').returns(Promise.resolve(11));        expect(await sut.queryTabs("", false)).to.deep.equal([ -        { index: 0, title: 'Google', url: 'https://google.com/', faviconUrl: 'https://google.com/favicon.ico', flag: TabFlag.CurrentTab }, -        { index: 1, title: 'Yahoo', url: 'https://yahoo.com/', faviconUrl: 'https://yahoo.com/favicon.ico', flag: TabFlag.LastTab }, -        { index: 2, title: 'Bing', url: 'https://bing.com/', faviconUrl: undefined, flag: TabFlag.None }, +        { index: 1, title: 'Google', url: 'https://google.com/', faviconUrl: 'https://google.com/favicon.ico', flag: TabFlag.CurrentTab }, +        { index: 2, title: 'Yahoo', url: 'https://yahoo.com/', faviconUrl: 'https://yahoo.com/favicon.ico', flag: TabFlag.LastTab }, +        { index: 3, title: 'Bing', url: 'https://bing.com/', faviconUrl: undefined, flag: TabFlag.None },        ]);      })    }); 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();  | 
