aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2019-05-26 16:24:14 +0900
committerGitHub <noreply@github.com>2019-05-26 16:24:14 +0900
commitcd584c8e243bafa8fc284279f716e8113607cd65 (patch)
treebc39bc30369f149e4ba4b6dc9c353b2906c4ef90 /test
parent07897df636ca3e732490d53fd2acf947738bf16e (diff)
parent34a96cdc9c5d7c8a11c6f1ae512fbc97724f61c4 (diff)
Merge pull request #592 from ueokande/repeat-last-operation
Add "repeat last operation" command
Diffstat (limited to 'test')
-rw-r--r--test/background/usecases/NavigateUseCase.test.ts82
-rw-r--r--test/content/presenters/NavigationPresenter.test.ts9
-rw-r--r--test/content/usecases/ClipboardUseCase.test.ts83
3 files changed, 117 insertions, 57 deletions
diff --git a/test/background/usecases/NavigateUseCase.test.ts b/test/background/usecases/NavigateUseCase.test.ts
new file mode 100644
index 0000000..ecbf888
--- /dev/null
+++ b/test/background/usecases/NavigateUseCase.test.ts
@@ -0,0 +1,82 @@
+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';
+
+describe('NavigateUseCase', () => {
+ let sut: NavigateUseCase;
+ let tabPresenter: TabPresenter;
+ let navigateClient: NavigateClient;
+ beforeEach(() => {
+ tabPresenter = new TabPresenter();
+ navigateClient = new NavigateClient();
+ sut = new NavigateUseCase(tabPresenter, navigateClient);
+ });
+
+ describe('#openParent()', async () => {
+ it('opens parent directory of file', async() => {
+ var stub = sinon.stub(tabPresenter, 'getCurrent');
+ stub.returns(Promise.resolve({ url: 'https://google.com/fruits/yellow/banana' }))
+
+ var mock = sinon.mock(tabPresenter);
+ mock.expects('open').withArgs('https://google.com/fruits/yellow/');
+
+ await sut.openParent();
+
+ mock.verify();
+ });
+
+ it('opens parent directory of directory', async() => {
+ var stub = sinon.stub(tabPresenter, 'getCurrent');
+ stub.returns(Promise.resolve({ url: 'https://google.com/fruits/yellow/' }))
+
+ var mock = sinon.mock(tabPresenter);
+ mock.expects('open').withArgs('https://google.com/fruits/');
+
+ await sut.openParent();
+
+ mock.verify();
+ });
+
+ it('removes hash', async() => {
+ var stub = sinon.stub(tabPresenter, 'getCurrent');
+ stub.returns(Promise.resolve({ url: 'https://google.com/#top' }))
+
+ var mock = sinon.mock(tabPresenter);
+ mock.expects('open').withArgs('https://google.com/');
+
+ await sut.openParent();
+
+ mock.verify();
+ });
+
+ it('removes search query', async() => {
+ var stub = sinon.stub(tabPresenter, 'getCurrent');
+ stub.returns(Promise.resolve({ url: 'https://google.com/search?q=apple' }))
+
+ var mock = sinon.mock(tabPresenter);
+ mock.expects('open').withArgs('https://google.com/search');
+
+ await sut.openParent();
+
+ mock.verify();
+ });
+ });
+
+ describe('#openRoot()', () => {
+ it('opens root direectory', async() => {
+ var stub = sinon.stub(tabPresenter, 'getCurrent');
+ stub.returns(Promise.resolve({
+ url: 'https://google.com/seach?q=apple',
+ }))
+
+ var mock = sinon.mock(tabPresenter);
+ mock.expects('open').withArgs('https://google.com');
+
+ await sut.openRoot();
+
+ mock.verify();
+ });
+ });
+});
diff --git a/test/content/presenters/NavigationPresenter.test.ts b/test/content/presenters/NavigationPresenter.test.ts
index c1aca9a..5b6a8ca 100644
--- a/test/content/presenters/NavigationPresenter.test.ts
+++ b/test/content/presenters/NavigationPresenter.test.ts
@@ -132,13 +132,4 @@ describe('NavigationPresenter', () => {
'<a href="#dummy">next page</a><a rel="next" href="#next">click me</a>'
));
});
-
- describe('#parent', () => {
- // NOTE: not able to test location
- it('removes hash', () => {
- window.location.hash = '#section-1';
- sut.openParent();
- expect(document.location.hash).to.be.empty;
- });
- });
});
diff --git a/test/content/usecases/ClipboardUseCase.test.ts b/test/content/usecases/ClipboardUseCase.test.ts
index 551c3f7..a863651 100644
--- a/test/content/usecases/ClipboardUseCase.test.ts
+++ b/test/content/usecases/ClipboardUseCase.test.ts
@@ -1,82 +1,69 @@
import ClipboardRepository from '../../../src/content/repositories/ClipboardRepository';
import { SettingRepositoryImpl } from '../../../src/content/repositories/SettingRepository';
-import TabsClient from '../../../src/content/client/TabsClient';
-import MockConsoleClient from '../mock/MockConsoleClient';
import ClipboardUseCase from '../../../src/content/usecases/ClipboardUseCase';
-import { expect } from 'chai';
-
-class MockClipboardRepository implements ClipboardRepository {
- public clipboard: string;
-
- constructor() {
- this.clipboard = '';
- }
-
- read(): string {
- return this.clipboard;
- }
-
- write(text: string): void {
- this.clipboard = text;
- }
-}
-
-class MockTabsClient implements TabsClient {
- public last: string;
-
- constructor() {
- this.last = '';
- }
+import OperationClient from '../../../src/content/client/OperationClient';
+import ConsoleClient from '../../../src/content/client/ConsoleClient';
- openUrl(url: string, _newTab: boolean): Promise<void> {
- this.last = url;
- return Promise.resolve();
- }
-}
+import * as sinon from 'sinon';
+import { expect } from 'chai';
describe('ClipboardUseCase', () => {
- let repository: MockClipboardRepository;
- let client: MockTabsClient;
- let consoleClient: MockConsoleClient;
+ let clipboardRepository: ClipboardRepository;
+ let operationClient: OperationClient;
+ let consoleClient: ConsoleClient;
let sut: ClipboardUseCase;
beforeEach(() => {
- repository = new MockClipboardRepository();
- client = new MockTabsClient();
- consoleClient = new MockConsoleClient();
+ var modal = <ConsoleClient>{};
+
+ clipboardRepository = <ClipboardRepository>{ read() {}, write(_) {} };
+ operationClient = <OperationClient>{ internalOpenUrl(_) {} };
+ consoleClient = <ConsoleClient>{ info(_) {}};
sut = new ClipboardUseCase(
- repository,
+ clipboardRepository,
new SettingRepositoryImpl(),
- client,
- consoleClient
+ consoleClient,
+ operationClient,
);
});
describe('#yankCurrentURL', () => {
it('yanks current url', async () => {
+ let href = window.location.href;
+ var mockRepository = sinon.mock(clipboardRepository);
+ mockRepository.expects('write').withArgs(href);
+ var mockConsoleClient = sinon.mock(consoleClient);
+ mockConsoleClient.expects('info').withArgs('Yanked ' + href);
+
let yanked = await sut.yankCurrentURL();
- expect(yanked).to.equal(window.location.href);
- expect(repository.clipboard).to.equal(yanked);
- expect(consoleClient.text).to.equal('Yanked ' + yanked);
+ expect(yanked).to.equal(href);
+ mockRepository.verify();
+ mockConsoleClient.verify();
});
});
describe('#openOrSearch', () => {
it('opens url from the clipboard', async () => {
let url = 'https://github.com/ueokande/vim-vixen'
- repository.clipboard = url;
+ sinon.stub(clipboardRepository, 'read').returns(url);
+ let mockOperationClient = sinon.mock(operationClient);
+ mockOperationClient.expects('internalOpenUrl').withArgs(url, true);
+
await sut.openOrSearch(true);
- expect(client.last).to.equal(url);
+ mockOperationClient.verify();
});
it('opens search results from the clipboard', async () => {
- repository.clipboard = 'banana';
+ let url = 'https://google.com/search?q=banana';
+ sinon.stub(clipboardRepository, 'read').returns('banana');
+ let mockOperationClient = sinon.mock(operationClient);
+ mockOperationClient.expects('internalOpenUrl').withArgs(url, true);
+
await sut.openOrSearch(true);
- expect(client.last).to.equal('https://google.com/search?q=banana');
+ mockOperationClient.verify();
});
});
});
-