postgres/mysql: improved imports in unit tests (#75980)

* postgres/mysql: improved imports in unit tests

* simpler mock approach
This commit is contained in:
Gábor Farkas
2023-10-11 10:38:38 +02:00
committed by GitHub
parent 6184bf21e2
commit dc8b07d46f
2 changed files with 40 additions and 19 deletions

View File

@@ -9,20 +9,25 @@ import {
FieldType,
createDataFrame,
} from '@grafana/data';
import { FetchResponse, setBackendSrv } from '@grafana/runtime';
import { backendSrv } from 'app/core/services/backend_srv'; // will use the version in __mocks__
import { FetchResponse } from '@grafana/runtime';
import { SQLQuery } from 'app/features/plugins/sql/types';
import { makeVariable } from 'app/features/plugins/sql/utils/testHelpers';
import { MySqlDatasource } from '../MySqlDatasource';
import { MySQLOptions } from '../types';
const fetchMock = jest.fn();
jest.mock('@grafana/runtime', () => ({
...jest.requireActual('@grafana/runtime'),
getBackendSrv: () => ({
fetch: fetchMock,
}),
}));
describe('MySQLDatasource', () => {
const defaultRange = getDefaultTimeRange(); // it does not matter what value this has
const setupTestContext = (response: unknown, templateSrv?: unknown) => {
jest.clearAllMocks();
setBackendSrv(backendSrv);
const fetchMock = jest.spyOn(backendSrv, 'fetch');
const instanceSettings = {
jsonData: {
defaultProject: 'testproject',

View File

@@ -12,28 +12,44 @@ import {
LoadingState,
createDataFrame,
} from '@grafana/data';
import { FetchResponse } from '@grafana/runtime';
import { backendSrv } from 'app/core/services/backend_srv'; // will use the version in __mocks__
import {
BackendSrv,
DataSourceSrv,
FetchResponse,
getBackendSrv,
setBackendSrv,
getDataSourceSrv,
setDataSourceSrv,
} from '@grafana/runtime';
import { QueryFormat, SQLQuery } from 'app/features/plugins/sql/types';
import { makeVariable } from 'app/features/plugins/sql/utils/testHelpers';
import { PostgresDatasource } from './datasource';
import { PostgresOptions } from './types';
jest.mock('@grafana/runtime', () => ({
...jest.requireActual('@grafana/runtime'),
getBackendSrv: () => backendSrv,
}));
const backendSrv: BackendSrv = {
// this will get mocked below, it only needs to exist
fetch: () => undefined,
} as unknown as BackendSrv; // we cast it so that we do not have to implement all the methods
jest.mock('@grafana/runtime/src/services', () => ({
...jest.requireActual('@grafana/runtime/src/services'),
getBackendSrv: () => backendSrv,
getDataSourceSrv: () => {
return {
// we type this as `any` to not have to define the whole type
const fakeDataSourceSrv: DataSourceSrv = {
getInstanceSettings: () => ({ id: 8674 }),
};
},
}));
} as unknown as DataSourceSrv;
let origBackendSrv: BackendSrv;
let origDataSourceSrv: DataSourceSrv;
beforeAll(() => {
origBackendSrv = getBackendSrv();
origDataSourceSrv = getDataSourceSrv();
setBackendSrv(backendSrv);
setDataSourceSrv(fakeDataSourceSrv);
});
afterAll(() => {
setBackendSrv(origBackendSrv);
setDataSourceSrv(origDataSourceSrv);
});
describe('PostgreSQLDatasource', () => {
const defaultRange = getDefaultTimeRange(); // it does not matter what value this has