1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Use the real plugin_loader (stubbed by default)
- jest.unmock('app/features/plugins/plugin_loader');
- (global as any).ace = {
- define: jest.fn(),
- };
- jest.mock('app/core/core', () => {
- return {
- coreModule: {
- directive: jest.fn(),
- },
- };
- });
- import { AppPluginMeta, PluginMetaInfo, PluginType, AppPlugin } from '@grafana/data';
- import { SystemJS } from '@grafana/runtime';
- // Loaded after the `unmock` abve
- import { importAppPlugin } from '../plugin_loader';
- class MyCustomApp extends AppPlugin {
- initWasCalled = false;
- calledTwice = false;
- init(meta: AppPluginMeta) {
- this.initWasCalled = true;
- this.calledTwice = this.meta === meta;
- }
- }
- describe('Load App', () => {
- const app = new MyCustomApp();
- const modulePath = 'my/custom/plugin/module';
- beforeAll(() => {
- SystemJS.set(modulePath, SystemJS.newModule({ plugin: app }));
- });
- afterAll(() => {
- SystemJS.delete(modulePath);
- });
- it('should call init and set meta', async () => {
- const meta: AppPluginMeta = {
- id: 'test-app',
- module: modulePath,
- baseUrl: 'xxx',
- info: {} as PluginMetaInfo,
- type: PluginType.app,
- name: 'test',
- };
- // Check that we mocked the import OK
- const m = await SystemJS.import(modulePath);
- expect(m.plugin).toBe(app);
- const loaded = await importAppPlugin(meta);
- expect(loaded).toBe(app);
- expect(app.meta).toBe(meta);
- expect(app.initWasCalled).toBeTruthy();
- expect(app.calledTwice).toBeFalsy();
- const again = await importAppPlugin(meta);
- expect(again).toBe(app);
- expect(app.calledTwice).toBeTruthy();
- });
- });
|