query_variable.jest.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import {QueryVariable} from '../query_variable';
  2. describe('QueryVariable', () => {
  3. describe('when creating from model', () => {
  4. it('should set defaults', () => {
  5. var 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. var 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. var 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. var variable = new QueryVariable({}, null, null, null, null);
  30. variable.options = [{text: 'test'}];
  31. variable.refresh = 1;
  32. var model = variable.getSaveModel();
  33. expect(model.options.length).toBe(0);
  34. });
  35. });
  36. describe('can convert and sort metric names',() => {
  37. var variable = new QueryVariable({}, null, null, null, null);
  38. variable.sort = 3; // Numerical (asc)
  39. describe('can sort a mixed array of metric variables', () => {
  40. var 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. var result = variable.metricNamesToVariableValues(input);
  55. it('should return in same order', () => {
  56. var i = 0;
  57. expect(result.length).toBe(11);
  58. expect(result[i++].text).toBe('');
  59. expect(result[i++].text).toBe('0');
  60. expect(result[i++].text).toBe('1');
  61. expect(result[i++].text).toBe('3');
  62. expect(result[i++].text).toBe('4');
  63. expect(result[i++].text).toBe('5');
  64. expect(result[i++].text).toBe('6');
  65. });
  66. });
  67. });
  68. });