mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-18 09:35:20 +02:00
82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
import PluginRunner from '../app/services/plugins/PluginRunner';
|
|
import PluginService from 'lib/services/plugins/PluginService';
|
|
|
|
require('app-module-path').addPath(__dirname);
|
|
const { asyncTest, setupDatabaseAndSynchronizer, switchClient } = require('test-utils.js');
|
|
const Note = require('lib/models/Note');
|
|
const Folder = require('lib/models/Folder');
|
|
|
|
process.on('unhandledRejection', (reason, p) => {
|
|
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
|
|
});
|
|
|
|
const testPluginDir = `${__dirname}/../tests/support/plugins`;
|
|
|
|
function newPluginService() {
|
|
const runner = new PluginRunner();
|
|
const service = new PluginService();
|
|
service.initialize(
|
|
{
|
|
joplin: {
|
|
workspace: {},
|
|
},
|
|
},
|
|
runner,
|
|
{
|
|
dispatch: () => {},
|
|
getState: () => {},
|
|
}
|
|
);
|
|
return service;
|
|
}
|
|
|
|
describe('services_PluginService', function() {
|
|
|
|
beforeEach(async (done) => {
|
|
await setupDatabaseAndSynchronizer(1);
|
|
await switchClient(1);
|
|
done();
|
|
});
|
|
|
|
it('should load and run a simple plugin', asyncTest(async () => {
|
|
const service = newPluginService();
|
|
const plugin = await service.loadPlugin(`${testPluginDir}/simple`);
|
|
await service.runPlugin(plugin);
|
|
|
|
const allFolders = await Folder.all();
|
|
expect(allFolders.length).toBe(1);
|
|
expect(allFolders[0].title).toBe('my plugin folder');
|
|
|
|
const allNotes = await Note.all();
|
|
expect(allNotes.length).toBe(1);
|
|
expect(allNotes[0].title).toBe('testing plugin!');
|
|
expect(allNotes[0].parent_id).toBe(allFolders[0].id);
|
|
}));
|
|
|
|
it('should load and run a plugin that uses external packages', asyncTest(async () => {
|
|
const service = newPluginService();
|
|
const plugin = await service.loadPlugin(`${testPluginDir}/withExternalModules`);
|
|
expect(plugin.id).toBe('withexternalmodules');
|
|
await service.runPlugin(plugin);
|
|
|
|
const allFolders = await Folder.all();
|
|
expect(allFolders.length).toBe(1);
|
|
expect(allFolders[0].title).toBe(' foo');
|
|
}));
|
|
|
|
it('should load multiple plugins from a directory', asyncTest(async () => {
|
|
const service = newPluginService();
|
|
await service.loadAndRunPlugins(`${testPluginDir}/multi_plugins`);
|
|
|
|
const plugin1 = service.pluginById('simple1');
|
|
const plugin2 = service.pluginById('simple2');
|
|
expect(!!plugin1).toBe(true);
|
|
expect(!!plugin2).toBe(true);
|
|
|
|
const allFolders = await Folder.all();
|
|
expect(allFolders.length).toBe(2);
|
|
expect(allFolders.map((f:any) => f.title).sort().join(', ')).toBe('multi - simple1, multi - simple2');
|
|
}));
|
|
|
|
});
|