59 lines
1.9 KiB
TypeScript
59 lines
1.9 KiB
TypeScript
import { PluginExtensionPoints } from '@grafana/data';
|
|
import { contextSrv } from 'app/core/services/context_srv';
|
|
|
|
import { getExploreExtensionConfigs } from './getExploreExtensionConfigs';
|
|
|
|
jest.mock('app/core/services/context_srv');
|
|
|
|
const contextSrvMock = jest.mocked(contextSrv);
|
|
|
|
describe('getExploreExtensionConfigs', () => {
|
|
describe('configured items returned', () => {
|
|
it('should return array with core extensions added in explore', () => {
|
|
const extensions = getExploreExtensionConfigs();
|
|
|
|
expect(extensions).toEqual([
|
|
{
|
|
title: 'Add to dashboard',
|
|
description: 'Use the query and panel from explore and create/add it to a dashboard',
|
|
targets: [PluginExtensionPoints.ExploreToolbarAction],
|
|
icon: 'apps',
|
|
configure: expect.any(Function),
|
|
onClick: expect.any(Function),
|
|
category: 'Dashboards',
|
|
},
|
|
{
|
|
title: 'Add correlation',
|
|
description: 'Create a correlation from this query',
|
|
targets: [PluginExtensionPoints.ExploreToolbarAction],
|
|
icon: 'link',
|
|
configure: expect.any(Function),
|
|
onClick: expect.any(Function),
|
|
},
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('configure function for "add to dashboard" extension', () => {
|
|
afterEach(() => contextSrvMock.hasPermission.mockRestore());
|
|
|
|
it('should return undefined if insufficient permissions', () => {
|
|
contextSrvMock.hasPermission.mockReturnValue(false);
|
|
|
|
const extensions = getExploreExtensionConfigs();
|
|
const [extension] = extensions;
|
|
|
|
expect(extension?.configure?.(undefined)).toBeUndefined();
|
|
});
|
|
|
|
it('should return empty object if sufficient permissions', () => {
|
|
contextSrvMock.hasPermission.mockReturnValue(true);
|
|
|
|
const extensions = getExploreExtensionConfigs();
|
|
const [extension] = extensions;
|
|
|
|
expect(extension?.configure?.(undefined)).toEqual({});
|
|
});
|
|
});
|
|
});
|