mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
58 lines
2.0 KiB
TypeScript
58 lines
2.0 KiB
TypeScript
import { invalidatePluginInCache, locateWithCache, registerPluginInCache } from '../pluginCacheBuster';
|
|
import * as pluginSettings from '../pluginSettings';
|
|
|
|
describe('PluginCacheBuster', () => {
|
|
const now = 12345;
|
|
|
|
it('should append plugin version as cache flag if plugin is registered in buster', () => {
|
|
const slug = 'bubble-chart-1';
|
|
const version = 'v1.0.0';
|
|
const path = resolvePath(slug);
|
|
const address = `http://localhost:3000/public/${path}.js`;
|
|
|
|
registerPluginInCache({ path, version });
|
|
|
|
const url = `${address}?_cache=${encodeURI(version)}`;
|
|
expect(locateWithCache({ address }, now)).toBe(url);
|
|
});
|
|
|
|
it('should append Date.now as cache flag if plugin is not registered in buster', () => {
|
|
const slug = 'bubble-chart-2';
|
|
const address = `http://localhost:3000/public/${resolvePath(slug)}.js`;
|
|
|
|
const url = `${address}?_cache=${encodeURI(String(now))}`;
|
|
expect(locateWithCache({ address }, now)).toBe(url);
|
|
});
|
|
|
|
it('should append Date.now as cache flag if plugin is invalidated in buster', () => {
|
|
const slug = 'bubble-chart-3';
|
|
const version = 'v1.0.0';
|
|
const path = resolvePath(slug);
|
|
const address = `http://localhost:3000/public/${path}.js`;
|
|
|
|
registerPluginInCache({ path, version });
|
|
invalidatePluginInCache(slug);
|
|
|
|
const url = `${address}?_cache=${encodeURI(String(now))}`;
|
|
expect(locateWithCache({ address }, now)).toBe(url);
|
|
});
|
|
|
|
it('should also clear plugin settings cache', () => {
|
|
const slug = 'bubble-chart-3';
|
|
const version = 'v1.0.0';
|
|
const path = resolvePath(slug);
|
|
|
|
const clearPluginSettingsCacheSpy = jest.spyOn(pluginSettings, 'clearPluginSettingsCache');
|
|
|
|
registerPluginInCache({ path, version });
|
|
invalidatePluginInCache(slug);
|
|
|
|
expect(clearPluginSettingsCacheSpy).toBeCalledTimes(1);
|
|
expect(clearPluginSettingsCacheSpy).toBeCalledWith('bubble-chart-3');
|
|
});
|
|
});
|
|
|
|
function resolvePath(slug: string): string {
|
|
return `plugins/${slug}/module`;
|
|
}
|