MixedDataSource.test.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { DatasourceSrvMock, MockDataSourceApi } from 'test/mocks/datasource_srv';
  2. import { getDataSourceSrv } from '@grafana/runtime';
  3. import { getQueryOptions } from 'test/helpers/getQueryOptions';
  4. import { DataSourceInstanceSettings } from '@grafana/ui';
  5. import { MixedDatasource } from './module';
  6. import { from } from 'rxjs';
  7. const defaultDS = new MockDataSourceApi('DefaultDS', { data: ['DDD'] });
  8. const datasourceSrv = new DatasourceSrvMock(defaultDS, {
  9. '-- Mixed --': new MixedDatasource({ name: 'mixed', id: 5 } as DataSourceInstanceSettings),
  10. A: new MockDataSourceApi('DSA', { data: ['AAAA'] }),
  11. B: new MockDataSourceApi('DSB', { data: ['BBBB'] }),
  12. C: new MockDataSourceApi('DSC', { data: ['CCCC'] }),
  13. });
  14. jest.mock('@grafana/runtime', () => ({
  15. getDataSourceSrv: () => {
  16. return datasourceSrv;
  17. },
  18. }));
  19. describe('MixedDatasource', () => {
  20. const requestMixed = getQueryOptions({
  21. targets: [
  22. { refId: 'QA', datasource: 'A' }, // 1
  23. { refId: 'QB', datasource: 'B' }, // 2
  24. { refId: 'QC', datasource: 'C' }, // 3
  25. ],
  26. });
  27. const results: any[] = [];
  28. beforeEach(async () => {
  29. const ds = await getDataSourceSrv().get('-- Mixed --');
  30. from(ds.query(requestMixed)).subscribe(result => {
  31. results.push(result);
  32. });
  33. });
  34. it('direct query should return results', async () => {
  35. expect(results.length).toBe(3);
  36. expect(results[0].data).toEqual(['AAAA']);
  37. expect(results[1].data).toEqual(['BBBB']);
  38. expect(results[2].data).toEqual(['CCCC']);
  39. });
  40. });