datasource.jest.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import moment from 'moment';
  2. import { TemplateSrv } from 'app/features/templating/template_srv';
  3. import Datasource from '../datasource';
  4. describe('InfluxDB (IFQL)', () => {
  5. const templateSrv = new TemplateSrv();
  6. const ds = new Datasource({ url: '' }, {}, templateSrv);
  7. const DEFAULT_OPTIONS = {
  8. rangeRaw: { to: 'now', from: 'now - 3h' },
  9. scopedVars: {},
  10. targets: [],
  11. };
  12. let queries: any[];
  13. describe('prepareQueries()', () => {
  14. it('filters empty queries', () => {
  15. queries = ds.prepareQueries(DEFAULT_OPTIONS);
  16. expect(queries.length).toBe(0);
  17. queries = ds.prepareQueries({
  18. ...DEFAULT_OPTIONS,
  19. targets: [{ query: '' }],
  20. });
  21. expect(queries.length).toBe(0);
  22. });
  23. it('replaces $range variable', () => {
  24. queries = ds.prepareQueries({
  25. ...DEFAULT_OPTIONS,
  26. targets: [{ query: 'from(db: "test") |> range($range)' }],
  27. });
  28. expect(queries.length).toBe(1);
  29. expect(queries[0].query).toBe('from(db: "test") |> range(start: -3h)');
  30. });
  31. it('replaces $range variable with custom dates', () => {
  32. const to = moment();
  33. const from = moment().subtract(1, 'hours');
  34. queries = ds.prepareQueries({
  35. ...DEFAULT_OPTIONS,
  36. rangeRaw: { to, from },
  37. targets: [{ query: 'from(db: "test") |> range($range)' }],
  38. });
  39. expect(queries.length).toBe(1);
  40. const start = from.toISOString();
  41. const stop = to.toISOString();
  42. expect(queries[0].query).toBe(`from(db: "test") |> range(start: ${start}, stop: ${stop})`);
  43. });
  44. });
  45. });