Build plugin with grafana toolkit (#1539)

* Use grafana toolkit template for building plugin

* Fix linter and type errors

* Update styles building

* Fix sass deprecation warning

* Remove empty js files produced by webpack building sass

* Fix signing script

* Replace classnames with cx

* Fix data source config page

* Use custom webpack config instead of overriding original one

* Use gpx_ prefix for plugin executable

* Remove unused configs

* Roll back react hooks dependencies usage

* Move plugin-specific ts config to root config file

* Temporary do not use rst2html for function description tooltip

* Remove unused code

* remove unused dependencies

* update react table dependency

* Migrate tests to typescript

* remove unused dependencies

* Remove old webpack configs

* Add sign target to makefile

* Add magefile

* Update CI test job

* Update go packages

* Update build instructions

* Downgrade go version to 1.18

* Fix go version in ci

* Fix metric picker

* Add comment to webpack config

* remove angular mocks

* update bra config

* Rename datasource-zabbix to datasource (fix mage build)

* Add instructions for building backend with mage

* Fix webpack targets

* Fix ci backend tests

* Add initial e2e tests

* Fix e2e ci tests

* Update docker compose for cypress tests

* build grafana docker image

* Fix docker stop task

* CI: add Grafana compatibility check
This commit is contained in:
Alexander Zobnin
2022-12-09 14:14:34 +03:00
committed by GitHub
parent 26ed740945
commit e3e896742b
136 changed files with 5765 additions and 4636 deletions

View File

@@ -4,22 +4,9 @@
import { JSDOM } from 'jsdom';
import { PanelCtrl, MetricsPanelCtrl } from './panelStub';
// Suppress messages
console.log = () => {};
// Mock Grafana modules that are not available outside of the core project
// Required for loading module.js
jest.mock('angular', () => {
return {
module: function() {
return {
directive: function() {},
service: function() {},
factory: function() {}
};
}
};
}, {virtual: true});
jest.mock('grafana/app/features/templating/template_srv', () => {
return {};
}, {virtual: true});
@@ -33,6 +20,9 @@ jest.mock('@grafana/runtime', () => {
getBackendSrv: () => ({
datasourceRequest: jest.fn().mockResolvedValue(),
}),
getTemplateSrv: () => ({
replace: jest.fn().mockImplementation(query => query),
}),
};
}, {virtual: true});
@@ -101,13 +91,8 @@ jest.mock('grafana/app/core/utils/kbn', () => {
};
}, {virtual: true});
// jest.mock('@grafana/ui', () => {
// return {};
// }, {virtual: true});
// Required for loading angularjs
let dom = new JSDOM('<html><head><script></script></head><body></body></html>');
// Setup jsdom
let dom = new JSDOM('<html><head><script></script></head><body></body></html>');
global.window = dom.window;
global.document = global.window.document;
global.Node = window.Node;

View File

@@ -1,25 +0,0 @@
export let templateSrvMock = {
replace: jest.fn().mockImplementation(query => query)
};
export let backendSrvMock = {
datasourceRequest: jest.fn()
};
export let datasourceSrvMock = {
loadDatasource: jest.fn(),
getAll: jest.fn()
};
export let timeSrvMock = {
timeRange: jest.fn().mockReturnValue({ from: '', to: '' })
};
const defaultExports = {
templateSrvMock,
backendSrvMock,
datasourceSrvMock,
timeSrvMock,
};
export default defaultExports;

25
src/test-setup/mocks.ts Normal file
View File

@@ -0,0 +1,25 @@
export const templateSrvMock = {
replace: jest.fn().mockImplementation((query) => query),
};
export const backendSrvMock = {
datasourceRequest: jest.fn(),
};
export const datasourceSrvMock = {
loadDatasource: jest.fn(),
getAll: jest.fn(),
};
export const timeSrvMock = {
timeRange: jest.fn().mockReturnValue({ from: '', to: '' }),
};
const defaultExports = {
templateSrvMock,
backendSrvMock,
datasourceSrvMock,
timeSrvMock,
};
export default defaultExports;