You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

72 lines
1.7 KiB

import SettingRepository from '../../../src/content/repositories/SettingRepository';
import SettingClient from '../../../src/content/client/SettingClient';
import SettingUseCase from '../../../src/content/usecases/SettingUseCase';
import Settings, { DefaultSetting } from '../../../src/shared/Settings';
import { expect } from 'chai';
class MockSettingRepository implements SettingRepository {
private current: Settings;
constructor() {
this.current = DefaultSetting;
}
set(settings: Settings): void {
this.current= settings;
}
get(): Settings {
return this.current;
}
}
class MockSettingClient implements SettingClient {
private data: Settings;
constructor(data: Settings) {
this.data = data;
}
load(): Promise<Settings> {
return Promise.resolve(this.data);
}
}
describe('AddonEnabledUseCase', () => {
let repository: MockSettingRepository;
let client: MockSettingClient;
let sut: SettingUseCase;
beforeEach(() => {
let testSettings = {
keymaps: {},
search: {
default: 'google',
engines: {
google: 'https://google.com/?q={}',
}
},
properties: {
hintchars: 'abcd1234',
smoothscroll: false,
complete: 'sbh',
},
blacklist: [],
};
repository = new MockSettingRepository();
client = new MockSettingClient(testSettings);
sut = new SettingUseCase(repository, client);
});
describe('#reload', () => {
it('loads settings and store to repository', async() => {
let settings = await sut.reload();
expect(settings.properties.hintchars).to.equal('abcd1234');
let saved = repository.get();
expect(saved.properties.hintchars).to.equal('abcd1234');
});
});
});