renderer_specs.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. ];
  15. var panel = {
  16. pageSize: 10,
  17. styles: [
  18. {
  19. pattern: 'Time',
  20. type: 'date',
  21. format: 'LLL'
  22. },
  23. {
  24. pattern: 'Value',
  25. type: 'number',
  26. unit: 'ms',
  27. decimals: 3,
  28. },
  29. {
  30. pattern: 'Colored',
  31. type: 'number',
  32. unit: 'none',
  33. decimals: 1,
  34. colorMode: 'value',
  35. thresholds: [50, 80],
  36. colors: ['green', 'orange', 'red']
  37. },
  38. {
  39. pattern: 'String',
  40. type: 'string',
  41. },
  42. {
  43. pattern: 'United',
  44. type: 'number',
  45. unit: 'ms',
  46. decimals: 2,
  47. }
  48. ]
  49. };
  50. var renderer = new TableRenderer(panel, table, 'utc');
  51. it('time column should be formated', () => {
  52. var html = renderer.renderCell(0, 1388556366666);
  53. expect(html).to.be('<td>2014-01-01T06:06:06+00:00</td>');
  54. });
  55. it('number column with unit specified should ignore style unit', () => {
  56. var html = renderer.renderCell(5, 1230);
  57. expect(html).to.be('<td>1.23 kbps</td>');
  58. });
  59. it('number column should be formated', () => {
  60. var html = renderer.renderCell(1, 1230);
  61. expect(html).to.be('<td>1.230 s</td>');
  62. });
  63. it('number style should ignore string values', () => {
  64. var html = renderer.renderCell(1, 'asd');
  65. expect(html).to.be('<td>asd</td>');
  66. });
  67. it('colored cell should have style', () => {
  68. var html = renderer.renderCell(2, 40);
  69. expect(html).to.be('<td style="color:green">40.0</td>');
  70. });
  71. it('colored cell should have style', () => {
  72. var html = renderer.renderCell(2, 55);
  73. expect(html).to.be('<td style="color:orange">55.0</td>');
  74. });
  75. it('colored cell should have style', () => {
  76. var html = renderer.renderCell(2, 85);
  77. expect(html).to.be('<td style="color:red">85.0</td>');
  78. });
  79. it('unformated undefined should be rendered as string', () => {
  80. var html = renderer.renderCell(3, 'value');
  81. expect(html).to.be('<td>value</td>');
  82. });
  83. it('string style with escape html should return escaped html', () => {
  84. var html = renderer.renderCell(4, "&breaking <br /> the <br /> row");
  85. expect(html).to.be('<td>&amp;breaking &lt;br /&gt; the &lt;br /&gt; row</td>');
  86. });
  87. it('undefined formater should return escaped html', () => {
  88. var html = renderer.renderCell(3, "&breaking <br /> the <br /> row");
  89. expect(html).to.be('<td>&amp;breaking &lt;br /&gt; the &lt;br /&gt; row</td>');
  90. });
  91. it('undefined value should render as -', () => {
  92. var html = renderer.renderCell(3, undefined);
  93. expect(html).to.be('<td></td>');
  94. });
  95. });
  96. });