f9a0a36a2d094f0102faf2bd710b5ca51b0cc74b5363cca8c0857ee4c39e55c39b0fd843ee7cc3eb28ca24051077ae8da7c053fd1c985ae0b45f12bd4d6588 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. describe('rowHeaders option', () => {
  2. var $table,
  3. $container,
  4. $wrapper,
  5. debug = false;
  6. beforeEach(() => {
  7. $wrapper = $('<div></div>').css({overflow: 'hidden', position: 'relative'});
  8. $wrapper.width(500).height(201);
  9. $container = $('<div></div>');
  10. $table = $('<table></table>'); // create a table that is not attached to document
  11. $wrapper.append($container);
  12. $container.append($table);
  13. $wrapper.appendTo('body');
  14. createDataArray();
  15. });
  16. afterEach(() => {
  17. if (!debug) {
  18. $('.wtHolder').remove();
  19. }
  20. $wrapper.remove();
  21. });
  22. it('should not add class `htRowHeader` when row headers are disabled', () => {
  23. var wt = new Walkontable.Core({
  24. table: $table[0],
  25. data: getData,
  26. totalRows: getTotalRows,
  27. totalColumns: getTotalColumns
  28. });
  29. wt.draw();
  30. expect($wrapper.hasClass('htRowHeaders')).toBe(false);
  31. });
  32. it('should add class `htRowHeader` when row headers are enabled', () => {
  33. var wt = new Walkontable.Core({
  34. table: $table[0],
  35. data: getData,
  36. totalRows: getTotalRows,
  37. totalColumns: getTotalColumns,
  38. rowHeaders: [function(row, TH) {
  39. TH.innerHTML = row + 1;
  40. }]
  41. });
  42. wt.draw();
  43. expect($wrapper.hasClass('htRowHeaders')).toBe(true);
  44. });
  45. it('should create table row headers', () => {
  46. var wt = new Walkontable.Core({
  47. table: $table[0],
  48. data: getData,
  49. totalRows: getTotalRows,
  50. totalColumns: getTotalColumns,
  51. rowHeaders: [function(row, TH) {
  52. TH.innerHTML = row + 1;
  53. }]
  54. });
  55. wt.draw();
  56. expect($wrapper.find('.ht_clone_left colgroup col').length).toBe(1);
  57. expect($wrapper.find('.ht_clone_left thead tr').length).toBe(0);
  58. expect($wrapper.find('.ht_clone_left tbody tr').length).toBe(9);
  59. expect($wrapper.find('.ht_clone_top colgroup col').length).toBe(0);
  60. expect($wrapper.find('.ht_clone_top thead tr').length).toBe(0);
  61. expect($wrapper.find('.ht_clone_top tbody tr').length).toBe(0);
  62. expect($wrapper.find('.ht_master colgroup col').length).toBe(5);
  63. expect($wrapper.find('.ht_master thead tr').length).toBe(0);
  64. expect($wrapper.find('.ht_master tbody tr').length).toBe(9);
  65. });
  66. it('should generate headers from function', () => {
  67. var wt = new Walkontable.Core({
  68. table: $table[0],
  69. data: getData,
  70. totalRows: getTotalRows,
  71. totalColumns: getTotalColumns,
  72. rowHeaders: [function(row, TH) {
  73. TH.innerHTML = row + 1;
  74. }]
  75. });
  76. wt.draw();
  77. var potentialRowCount = 9;
  78. expect($table.find('tbody td').length).toBe(potentialRowCount * wt.wtTable.getRenderedColumnsCount()); // displayed cells
  79. expect($table.find('tbody th').length).toBe(potentialRowCount); // 9*1=9 displayed row headers
  80. expect($table.find('tbody tr:first th').length).toBe(1); // only one th per row
  81. expect($table.find('tbody tr:first th')[0].innerHTML).toBe('1'); // this should be the first row header
  82. });
  83. it('should add \'rowHeader\' class to row header column', () => {
  84. var wt = new Walkontable.Core({
  85. table: $table[0],
  86. data: getData,
  87. totalRows: getTotalRows,
  88. totalColumns: getTotalColumns,
  89. rowHeaders: [function(row, TH) {
  90. TH.innerHTML = row + 1;
  91. }],
  92. columnHeaders: [function(col, TH) {
  93. TH.innerHTML = col + 1;
  94. }]
  95. });
  96. wt.draw();
  97. expect($table.find('col:first').hasClass('rowHeader')).toBe(true);
  98. });
  99. });