renderer_specs.ts 2.8 KB

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