2021-01-09 00:20:59 +02:00
|
|
|
import Setting from '@joplin/lib/models/Setting';
|
|
|
|
import PluginService from '@joplin/lib/services/plugins/PluginService';
|
|
|
|
const { waitForFolderCount, newPluginService, newPluginScript, setupDatabaseAndSynchronizer, switchClient, afterEachCleanUp } = require('../../../test-utils');
|
2021-01-22 19:41:11 +02:00
|
|
|
import Folder from '@joplin/lib/models/Folder';
|
2021-01-09 00:20:59 +02:00
|
|
|
|
|
|
|
describe('JoplinSettings', () => {
|
|
|
|
|
|
|
|
beforeEach(async (done) => {
|
|
|
|
await setupDatabaseAndSynchronizer(1);
|
|
|
|
await switchClient(1);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(async () => {
|
|
|
|
await afterEachCleanUp();
|
|
|
|
});
|
|
|
|
|
|
|
|
test('should listen to setting change event', async () => {
|
|
|
|
const service = new newPluginService() as PluginService;
|
|
|
|
|
|
|
|
const pluginScript = newPluginScript(`
|
|
|
|
joplin.plugins.register({
|
|
|
|
onStart: async function() {
|
|
|
|
await joplin.settings.registerSetting('myCustomSetting1', {
|
|
|
|
value: 1,
|
|
|
|
type: 1,
|
|
|
|
public: true,
|
|
|
|
label: 'My Custom Setting 1',
|
|
|
|
});
|
|
|
|
|
|
|
|
await joplin.settings.registerSetting('myCustomSetting2', {
|
|
|
|
value: 2,
|
|
|
|
type: 1,
|
|
|
|
public: true,
|
|
|
|
label: 'My Custom Setting 2',
|
|
|
|
});
|
|
|
|
|
|
|
|
joplin.settings.onChange((event) => {
|
|
|
|
joplin.data.post(['folders'], null, { title: JSON.stringify(event.keys) });
|
|
|
|
});
|
|
|
|
},
|
|
|
|
});
|
|
|
|
`);
|
|
|
|
|
|
|
|
const plugin = await service.loadPluginFromJsBundle('', pluginScript);
|
|
|
|
await service.runPlugin(plugin);
|
|
|
|
|
|
|
|
Setting.setValue('plugin-org.joplinapp.plugins.PluginTest.myCustomSetting1', 111);
|
|
|
|
Setting.setValue('plugin-org.joplinapp.plugins.PluginTest.myCustomSetting2', 222);
|
|
|
|
|
|
|
|
// Also change a global setting, to verify that the plugin doesn't get
|
|
|
|
// notifications for non-plugin related events.
|
|
|
|
Setting.setValue('locale', 'fr_FR');
|
|
|
|
|
|
|
|
Setting.emitScheduledChangeEvent();
|
|
|
|
|
|
|
|
await waitForFolderCount(1);
|
|
|
|
|
|
|
|
const folder = (await Folder.all())[0];
|
|
|
|
|
|
|
|
const settingNames: string[] = JSON.parse(folder.title);
|
|
|
|
settingNames.sort();
|
|
|
|
|
|
|
|
expect(settingNames.join(',')).toBe('myCustomSetting1,myCustomSetting2');
|
|
|
|
|
|
|
|
await service.destroy();
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|