mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
70 lines
2.0 KiB
TypeScript
70 lines
2.0 KiB
TypeScript
|
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');
|
||
|
const Folder = require('@joplin/lib/models/Folder');
|
||
|
|
||
|
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();
|
||
|
});
|
||
|
|
||
|
});
|