renderer_specs.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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. },
  24. {
  25. pattern: 'Value',
  26. type: 'number',
  27. unit: 'ms',
  28. decimals: 3,
  29. },
  30. {
  31. pattern: 'Colored',
  32. type: 'number',
  33. unit: 'none',
  34. decimals: 1,
  35. colorMode: 'value',
  36. thresholds: [50, 80],
  37. colors: ['green', 'orange', 'red']
  38. },
  39. {
  40. pattern: 'String',
  41. type: 'string',
  42. },
  43. {
  44. pattern: 'United',
  45. type: 'number',
  46. unit: 'ms',
  47. decimals: 2,
  48. },
  49. {
  50. pattern: 'Sanitized',
  51. type: 'string',
  52. sanitize: true,
  53. }
  54. ]
  55. };
  56. var sanitize = function(value) {
  57. return 'sanitized';
  58. };
  59. var renderer = new TableRenderer(panel, table, 'utc', sanitize);
  60. it('time column should be formated', () => {
  61. var html = renderer.renderCell(0, 1388556366666);
  62. expect(html).to.be('<td>2014-01-01T06:06:06Z</td>');
  63. });
  64. it('number column with unit specified should ignore style unit', () => {
  65. var html = renderer.renderCell(5, 1230);
  66. expect(html).to.be('<td>1.23 kbps</td>');
  67. });
  68. it('number column should be formated', () => {
  69. var html = renderer.renderCell(1, 1230);
  70. expect(html).to.be('<td>1.230 s</td>');
  71. });
  72. it('number style should ignore string values', () => {
  73. var html = renderer.renderCell(1, 'asd');
  74. expect(html).to.be('<td>asd</td>');
  75. });
  76. it('colored cell should have style', () => {
  77. var html = renderer.renderCell(2, 40);
  78. expect(html).to.be('<td style="color:green">40.0</td>');
  79. });
  80. it('colored cell should have style', () => {
  81. var html = renderer.renderCell(2, 55);
  82. expect(html).to.be('<td style="color:orange">55.0</td>');
  83. });
  84. it('colored cell should have style', () => {
  85. var html = renderer.renderCell(2, 85);
  86. expect(html).to.be('<td style="color:red">85.0</td>');
  87. });
  88. it('unformated undefined should be rendered as string', () => {
  89. var html = renderer.renderCell(3, 'value');
  90. expect(html).to.be('<td>value</td>');
  91. });
  92. it('string style with escape html should return escaped html', () => {
  93. var html = renderer.renderCell(4, "&breaking <br /> the <br /> row");
  94. expect(html).to.be('<td>&amp;breaking &lt;br /&gt; the &lt;br /&gt; row</td>');
  95. });
  96. it('undefined formater should return escaped html', () => {
  97. var html = renderer.renderCell(3, "&breaking <br /> the <br /> row");
  98. expect(html).to.be('<td>&amp;breaking &lt;br /&gt; the &lt;br /&gt; row</td>');
  99. });
  100. it('undefined value should render as -', () => {
  101. var html = renderer.renderCell(3, undefined);
  102. expect(html).to.be('<td></td>');
  103. });
  104. it('sanitized value should render as', () => {
  105. var html = renderer.renderCell(6, 'text <a href="http://google.com">link</a>');
  106. expect(html).to.be('<td>sanitized</td>');
  107. });
  108. });
  109. });