query_variable.test.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import { QueryVariable } from '../query_variable';
  2. describe('QueryVariable', () => {
  3. describe('when creating from model', () => {
  4. it('should set defaults', () => {
  5. const variable = new QueryVariable({}, null, null, null, null);
  6. expect(variable.datasource).toBe(null);
  7. expect(variable.refresh).toBe(0);
  8. expect(variable.sort).toBe(0);
  9. expect(variable.name).toBe('');
  10. expect(variable.hide).toBe(0);
  11. expect(variable.options.length).toBe(0);
  12. expect(variable.multi).toBe(false);
  13. expect(variable.includeAll).toBe(false);
  14. });
  15. it('get model should copy changes back to model', () => {
  16. const variable = new QueryVariable({}, null, null, null, null);
  17. variable.options = [{ text: 'test' }];
  18. variable.datasource = 'google';
  19. variable.regex = 'asd';
  20. variable.sort = 50;
  21. const model = variable.getSaveModel();
  22. expect(model.options.length).toBe(1);
  23. expect(model.options[0].text).toBe('test');
  24. expect(model.datasource).toBe('google');
  25. expect(model.regex).toBe('asd');
  26. expect(model.sort).toBe(50);
  27. });
  28. it('if refresh != 0 then remove options in presisted mode', () => {
  29. const variable = new QueryVariable({}, null, null, null, null);
  30. variable.options = [{ text: 'test' }];
  31. variable.refresh = 1;
  32. const model = variable.getSaveModel();
  33. expect(model.options.length).toBe(0);
  34. });
  35. });
  36. describe('can convert and sort metric names', () => {
  37. const variable = new QueryVariable({}, null, null, null, null);
  38. let input: any;
  39. beforeEach(() => {
  40. input = [
  41. { text: '0', value: '0' },
  42. { text: '1', value: '1' },
  43. { text: null, value: 3 },
  44. { text: undefined, value: 4 },
  45. { text: '5', value: null },
  46. { text: '6', value: undefined },
  47. { text: null, value: '7' },
  48. { text: undefined, value: '8' },
  49. { text: 9, value: null },
  50. { text: 10, value: undefined },
  51. { text: '', value: undefined },
  52. { text: undefined, value: '' },
  53. ];
  54. });
  55. describe('can sort a mixed array of metric variables in numeric order', () => {
  56. let result: any;
  57. beforeEach(() => {
  58. variable.sort = 3; // Numerical (asc)
  59. result = variable.metricNamesToVariableValues(input);
  60. });
  61. it('should return in same order', () => {
  62. let i = 0;
  63. expect(result.length).toBe(11);
  64. expect(result[i++].text).toBe('');
  65. expect(result[i++].text).toBe('0');
  66. expect(result[i++].text).toBe('1');
  67. expect(result[i++].text).toBe('3');
  68. expect(result[i++].text).toBe('4');
  69. expect(result[i++].text).toBe('5');
  70. expect(result[i++].text).toBe('6');
  71. });
  72. });
  73. describe('can sort a mixed array of metric variables in alphabetical order', () => {
  74. let result: any;
  75. beforeEach(() => {
  76. variable.sort = 5; // Alphabetical CI (asc)
  77. result = variable.metricNamesToVariableValues(input);
  78. });
  79. it('should return in same order', () => {
  80. let i = 0;
  81. expect(result.length).toBe(11);
  82. expect(result[i++].text).toBe('');
  83. expect(result[i++].text).toBe('0');
  84. expect(result[i++].text).toBe('1');
  85. expect(result[i++].text).toBe('10');
  86. expect(result[i++].text).toBe('3');
  87. expect(result[i++].text).toBe('4');
  88. expect(result[i++].text).toBe('5');
  89. });
  90. });
  91. });
  92. });