aboutsummaryrefslogtreecommitdiff
path: root/test/content
diff options
context:
space:
mode:
Diffstat (limited to 'test/content')
-rw-r--r--test/content/reducers/addon.test.ts17
-rw-r--r--test/content/repositories/AddonEnabledRepository.test.ts15
-rw-r--r--test/content/usecases/AddonEnabledUseCase.test.ts90
3 files changed, 105 insertions, 17 deletions
diff --git a/test/content/reducers/addon.test.ts b/test/content/reducers/addon.test.ts
deleted file mode 100644
index fb05244..0000000
--- a/test/content/reducers/addon.test.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import * as actions from 'content/actions';
-import addonReducer from 'content/reducers/addon';
-
-describe("addon reducer", () => {
- it('return the initial state', () => {
- let state = addonReducer(undefined, {});
- expect(state).to.have.property('enabled', true);
- });
-
- it('return next state for ADDON_SET_ENABLED', () => {
- let action = { type: actions.ADDON_SET_ENABLED, enabled: true };
- let prev = { enabled: false };
- let state = addonReducer(prev, action);
-
- expect(state.enabled).is.equal(true);
- });
-});
diff --git a/test/content/repositories/AddonEnabledRepository.test.ts b/test/content/repositories/AddonEnabledRepository.test.ts
new file mode 100644
index 0000000..3cea897
--- /dev/null
+++ b/test/content/repositories/AddonEnabledRepository.test.ts
@@ -0,0 +1,15 @@
+import { AddonEnabledRepositoryImpl } from '../../../src/content/repositories/AddonEnabledRepository';
+import { expect } from 'chai';
+
+describe('AddonEnabledRepositoryImpl', () => {
+ it('updates and gets current value', () => {
+ let sut = new AddonEnabledRepositoryImpl();
+
+ sut.set(true);
+ expect(sut.get()).to.be.true;
+
+ sut.set(false);
+ expect(sut.get()).to.be.false;
+ });
+});
+
diff --git a/test/content/usecases/AddonEnabledUseCase.test.ts b/test/content/usecases/AddonEnabledUseCase.test.ts
new file mode 100644
index 0000000..912bddf
--- /dev/null
+++ b/test/content/usecases/AddonEnabledUseCase.test.ts
@@ -0,0 +1,90 @@
+import AddonEnabledRepository from '../../../src/content/repositories/AddonEnabledRepository';
+import AddonEnabledUseCase from '../../../src/content/usecases/AddonEnabledUseCase';
+import AddonIndicatorClient from '../../../src/content/client/AddonIndicatorClient';
+import { expect } from 'chai';
+
+class MockAddonEnabledRepository implements AddonEnabledRepository {
+ private enabled: boolean;
+
+ constructor(init: boolean) {
+ this.enabled = init;
+ }
+
+ set(on: boolean): void {
+ this.enabled = on;
+ }
+
+ get(): boolean {
+ return this.enabled;
+ }
+}
+
+class MockAddonIndicatorClient implements AddonIndicatorClient {
+ public enabled: boolean;
+
+ constructor(init: boolean) {
+ this.enabled = init;
+ }
+
+ async setEnabled(enabled: boolean): Promise<void> {
+ this.enabled = enabled;
+ return
+ }
+}
+
+describe('AddonEnabledUseCase', () => {
+ let repository: MockAddonEnabledRepository;
+ let indicator: MockAddonIndicatorClient;
+ let sut: AddonEnabledUseCase;
+
+ beforeEach(() => {
+ repository = new MockAddonEnabledRepository(true);
+ indicator = new MockAddonIndicatorClient(false);
+ sut = new AddonEnabledUseCase({ repository, indicator });
+ });
+
+ describe('#enable', () => {
+ it('store and indicate as enabled', async() => {
+ await sut.enable();
+
+ expect(repository.get()).to.be.true;
+ expect(indicator.enabled).to.be.true;
+ });
+ });
+
+ describe('#disable', async() => {
+ it('store and indicate as disabled', async() => {
+ await sut.disable();
+
+ expect(repository.get()).to.be.false;
+ expect(indicator.enabled).to.be.false;
+ });
+ });
+
+ describe('#toggle', () => {
+ it('toggled enabled and disabled', async() => {
+ repository.set(true);
+ await sut.toggle();
+
+ expect(repository.get()).to.be.false;
+ expect(indicator.enabled).to.be.false;
+
+ repository.set(false);
+
+ await sut.toggle();
+
+ expect(repository.get()).to.be.true;
+ expect(indicator.enabled).to.be.true;
+ });
+ });
+
+ describe('#getEnabled', () => {
+ it('returns current addon enabled', () => {
+ repository.set(true);
+ expect(sut.getEnabled()).to.be.true;
+
+ repository.set(false);
+ expect(sut.getEnabled()).to.be.false;
+ });
+ });
+});