data.convert.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import c3 from '../src';
  2. const $$ = c3.chart.internal.fn;
  3. describe('$$.convertColumnsToData', () => {
  4. it('converts column data to normalized data', () => {
  5. const data = $$.convertColumnsToData([
  6. ["cat1", "a", "b", "c", "d"],
  7. ["data1", 30, 200, 100, 400],
  8. ["cat2", "b", "a", "c", "d", "e", "f"],
  9. ["data2", 400, 60, 200, 800, 10, 10]
  10. ]);
  11. expect(data).toEqual([{
  12. cat1: 'a',
  13. data1: 30,
  14. cat2: 'b',
  15. data2: 400
  16. }, {
  17. cat1: 'b',
  18. data1: 200,
  19. cat2: 'a',
  20. data2: 60
  21. }, {
  22. cat1: 'c',
  23. data1: 100,
  24. cat2: 'c',
  25. data2: 200
  26. }, {
  27. cat1: 'd',
  28. data1: 400,
  29. cat2: 'd',
  30. data2: 800
  31. }, {
  32. cat2: 'e',
  33. data2: 10
  34. }, {
  35. cat2: 'f',
  36. data2: 10
  37. }]);
  38. });
  39. it('throws when the column data contains undefined', () => {
  40. expect(() => $$.convertColumnsToData([
  41. ["cat1", "a", "b", "c", "d"],
  42. ["data1", undefined]
  43. ])).toThrowError(Error, /Source data is missing a component/);
  44. });
  45. });
  46. describe('$$.convertRowsToData', () => {
  47. it('converts the row data to normalized data', () => {
  48. const data = $$.convertRowsToData([
  49. ['data1', 'data2', 'data3'],
  50. [90, 120, 300],
  51. [40, 160, 240],
  52. [50, 200, 290],
  53. [120, 160, 230],
  54. [80, 130, 300],
  55. [90, 220, 320]
  56. ]);
  57. expect(data).toEqual([{
  58. data1: 90,
  59. data2: 120,
  60. data3: 300
  61. }, {
  62. data1: 40,
  63. data2: 160,
  64. data3: 240
  65. }, {
  66. data1: 50,
  67. data2: 200,
  68. data3: 290
  69. }, {
  70. data1: 120,
  71. data2: 160,
  72. data3: 230
  73. }, {
  74. data1: 80,
  75. data2: 130,
  76. data3: 300
  77. }, {
  78. data1: 90,
  79. data2: 220,
  80. data3: 320
  81. }]);
  82. });
  83. it('throws when the row data contains undefined', () => {
  84. expect(() => $$.convertRowsToData([
  85. ['data1', 'data2', 'data3'],
  86. [40, 160, 240],
  87. [90, 120, undefined]
  88. ])).toThrowError(Error, /Source data is missing a component/);
  89. });
  90. });