query_variable_specs.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import {describe, beforeEach, it, sinon, expect, angularMocks} from 'test/lib/common';
  2. import {QueryVariable} from '../query_variable';
  3. describe('QueryVariable', () => {
  4. describe('when creating from model', () => {
  5. it('should set defaults', () => {
  6. var variable = new QueryVariable({}, null, null, null, null, null);
  7. expect(variable.datasource).to.be(null);
  8. expect(variable.refresh).to.be(0);
  9. expect(variable.sort).to.be(0);
  10. expect(variable.name).to.be('');
  11. expect(variable.hide).to.be(0);
  12. expect(variable.options.length).to.be(0);
  13. expect(variable.multi).to.be(false);
  14. expect(variable.includeAll).to.be(false);
  15. });
  16. it('get model should copy changes back to model', () => {
  17. var variable = new QueryVariable({}, null, null, null, null, null);
  18. variable.options = [{text: 'test'}];
  19. variable.datasource = 'google';
  20. variable.regex = 'asd';
  21. variable.sort = 50;
  22. var model = variable.getSaveModel();
  23. expect(model.options.length).to.be(1);
  24. expect(model.options[0].text).to.be('test');
  25. expect(model.datasource).to.be('google');
  26. expect(model.regex).to.be('asd');
  27. expect(model.sort).to.be(50);
  28. });
  29. it('if refresh != 0 then remove options in presisted mode', () => {
  30. var variable = new QueryVariable({}, null, null, null, null, null);
  31. variable.options = [{text: 'test'}];
  32. variable.refresh = 1;
  33. var model = variable.getSaveModel();
  34. expect(model.options.length).to.be(0);
  35. });
  36. });
  37. describe('can convert and sort metric names',() => {
  38. var variable = new QueryVariable({}, null, null, null, null, null);
  39. variable.sort = 3; // Numerical (asc)
  40. describe('can sort a mixed array of metric variables', () => {
  41. var input = [
  42. {text: '0', value: '0'},
  43. {text: '1', value: '1'},
  44. {text: null, value: 3},
  45. {text: undefined, value: 4},
  46. {text: '5', value: null},
  47. {text: '6', value: undefined},
  48. {text: null, value: '7'},
  49. {text: undefined, value: '8'},
  50. {text: 9, value: null},
  51. {text: 10, value: undefined},
  52. {text: '', value: undefined},
  53. {text: undefined, value: ''},
  54. ];
  55. var result = variable.metricNamesToVariableValues(input);
  56. it('should return in same order', () => {
  57. var i = 0;
  58. expect(result.length).to.be(11);
  59. expect(result[i++].text).to.be('');
  60. expect(result[i++].text).to.be('0');
  61. expect(result[i++].text).to.be('1');
  62. expect(result[i++].text).to.be('3');
  63. expect(result[i++].text).to.be('4');
  64. expect(result[i++].text).to.be('5');
  65. expect(result[i++].text).to.be('6');
  66. });
  67. });
  68. });
  69. });