123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import { getDefaultTimeRange } from '@grafana/data';
- import { silenceConsoleOutput } from '../../../../../test/core/utils/silenceConsoleOutput';
- import * as store from '../../../../store/store';
- import { LegacyAnnotationQueryRunner } from './LegacyAnnotationQueryRunner';
- import { AnnotationQueryRunnerOptions } from './types';
- function getDefaultOptions(annotationQuery?: jest.Mock): AnnotationQueryRunnerOptions {
- const annotation: any = {};
- const dashboard: any = {};
- const datasource: any = {
- annotationQuery: annotationQuery ?? jest.fn().mockResolvedValue([{ id: '1' }]),
- };
- const range = getDefaultTimeRange();
- return { annotation, datasource, dashboard, range };
- }
- function getTestContext(annotationQuery?: jest.Mock) {
- jest.clearAllMocks();
- const dispatchMock = jest.spyOn(store, 'dispatch');
- const options = getDefaultOptions(annotationQuery);
- const annotationQueryMock = options.datasource!.annotationQuery;
- return { options, dispatchMock, annotationQueryMock };
- }
- describe('LegacyAnnotationQueryRunner', () => {
- const runner = new LegacyAnnotationQueryRunner();
- describe('when canWork is called with correct props', () => {
- it('then it should return true', () => {
- const datasource: any = {
- annotationQuery: jest.fn(),
- };
- expect(runner.canRun(datasource)).toBe(true);
- });
- });
- describe('when canWork is called without datasource', () => {
- it('then it should return false', () => {
- const datasource: any = undefined;
- expect(runner.canRun(datasource)).toBe(false);
- });
- });
- describe('when canWork is called with incorrect props', () => {
- it('then it should return false', () => {
- const datasource: any = {
- annotationQuery: jest.fn(),
- annotations: {},
- };
- expect(runner.canRun(datasource)).toBe(false);
- });
- });
- describe('when run is called with unsupported props', () => {
- it('then it should return the correct results', async () => {
- const datasource: any = {
- annotationQuery: jest.fn(),
- annotations: {},
- };
- const options = { ...getDefaultOptions(), datasource };
- await expect(runner.run(options)).toEmitValuesWith((received) => {
- expect(received).toHaveLength(1);
- const results = received[0];
- expect(results).toEqual([]);
- expect(datasource.annotationQuery).not.toHaveBeenCalled();
- });
- });
- });
- describe('when run is called and the request is successful', () => {
- it('then it should return the correct results', async () => {
- const { options, annotationQueryMock } = getTestContext();
- await expect(runner.run(options)).toEmitValuesWith((received) => {
- expect(received).toHaveLength(1);
- const results = received[0];
- expect(results).toEqual([{ id: '1' }]);
- expect(annotationQueryMock).toHaveBeenCalledTimes(1);
- });
- });
- });
- describe('when run is called and the request fails', () => {
- silenceConsoleOutput();
- it('then it should return the correct results', async () => {
- const annotationQuery = jest.fn().mockRejectedValue({ message: 'An error' });
- const { options, annotationQueryMock, dispatchMock } = getTestContext(annotationQuery);
- await expect(runner.run(options)).toEmitValuesWith((received) => {
- expect(received).toHaveLength(1);
- const results = received[0];
- expect(results).toEqual([]);
- expect(annotationQueryMock).toHaveBeenCalledTimes(1);
- expect(dispatchMock).toHaveBeenCalledTimes(1);
- });
- });
- });
- describe('when run is called and the request is cancelled', () => {
- silenceConsoleOutput();
- it('then it should return the correct results', async () => {
- const annotationQuery = jest.fn().mockRejectedValue({ cancelled: true });
- const { options, annotationQueryMock, dispatchMock } = getTestContext(annotationQuery);
- await expect(runner.run(options)).toEmitValuesWith((received) => {
- expect(received).toHaveLength(1);
- const results = received[0];
- expect(results).toEqual([]);
- expect(annotationQueryMock).toHaveBeenCalledTimes(1);
- expect(dispatchMock).not.toHaveBeenCalled();
- });
- });
- });
- });
|