blob: b554073ca2acf9fb68b507dedc3ed4ad50058652 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { ModuleRegistry } from 'ag-grid-community';
import { setupAGGridModules, defaultModules } from './setupAGGridModules';
jest.mock('ag-grid-community', () => ({
ModuleRegistry: {
registerModules: jest.fn(),
},
ColumnAutoSizeModule: {
moduleName: 'ColumnAutoSizeModule',
version: '1.0.0',
},
ColumnHoverModule: { moduleName: 'ColumnHoverModule', version: '1.0.0' },
RowAutoHeightModule: { moduleName: 'RowAutoHeightModule', version: '1.0.0' },
RowStyleModule: { moduleName: 'RowStyleModule', version: '1.0.0' },
PaginationModule: { moduleName: 'PaginationModule', version: '1.0.0' },
CellStyleModule: { moduleName: 'CellStyleModule', version: '1.0.0' },
TextFilterModule: { moduleName: 'TextFilterModule', version: '1.0.0' },
NumberFilterModule: { moduleName: 'NumberFilterModule', version: '1.0.0' },
DateFilterModule: { moduleName: 'DateFilterModule', version: '1.0.0' },
ExternalFilterModule: {
moduleName: 'ExternalFilterModule',
version: '1.0.0',
},
CsvExportModule: { moduleName: 'CsvExportModule', version: '1.0.0' },
ColumnApiModule: { moduleName: 'ColumnApiModule', version: '1.0.0' },
RowApiModule: { moduleName: 'RowApiModule', version: '1.0.0' },
CellApiModule: { moduleName: 'CellApiModule', version: '1.0.0' },
RenderApiModule: { moduleName: 'RenderApiModule', version: '1.0.0' },
ClientSideRowModelModule: {
moduleName: 'ClientSideRowModelModule',
version: '1.0.0',
},
CustomFilterModule: { moduleName: 'CustomFilterModule', version: '1.0.0' },
}));
beforeEach(() => {
jest.clearAllMocks();
});
test('defaultModules exports an array of AG Grid modules', () => {
expect(Array.isArray(defaultModules)).toBe(true);
expect(defaultModules.length).toBeGreaterThan(0);
// Verify it contains expected modules
const moduleNames = defaultModules.map((m: any) => m.moduleName);
expect(moduleNames).toContain('ColumnAutoSizeModule');
expect(moduleNames).toContain('PaginationModule');
expect(moduleNames).toContain('ClientSideRowModelModule');
});
test('setupAGGridModules registers default modules when called without arguments', () => {
setupAGGridModules();
expect(ModuleRegistry.registerModules).toHaveBeenCalledTimes(1);
expect(ModuleRegistry.registerModules).toHaveBeenCalledWith(defaultModules);
});
test('setupAGGridModules registers default + additional modules when provided', () => {
const mockEnterpriseModule1 = {
moduleName: 'MultiFilterModule' as any,
version: '1.0.0',
};
const mockEnterpriseModule2 = {
moduleName: 'PivotModule' as any,
version: '1.0.0',
};
const additionalModules = [mockEnterpriseModule1, mockEnterpriseModule2];
setupAGGridModules(additionalModules);
expect(ModuleRegistry.registerModules).toHaveBeenCalledTimes(1);
const registeredModules = (ModuleRegistry.registerModules as jest.Mock).mock
.calls[0][0];
// Should contain all default modules
defaultModules.forEach((module: any) => {
expect(registeredModules).toContain(module);
});
// Should contain additional modules
expect(registeredModules).toContain(mockEnterpriseModule1);
expect(registeredModules).toContain(mockEnterpriseModule2);
// Total length should be default + additional
expect(registeredModules.length).toBe(
defaultModules.length + additionalModules.length,
);
});
test('setupAGGridModules handles empty additional modules array', () => {
setupAGGridModules([]);
expect(ModuleRegistry.registerModules).toHaveBeenCalledTimes(1);
expect(ModuleRegistry.registerModules).toHaveBeenCalledWith(defaultModules);
});
test('setupAGGridModules does not mutate defaultModules array', () => {
const originalLength = defaultModules.length;
const mockEnterpriseModule = {
moduleName: 'EnterpriseModule' as any,
version: '1.0.0',
};
setupAGGridModules([mockEnterpriseModule]);
// defaultModules should remain unchanged
expect(defaultModules.length).toBe(originalLength);
expect(defaultModules).not.toContain(mockEnterpriseModule);
});