samplesGenerator.spec.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import SamplesGenerator from 'handsontable/utils/samplesGenerator';
  2. describe('SamplesGenerator', () => {
  3. it('should internally call `generateSamples` when calling `generateRowSamples`', () => {
  4. var sg = new SamplesGenerator();
  5. spyOn(sg, 'generateSamples').and.returnValue('test');
  6. var result = sg.generateRowSamples('first param', 'second param');
  7. expect(result).toBe('test');
  8. expect(sg.generateSamples.calls.count()).toBe(1);
  9. expect(sg.generateSamples.calls.argsFor(0)[0]).toBe('row');
  10. expect(sg.generateSamples.calls.argsFor(0)[1]).toBe('second param');
  11. expect(sg.generateSamples.calls.argsFor(0)[2]).toBe('first param');
  12. });
  13. it('should internally call `generateSamples` when calling `generateColumnSamples`', () => {
  14. var sg = new SamplesGenerator();
  15. spyOn(sg, 'generateSamples').and.returnValue('test');
  16. var result = sg.generateColumnSamples('first param', 'second param');
  17. expect(result).toBe('test');
  18. expect(sg.generateSamples.calls.count()).toBe(1);
  19. expect(sg.generateSamples.calls.argsFor(0)[0]).toBe('col');
  20. expect(sg.generateSamples.calls.argsFor(0)[1]).toBe('second param');
  21. expect(sg.generateSamples.calls.argsFor(0)[2]).toBe('first param');
  22. });
  23. it('should generate collection of Maps when range is passed as Number', () => {
  24. var sg = new SamplesGenerator();
  25. spyOn(sg, 'generateSample').and.callFake((type, range, index) => {
  26. var map = new Map();
  27. map.set(index, {type, range, index});
  28. return map;
  29. });
  30. var result = sg.generateSamples('row', 10, 1);
  31. expect(result instanceof Map).toBe(true);
  32. expect(result.size).toBe(1);
  33. expect(result.get(1).get(1).type).toBe('row');
  34. });
  35. it('should generate collection of Maps when range is passed as Object', () => {
  36. var sg = new SamplesGenerator();
  37. spyOn(sg, 'generateSample').and.callFake((type, range, index) => {
  38. var map = new Map();
  39. map.set(index, {type, range, index});
  40. return map;
  41. });
  42. var result = sg.generateSamples('col', 10, {from: 4, to: 12});
  43. expect(result instanceof Map).toBe(true);
  44. expect(result.size).toBe(9);
  45. expect(result.get(7).get(7).type).toBe('col');
  46. });
  47. it('should generate row sample', () => {
  48. var sg = new SamplesGenerator((row, col) => {
  49. var data = [
  50. ['AA', {id: 2}, 'C', [1, 2, 3, 4, 5], 123456789],
  51. ];
  52. return data[row][col];
  53. });
  54. spyOn(sg, 'dataFactory').and.callThrough();
  55. var result = sg.generateSample('row', {from: 0, to: 4}, 0);
  56. expect(sg.dataFactory.calls.count()).toBe(5);
  57. expect(sg.dataFactory.calls.mostRecent().args[0]).toBe(0);
  58. expect(sg.dataFactory.calls.mostRecent().args[1]).toBe(4);
  59. expect(result instanceof Map).toBe(true);
  60. expect(result.size).toBe(4);
  61. expect(result.get(1).strings).toEqual([{value: {id: 2 }, col: 1}, {value: 'C', col: 2}]);
  62. expect(result.get(2).strings).toEqual([{value: 'AA', col: 0}]);
  63. });
  64. it('should generate column sample', () => {
  65. var sg = new SamplesGenerator((row, col) => {
  66. var data = [
  67. [1, 2, 3, 44],
  68. ['AA', 'BB', 'C', 'D'],
  69. ['zz', 'xxx', 'c-c', 'vvvvv'],
  70. [[1], [1, 2], [1, 2], [4]],
  71. [{id: 1}, {id: 2}, {id: 3}, {id: 4}],
  72. ];
  73. return data[row][col];
  74. });
  75. spyOn(sg, 'dataFactory').and.callThrough();
  76. var result = sg.generateSample('col', {from: 0, to: 4}, 3);
  77. expect(sg.dataFactory.calls.count()).toBe(5);
  78. expect(sg.dataFactory.calls.mostRecent().args[0]).toBe(4);
  79. expect(sg.dataFactory.calls.mostRecent().args[1]).toBe(3);
  80. expect(result instanceof Map).toBe(true);
  81. expect(result.size).toBe(3);
  82. expect(result.get(1).strings).toEqual([{value: 'D', row: 1}, {value: [4], row: 3}, {value: {id: 4}, row: 4}]);
  83. expect(result.get(2).strings).toEqual([{value: 44, row: 0}]);
  84. });
  85. });