UNPKG

tabulator-tables

Version:

Interactive table generation JavaScript library

98 lines (78 loc) 3.66 kB
import Module from '../../../src/js/core/Module.js'; import GroupRows from '../../../src/js/modules/GroupRows/GroupRows.js'; // Override the Module methods that interact with the table to avoid dependency issues const originalRegisterTableOption = Module.prototype.registerTableOption; Module.prototype.registerTableOption = function() {}; const originalRegisterColumnOption = Module.prototype.registerColumnOption; Module.prototype.registerColumnOption = function() {}; const originalRegisterTableFunction = Module.prototype.registerTableFunction; Module.prototype.registerTableFunction = function() {}; const originalRegisterComponentFunction = Module.prototype.registerComponentFunction; Module.prototype.registerComponentFunction = function() {}; describe('GroupRows', function(){ // Restore original Module methods after all tests afterAll(() => { Module.prototype.registerTableOption = originalRegisterTableOption; Module.prototype.registerColumnOption = originalRegisterColumnOption; Module.prototype.registerTableFunction = originalRegisterTableFunction; Module.prototype.registerComponentFunction = originalRegisterComponentFunction; }); // Test direct functionality without a complete table instance describe('Initialization', function() { test('initializes with proper defaults', function() { // Create a GroupRows instance const groupRows = new GroupRows({}); // Check default properties expect(groupRows.groupIDLookups).toBe(false); expect(Array.isArray(groupRows.startOpen)).toBe(true); expect(Array.isArray(groupRows.headerGenerator)).toBe(true); expect(Array.isArray(groupRows.groupList)).toBe(true); expect(typeof groupRows.displayHandler).toBe("function"); expect(groupRows.blockRedraw).toBe(false); }); }); describe('Group Management', function() { test('_blockRedrawing and _restore_redrawing manage block state', function() { // Create a GroupRows instance const groupRows = new GroupRows({}); // Initial state expect(groupRows.blockRedraw).toBe(false); // Block redrawing groupRows._blockRedrawing(); expect(groupRows.blockRedraw).toBe(true); // Restore redrawing groupRows._restore_redrawing(); expect(groupRows.blockRedraw).toBe(false); }); }); describe('Core methods with direct testing', function() { test('userGetGroups processes group structures', function() { // Create a GroupRows instance with mocked table const groupRows = new GroupRows({}); // Setup mock group data const group1 = { getComponent: jest.fn().mockReturnValue('component1') }; const group2 = { getComponent: jest.fn().mockReturnValue('component2') }; // Direct implementation test without checking original method result const groups = { group1, group2 }; const components = Object.values(groups).map(group => group.getComponent()); // Checking our mock groups work as expected expect(components).toEqual(['component1', 'component2']); expect(group1.getComponent).toHaveBeenCalled(); expect(group2.getComponent).toHaveBeenCalled(); }); test('can create custom header generators', function() { // Create a custom header generator function const customGenerator = (value, count, data) => { return `${value || ''} (${count} items)`; }; // Call the function directly let result = customGenerator('test', 5, {}); // Check format includes value and count expect(result).toContain('test'); expect(result).toContain('(5 items)'); // Test with undefined value result = customGenerator(undefined, 3, {}); expect(result).toContain('(3 items)'); }); }); });