The ag-grid onGridReady will not called when rowModelType is server-side, so when I run test code can not find agGridReact api, the error is "TypeError: Cannot read property 'getDisplayedRowCount' of undefined"
this is my test code (index.test.js)
let component = null;
let agGridReact = null;
const ensureGridApiHasBeenSet = async (componentRef) => {
await act(async () => {
await new Promise(function (resolve, reject) {
(function waitForGridReady() {
if (componentRef.current.getApi()) {
return resolve();
}
setTimeout(waitForGridReady, 10);
})();
});
});
};
beforeEach(async () => {
const ref = React.createRef();
component = mount(<SymbolMetadata ref={ref} />);
agGridReact = component.find(AgGridReact).instance();
await ensureGridApiHasBeenSet(ref);
});
afterEach(() => {
component.unmount();
agGridReact = null;
});
describe('metadata', () => {
it('metadata should have correct columns', () => {
console.info('agGridReact.api.getDisplayedRowCount());
});
});
this is ag-grid (index.js)
const onGridReady = async (params: GridReadyEvent) => {
gridOptionsApi.current = params.api;
columnApiRef.current = params.columnApi;
};
<AgGridReact
animateRows
suppressColumnVirtualisation
serverSideFilteringAlwaysResets
rowModelType={'serverSide'}
rowHeight={32}
rowSelection={'single'}
defaultColDef={{
menuTabs: ['filterMenuTab'],
resizable: true,
filter: true,
}}
serverSideStoreType={ServerSideStoreType.Partial}
pagination
localeText={{
noRowsToShow: 'No Data',
}}
paginationPageSize={pageSize}
cacheBlockSize={pageSize}
headerHeight={24}
gridOptions={gridOptions}
onGridReady={onGridReady}
/>
Testing with enzyme is covered in the AG Grid Documentation: