gfunc-specs.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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(0);
  11. expect(func.def.defaultParams.length).to.equal(0);
  12. expect(func.def.defaultParams.length).to.equal(0);
  13. });
  14. it('should return func instance with shortName', function() {
  15. var func = gfunc.createFuncInstance('sum');
  16. expect(func).to.be.ok();
  17. });
  18. it('should return func instance from funcDef', function() {
  19. var func = gfunc.createFuncInstance('sum');
  20. var func2 = gfunc.createFuncInstance(func.def);
  21. expect(func2).to.be.ok();
  22. });
  23. it('func instance should have text representation', function() {
  24. var func = gfunc.createFuncInstance('groupByNode');
  25. func.params[0] = 5;
  26. func.params[1] = 'avg';
  27. func.updateText();
  28. expect(func.text).to.equal("groupByNode(5, avg)");
  29. });
  30. });
  31. describe('when rendering func instance', function() {
  32. it('should handle single metric param', function() {
  33. var func = gfunc.createFuncInstance('sumSeries');
  34. expect(func.render('hello.metric')).to.equal("sumSeries(hello.metric)");
  35. });
  36. it('should handle metric param and int param and string param', function() {
  37. var func = gfunc.createFuncInstance('groupByNode');
  38. func.params[0] = 5;
  39. func.params[1] = 'avg';
  40. expect(func.render('hello.metric')).to.equal("groupByNode(hello.metric,5,'avg')");
  41. });
  42. it('should handle function with no metric param', function() {
  43. var func = gfunc.createFuncInstance('randomWalk');
  44. func.params[0] = 'test';
  45. expect(func.render(undefined)).to.equal("randomWalk('test')");
  46. });
  47. });
  48. describe('when requesting function categories', function() {
  49. it('should return function categories', function() {
  50. var catIndex = gfunc.getCategories();
  51. expect(catIndex.Special.length).to.be.greaterThan(8);
  52. });
  53. });
  54. describe('when updating func param', function() {
  55. it('should update param value and update text representation', function() {
  56. var func = gfunc.createFuncInstance('summarize');
  57. func.updateParam('1h', 0);
  58. expect(func.params[0]).to.be('1h');
  59. expect(func.text).to.be('summarize(1h, sum)');
  60. });
  61. it('should parse numbers as float', function() {
  62. var func = gfunc.createFuncInstance('scale');
  63. func.updateParam('0.001', 0);
  64. expect(func.params[0]).to.be(0.001);
  65. });
  66. });
  67. describe('when updating func param with optional second parameter', function() {
  68. it('should update value and text', function() {
  69. var func = gfunc.createFuncInstance('aliasByNode');
  70. func.updateParam('1', 0);
  71. expect(func.params[0]).to.be(1);
  72. });
  73. it('should slit text and put value in second param', function() {
  74. var func = gfunc.createFuncInstance('aliasByNode');
  75. func.updateParam('4,-5', 0);
  76. expect(func.params[0]).to.be(4);
  77. expect(func.params[1]).to.be(-5);
  78. expect(func.text).to.be('aliasByNode(4, -5)');
  79. });
  80. it('should remove second param when empty string is set', function() {
  81. var func = gfunc.createFuncInstance('aliasByNode');
  82. func.updateParam('4,-5', 0);
  83. func.updateParam('', 1);
  84. expect(func.params[0]).to.be(4);
  85. expect(func.params[1]).to.be(undefined);
  86. expect(func.text).to.be('aliasByNode(4)');
  87. });
  88. });
  89. });