DataPanel.test.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Library
  2. import React from 'react';
  3. import { DataPanel, getProcessedTableData } from './DataPanel';
  4. describe('DataPanel', () => {
  5. let dataPanel: DataPanel;
  6. beforeEach(() => {
  7. dataPanel = new DataPanel({
  8. queries: [],
  9. panelId: 1,
  10. widthPixels: 100,
  11. refreshCounter: 1,
  12. datasource: 'xxx',
  13. children: r => {
  14. return <div>hello</div>;
  15. },
  16. onError: (message, error) => {},
  17. });
  18. });
  19. it('starts with unloaded state', () => {
  20. expect(dataPanel.state.isFirstLoad).toBe(true);
  21. });
  22. it('converts timeseries to table skipping nulls', () => {
  23. const input1 = {
  24. target: 'Field Name',
  25. datapoints: [[100, 1], [200, 2]],
  26. };
  27. const input2 = {
  28. // without target
  29. target: '',
  30. datapoints: [[100, 1], [200, 2]],
  31. };
  32. const data = getProcessedTableData([null, input1, input2, null, null]);
  33. expect(data.length).toBe(2);
  34. expect(data[0].columns[0].text).toBe(input1.target);
  35. expect(data[0].rows).toBe(input1.datapoints);
  36. // Default name
  37. expect(data[1].columns[0].text).toEqual('Value');
  38. // Every colun should have a name and a type
  39. for (const table of data) {
  40. for (const column of table.columns) {
  41. expect(column.text).toBeDefined();
  42. expect(column.type).toBeDefined();
  43. }
  44. }
  45. });
  46. it('supports null values from query OK', () => {
  47. expect(getProcessedTableData([null, null, null, null])).toEqual([]);
  48. expect(getProcessedTableData(undefined)).toEqual([]);
  49. expect(getProcessedTableData((null as unknown) as any[])).toEqual([]);
  50. expect(getProcessedTableData([])).toEqual([]);
  51. });
  52. });