graphite_query.jest.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import gfunc from '../gfunc';
  2. import GraphiteQuery from '../graphite_query';
  3. describe('Graphite query model', () => {
  4. let ctx: any = {
  5. datasource: {
  6. getFuncDef: gfunc.getFuncDef,
  7. getFuncDefs: jest.fn().mockReturnValue(Promise.resolve(gfunc.getFuncDefs('1.0'))),
  8. waitForFuncDefsLoaded: jest.fn().mockReturnValue(Promise.resolve(null)),
  9. createFuncInstance: gfunc.createFuncInstance,
  10. },
  11. templateSrv: {},
  12. targets: [],
  13. };
  14. beforeEach(() => {
  15. ctx.target = { refId: 'A', target: 'scaleToSeconds(#A, 60)' };
  16. ctx.queryModel = new GraphiteQuery(ctx.datasource, ctx.target, ctx.templateSrv);
  17. });
  18. describe('when updating targets with nested queries', () => {
  19. beforeEach(() => {
  20. ctx.target = { refId: 'D', target: 'asPercent(#A, #C)' };
  21. ctx.targets = [
  22. { refId: 'A', target: 'first.query.count' },
  23. { refId: 'B', target: 'second.query.count' },
  24. { refId: 'C', target: 'diffSeries(#A, #B)' },
  25. { refId: 'D', target: 'asPercent(#A, #C)' },
  26. ];
  27. ctx.queryModel = new GraphiteQuery(ctx.datasource, ctx.target, ctx.templateSrv);
  28. });
  29. it('targetFull should include nested queries', () => {
  30. ctx.queryModel.updateRenderedTarget(ctx.target, ctx.targets);
  31. const targetFullExpected = 'asPercent(first.query.count, diffSeries(first.query.count, second.query.count))';
  32. expect(ctx.queryModel.target.targetFull).toBe(targetFullExpected);
  33. });
  34. it('should not hang on circular references', () => {
  35. ctx.target.target = 'asPercent(#A, #B)';
  36. ctx.targets = [{ refId: 'A', target: 'asPercent(#B, #C)' }, { refId: 'B', target: 'asPercent(#A, #C)' }];
  37. ctx.queryModel.updateRenderedTarget(ctx.target, ctx.targets);
  38. // Just ensure updateRenderedTarget() is completed and doesn't hang
  39. expect(ctx.queryModel.target.targetFull).toBeDefined();
  40. });
  41. });
  42. });