gfunc-specs.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. define([
  2. 'services/graphite/gfunc'
  3. ], function(gfunc) {
  4. 'use strict';
  5. describe('when creating func instance from func names', function() {
  6. it('should return func instance', function() {
  7. var func = gfunc.createFuncInstance('sumSeries');
  8. expect(func).to.be.ok();
  9. expect(func.def.name).to.equal('sumSeries');
  10. expect(func.def.params.length).to.equal(5);
  11. expect(func.def.defaultParams.length).to.equal(1);
  12. });
  13. it('should return func instance with shortName', function() {
  14. var func = gfunc.createFuncInstance('sum');
  15. expect(func).to.be.ok();
  16. });
  17. it('should return func instance from funcDef', function() {
  18. var func = gfunc.createFuncInstance('sum');
  19. var func2 = gfunc.createFuncInstance(func.def);
  20. expect(func2).to.be.ok();
  21. });
  22. it('func instance should have text representation', function() {
  23. var func = gfunc.createFuncInstance('groupByNode');
  24. func.params[0] = 5;
  25. func.params[1] = 'avg';
  26. func.updateText();
  27. expect(func.text).to.equal("groupByNode(5, avg)");
  28. });
  29. });
  30. describe('when rendering func instance', function() {
  31. it('should handle single metric param', function() {
  32. var func = gfunc.createFuncInstance('sumSeries');
  33. expect(func.render('hello.metric')).to.equal("sumSeries(hello.metric)");
  34. });
  35. it('should include default params if options enable it', function() {
  36. var func = gfunc.createFuncInstance('scaleToSeconds', { withDefaultParams: true });
  37. expect(func.render('hello')).to.equal("scaleToSeconds(hello, 1)");
  38. });
  39. it('should handle metric param and int param and string param', function() {
  40. var func = gfunc.createFuncInstance('groupByNode');
  41. func.params[0] = 5;
  42. func.params[1] = 'avg';
  43. expect(func.render('hello.metric')).to.equal("groupByNode(hello.metric, 5, 'avg')");
  44. });
  45. it('should handle function with no metric param', function() {
  46. var func = gfunc.createFuncInstance('randomWalk');
  47. func.params[0] = 'test';
  48. expect(func.render(undefined)).to.equal("randomWalk('test')");
  49. });
  50. it('should handle function multiple series params', function() {
  51. var func = gfunc.createFuncInstance('asPercent');
  52. func.params[0] = '#B';
  53. expect(func.render('#A')).to.equal("asPercent(#A, #B)");
  54. });
  55. });
  56. describe('when requesting function categories', function() {
  57. it('should return function categories', function() {
  58. var catIndex = gfunc.getCategories();
  59. expect(catIndex.Special.length).to.be.greaterThan(8);
  60. });
  61. });
  62. describe('when updating func param', function() {
  63. it('should update param value and update text representation', function() {
  64. var func = gfunc.createFuncInstance('summarize', { withDefaultParams: true });
  65. func.updateParam('1h', 0);
  66. expect(func.params[0]).to.be('1h');
  67. expect(func.text).to.be('summarize(1h, sum)');
  68. });
  69. it('should parse numbers as float', function() {
  70. var func = gfunc.createFuncInstance('scale');
  71. func.updateParam('0.001', 0);
  72. expect(func.params[0]).to.be('0.001');
  73. });
  74. });
  75. describe('when updating func param with optional second parameter', function() {
  76. it('should update value and text', function() {
  77. var func = gfunc.createFuncInstance('aliasByNode');
  78. func.updateParam('1', 0);
  79. expect(func.params[0]).to.be('1');
  80. });
  81. it('should slit text and put value in second param', function() {
  82. var func = gfunc.createFuncInstance('aliasByNode');
  83. func.updateParam('4,-5', 0);
  84. expect(func.params[0]).to.be('4');
  85. expect(func.params[1]).to.be('-5');
  86. expect(func.text).to.be('aliasByNode(4, -5)');
  87. });
  88. it('should remove second param when empty string is set', function() {
  89. var func = gfunc.createFuncInstance('aliasByNode');
  90. func.updateParam('4,-5', 0);
  91. func.updateParam('', 1);
  92. expect(func.params[0]).to.be('4');
  93. expect(func.params[1]).to.be(undefined);
  94. expect(func.text).to.be('aliasByNode(4)');
  95. });
  96. });
  97. });