renderer_specs.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. import {describe, beforeEach, it, sinon, expect} from 'test/lib/common';
  2. import TableModel from 'app/core/table_model';
  3. import {TableRenderer} from '../renderer';
  4. describe('when rendering table', () => {
  5. describe('given 2 columns', () => {
  6. var table = new TableModel();
  7. table.columns = [
  8. {text: 'Time'},
  9. {text: 'Value'},
  10. {text: 'Colored'},
  11. {text: 'Undefined'},
  12. {text: 'String'},
  13. {text: 'United', unit: 'bps'},
  14. {text: 'Sanitized'},
  15. ];
  16. var panel = {
  17. pageSize: 10,
  18. styles: [
  19. {
  20. pattern: 'Time',
  21. type: 'date',
  22. format: 'LLL',
  23. alias: 'Timestamp'
  24. },
  25. {
  26. pattern: '/(Val)ue/',
  27. type: 'number',
  28. unit: 'ms',
  29. decimals: 3,
  30. alias: '$1'
  31. },
  32. {
  33. pattern: 'Colored',
  34. type: 'number',
  35. unit: 'none',
  36. decimals: 1,
  37. colorMode: 'value',
  38. thresholds: [50, 80],
  39. colors: ['green', 'orange', 'red']
  40. },
  41. {
  42. pattern: 'String',
  43. type: 'string',
  44. },
  45. {
  46. pattern: 'United',
  47. type: 'number',
  48. unit: 'ms',
  49. decimals: 2,
  50. },
  51. {
  52. pattern: 'Sanitized',
  53. type: 'string',
  54. sanitize: true,
  55. }
  56. ]
  57. };
  58. var sanitize = function(value) {
  59. return 'sanitized';
  60. };
  61. var renderer = new TableRenderer(panel, table, 'utc', sanitize);
  62. it('time column should be formated', () => {
  63. var html = renderer.renderCell(0, 1388556366666);
  64. expect(html).to.be('<td>2014-01-01T06:06:06Z</td>');
  65. });
  66. it('undefined time column should be rendered as -', () => {
  67. var html = renderer.renderCell(0, undefined);
  68. expect(html).to.be('<td>-</td>');
  69. });
  70. it('null time column should be rendered as -', () => {
  71. var html = renderer.renderCell(0, null);
  72. expect(html).to.be('<td>-</td>');
  73. });
  74. it('number column with unit specified should ignore style unit', () => {
  75. var html = renderer.renderCell(5, 1230);
  76. expect(html).to.be('<td>1.23 kbps</td>');
  77. });
  78. it('number column should be formated', () => {
  79. var html = renderer.renderCell(1, 1230);
  80. expect(html).to.be('<td>1.230 s</td>');
  81. });
  82. it('number style should ignore string values', () => {
  83. var html = renderer.renderCell(1, 'asd');
  84. expect(html).to.be('<td>asd</td>');
  85. });
  86. it('colored cell should have style', () => {
  87. var html = renderer.renderCell(2, 40);
  88. expect(html).to.be('<td style="color:green">40.0</td>');
  89. });
  90. it('colored cell should have style', () => {
  91. var html = renderer.renderCell(2, 55);
  92. expect(html).to.be('<td style="color:orange">55.0</td>');
  93. });
  94. it('colored cell should have style', () => {
  95. var html = renderer.renderCell(2, 85);
  96. expect(html).to.be('<td style="color:red">85.0</td>');
  97. });
  98. it('unformated undefined should be rendered as string', () => {
  99. var html = renderer.renderCell(3, 'value');
  100. expect(html).to.be('<td>value</td>');
  101. });
  102. it('string style with escape html should return escaped html', () => {
  103. var html = renderer.renderCell(4, "&breaking <br /> the <br /> row");
  104. expect(html).to.be('<td>&amp;breaking &lt;br /&gt; the &lt;br /&gt; row</td>');
  105. });
  106. it('undefined formater should return escaped html', () => {
  107. var html = renderer.renderCell(3, "&breaking <br /> the <br /> row");
  108. expect(html).to.be('<td>&amp;breaking &lt;br /&gt; the &lt;br /&gt; row</td>');
  109. });
  110. it('undefined value should render as -', () => {
  111. var html = renderer.renderCell(3, undefined);
  112. expect(html).to.be('<td></td>');
  113. });
  114. it('sanitized value should render as', () => {
  115. var html = renderer.renderCell(6, 'text <a href="http://google.com">link</a>');
  116. expect(html).to.be('<td>sanitized</td>');
  117. });
  118. it('Time column title should be Timestamp', () => {
  119. expect(table.columns[0].title).to.be('Timestamp');
  120. });
  121. it('Value column title should be Val', () => {
  122. expect(table.columns[1].title).to.be('Val');
  123. });
  124. it('Colored column title should be Colored', () => {
  125. expect(table.columns[2].title).to.be('Colored');
  126. });
  127. });
  128. });