kbn_specs.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. define([
  2. 'app/core/utils/kbn',
  3. 'app/core/utils/datemath'
  4. ], function(kbn, dateMath) {
  5. 'use strict';
  6. describe('unit format menu', function() {
  7. var menu = kbn.getUnitFormats();
  8. menu.map(function(submenu) {
  9. describe('submenu ' + submenu.text, function() {
  10. it('should have a title', function() { expect(submenu.text).to.be.a('string'); });
  11. it('should have a submenu', function() { expect(submenu.submenu).to.be.an('array'); });
  12. submenu.submenu.map(function(entry) {
  13. describe('entry ' + entry.text, function() {
  14. it('should have a title', function() { expect(entry.text).to.be.a('string'); });
  15. it('should have a format', function() { expect(entry.value).to.be.a('string'); });
  16. it('should have a valid format', function() {
  17. expect(kbn.valueFormats[entry.value]).to.be.a('function');
  18. });
  19. });
  20. });
  21. });
  22. });
  23. });
  24. function describeValueFormat(desc, value, tickSize, tickDecimals, result) {
  25. describe('value format: ' + desc, function() {
  26. it('should translate ' + value + ' as ' + result, function() {
  27. var scaledDecimals = tickDecimals - Math.floor(Math.log(tickSize) / Math.LN10);
  28. var str = kbn.valueFormats[desc](value, tickDecimals, scaledDecimals);
  29. expect(str).to.be(result);
  30. });
  31. });
  32. }
  33. describeValueFormat('ms', 0.0024, 0.0005, 4, '0.0024 ms');
  34. describeValueFormat('ms', 100, 1, 0, '100 ms');
  35. describeValueFormat('ms', 1250, 10, 0, '1.25 s');
  36. describeValueFormat('ms', 1250, 300, 0, '1.3 s');
  37. describeValueFormat('ms', 65150, 10000, 0, '1.1 min');
  38. describeValueFormat('ms', 6515000, 1500000, 0, '1.8 hour');
  39. describeValueFormat('ms', 651500000, 150000000, 0, '8 day');
  40. describeValueFormat('none', 2.75e-10, 0, 10, '3e-10');
  41. describeValueFormat('none', 0, 0, 2, '0');
  42. describeValueFormat('dB', 10, 1000, 2, '10.00 dB');
  43. describeValueFormat('percent', 0, 0, 0, '0%');
  44. describeValueFormat('percent', 53, 0, 1, '53.0%');
  45. describeValueFormat('percentunit', 0.0, 0, 0, '0%');
  46. describeValueFormat('percentunit', 0.278, 0, 1, '27.8%');
  47. describeValueFormat('percentunit', 1.0, 0, 0, '100%');
  48. describeValueFormat('currencyUSD', 7.42, 10000, 2, '$7.42');
  49. describeValueFormat('currencyUSD', 1532.82, 1000, 1, '$1.53K');
  50. describeValueFormat('currencyUSD', 18520408.7, 10000000, 0, '$19M');
  51. describeValueFormat('bytes', -1.57e+308, -1.57e+308, 2, 'NA');
  52. describeValueFormat('ns', 25, 1, 0, '25 ns');
  53. describeValueFormat('ns', 2558, 50, 0, '2.56 µs');
  54. describeValueFormat('ops', 123, 1, 0, '123 ops');
  55. describeValueFormat('rps', 456000, 1000, -1, '456K rps');
  56. describeValueFormat('rps', 123456789, 1000000, 2, '123.457M rps');
  57. describeValueFormat('wps', 789000000, 1000000, -1, '789M wps');
  58. describeValueFormat('iops', 11000000000, 1000000000, -1, '11B iops');
  59. describe('kbn.toFixed and negative decimals', function() {
  60. it('should treat as zero decimals', function() {
  61. var str = kbn.toFixed(186.123, -2);
  62. expect(str).to.be('186');
  63. });
  64. });
  65. describe('kbn ms format when scaled decimals is null do not use it', function() {
  66. it('should use specified decimals', function() {
  67. var str = kbn.valueFormats['ms'](10000086.123, 1, null);
  68. expect(str).to.be('2.8 hour');
  69. });
  70. });
  71. describe('kbn kbytes format when scaled decimals is null do not use it', function() {
  72. it('should use specified decimals', function() {
  73. var str = kbn.valueFormats['kbytes'](10000000, 3, null);
  74. expect(str).to.be('9.537 GiB');
  75. });
  76. });
  77. describe('kbn roundValue', function() {
  78. it('should should handle null value', function() {
  79. var str = kbn.roundValue(null, 2);
  80. expect(str).to.be(null);
  81. });
  82. });
  83. describe('calculateInterval', function() {
  84. it('1h 100 resultion', function() {
  85. var range = { from: dateMath.parse('now-1h'), to: dateMath.parse('now') };
  86. var str = kbn.calculateInterval(range, 100, null);
  87. expect(str).to.be('30s');
  88. });
  89. it('10m 1600 resolution', function() {
  90. var range = { from: dateMath.parse('now-10m'), to: dateMath.parse('now') };
  91. var str = kbn.calculateInterval(range, 1600, null);
  92. expect(str).to.be('100ms');
  93. });
  94. it('fixed user interval', function() {
  95. var range = { from: dateMath.parse('now-10m'), to: dateMath.parse('now') };
  96. var str = kbn.calculateInterval(range, 1600, '10s');
  97. expect(str).to.be('10s');
  98. });
  99. it('short time range and user low limit', function() {
  100. var range = { from: dateMath.parse('now-10m'), to: dateMath.parse('now') };
  101. var str = kbn.calculateInterval(range, 1600, '>10s');
  102. expect(str).to.be('10s');
  103. });
  104. it('large time range and user low limit', function() {
  105. var range = { from: dateMath.parse('now-14d'), to: dateMath.parse('now') };
  106. var str = kbn.calculateInterval(range, 1000, '>10s');
  107. expect(str).to.be('30m');
  108. });
  109. });
  110. });