aboutsummaryrefslogtreecommitdiff
path: root/src/background/usecases
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2020-02-09 11:13:55 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2020-02-09 11:29:13 +0900
commitb2fc46ebf79ebb1ffa068fb513d1eeb9b50d7b3f (patch)
tree7f3037b2f4f1f8ca8082e2fd573c5bab03a490aa /src/background/usecases
parent4d5573356e30721431b74351d93691d6ce4da4a8 (diff)
Add SettingUseCase tests
Diffstat (limited to 'src/background/usecases')
-rw-r--r--src/background/usecases/CommandUseCase.ts8
-rw-r--r--src/background/usecases/CompletionsUseCase.ts8
-rw-r--r--src/background/usecases/SettingUseCase.ts21
-rw-r--r--src/background/usecases/VersionUseCase.ts8
4 files changed, 22 insertions, 23 deletions
diff --git a/src/background/usecases/CommandUseCase.ts b/src/background/usecases/CommandUseCase.ts
index 20ded7e..7dba664 100644
--- a/src/background/usecases/CommandUseCase.ts
+++ b/src/background/usecases/CommandUseCase.ts
@@ -1,4 +1,4 @@
-import { injectable } from 'tsyringe';
+import { injectable, inject } from 'tsyringe';
import * as operations from '../../shared/operations';
import * as parsers from './parsers';
import * as urls from '../../shared/urls';
@@ -17,7 +17,7 @@ export default class CommandIndicator {
private tabPresenter: TabPresenter,
private windowPresenter: WindowPresenter,
private helpPresenter: HelpPresenter,
- private settingRepository: CachedSettingRepository,
+ @inject("CachedSettingRepository") private cachedSettingRepository: CachedSettingRepository,
private bookmarkRepository: BookmarkRepository,
private consoleClient: ConsoleClient,
private contentMessageClient: ContentMessageClient,
@@ -133,7 +133,7 @@ export default class CommandIndicator {
return;
}
const [name, value] = parsers.parseSetOption(keywords);
- await this.settingRepository.setProperty(name, value);
+ await this.cachedSettingRepository.setProperty(name, value);
return this.contentMessageClient.broadcastSettingsChanged();
}
@@ -143,7 +143,7 @@ export default class CommandIndicator {
}
private async urlOrSearch(keywords: string): Promise<any> {
- const settings = await this.settingRepository.get();
+ const settings = await this.cachedSettingRepository.get();
return urls.searchUrl(keywords, settings.search);
}
}
diff --git a/src/background/usecases/CompletionsUseCase.ts b/src/background/usecases/CompletionsUseCase.ts
index 72ba929..9874644 100644
--- a/src/background/usecases/CompletionsUseCase.ts
+++ b/src/background/usecases/CompletionsUseCase.ts
@@ -1,4 +1,4 @@
-import { injectable } from 'tsyringe';
+import { injectable, inject } from 'tsyringe';
import CompletionGroup from '../domains/CompletionGroup';
import CommandDocs from '../domains/CommandDocs';
import CompletionsRepository from '../repositories/CompletionsRepository';
@@ -17,7 +17,7 @@ export default class CompletionsUseCase {
constructor(
private tabPresenter: TabPresenter,
private completionsRepository: CompletionsRepository,
- private settingRepository: CachedSettingRepository,
+ @inject("CachedSettingRepository") private cachedSettingRepository: CachedSettingRepository,
) {
}
@@ -41,7 +41,7 @@ export default class CompletionsUseCase {
// TODO This logic contains view entities. They should be defined on
// content script
- const settings = await this.settingRepository.get();
+ const settings = await this.cachedSettingRepository.get();
const groups: CompletionGroup[] = [];
const complete = settings.properties.complete;
@@ -180,7 +180,7 @@ export default class CompletionsUseCase {
}
async querySearchEngineItems(name: string, keywords: string) {
- const settings = await this.settingRepository.get();
+ const settings = await this.cachedSettingRepository.get();
const engines = Object.keys(settings.search.engines)
.filter(key => key.startsWith(keywords));
return engines.map(key => ({
diff --git a/src/background/usecases/SettingUseCase.ts b/src/background/usecases/SettingUseCase.ts
index 02e1240..69b4572 100644
--- a/src/background/usecases/SettingUseCase.ts
+++ b/src/background/usecases/SettingUseCase.ts
@@ -1,19 +1,18 @@
-import { injectable } from 'tsyringe';
-import LocalSettingRepository from '../repositories/LocalSettingRepository';
+import {inject, injectable} from 'tsyringe';
import CachedSettingRepository from '../repositories/CachedSettingRepository';
-import SettingData, { DefaultSettingData } from '../../shared/SettingData';
+import SettingData, {DefaultSettingData} from '../../shared/SettingData';
import Settings from '../../shared/settings/Settings';
-import NotifyPresenter from '../presenters/NotifyPresenter';
-import SyncSettingRepository from "../repositories/SyncSettingRepository";
+import Notifier from '../presenters/Notifier';
+import SettingRepository from "../repositories/SettingRepository";
@injectable()
export default class SettingUseCase {
constructor(
- private localSettingRepository: LocalSettingRepository,
- private syncSettingRepository: SyncSettingRepository,
- private cachedSettingRepository: CachedSettingRepository,
- private notifyPresenter: NotifyPresenter,
+ @inject("LocalSettingRepository") private localSettingRepository: SettingRepository,
+ @inject("SyncSettingRepository") private syncSettingRepository: SettingRepository,
+ @inject("CachedSettingRepository") private cachedSettingRepository: CachedSettingRepository,
+ @inject("Notifier") private notifier: Notifier,
) {
}
@@ -36,7 +35,7 @@ export default class SettingUseCase {
this.showUnableToLoad(e);
value = DefaultSettingData.toSettings();
}
- this.cachedSettingRepository.update(value!!);
+ await this.cachedSettingRepository.update(value!!);
return value;
}
@@ -54,7 +53,7 @@ export default class SettingUseCase {
private showUnableToLoad(e: Error) {
console.error('unable to load settings', e);
- this.notifyPresenter.notifyInvalidSettings(() => {
+ this.notifier.notifyInvalidSettings(() => {
browser.runtime.openOptionsPage();
});
}
diff --git a/src/background/usecases/VersionUseCase.ts b/src/background/usecases/VersionUseCase.ts
index 645c859..9ea8af9 100644
--- a/src/background/usecases/VersionUseCase.ts
+++ b/src/background/usecases/VersionUseCase.ts
@@ -1,19 +1,19 @@
-import { injectable } from 'tsyringe';
+import { injectable, inject } from 'tsyringe';
import TabPresenter from '../presenters/TabPresenter';
-import NotifyPresenter from '../presenters/NotifyPresenter';
+import Notifier from '../presenters/Notifier';
@injectable()
export default class VersionUseCase {
constructor(
private tabPresenter: TabPresenter,
- private notifyPresenter: NotifyPresenter,
+ @inject("Notifier") private notifier: Notifier,
) {
}
notify(): Promise<void> {
const manifest = browser.runtime.getManifest();
const url = this.releaseNoteUrl(manifest.version);
- return this.notifyPresenter.notifyUpdated(manifest.version, () => {
+ return this.notifier.notifyUpdated(manifest.version, () => {
this.tabPresenter.create(url);
});
}