import * as React from 'react'; import { fireEvent, render, screen, waitFor } from '@testing-library/react'; import { Basic, HookLevelExporter } from './useBulkExport.stories'; describe('useBulkExport', () => { it('should export selected records using the exporter from the list context', async () => { let exportedData: any[]; let exportedResource: string; const exporter = jest.fn( (data, fetchRelatedRecords, dataProvider, resource) => { exportedData = data; exportedResource = resource; } ); render(); fireEvent.click(await screen.findByText('War and Peace')); fireEvent.click(await screen.findByText('The Lord of the Rings')); fireEvent.click(await screen.findByText('Export')); await waitFor(() => expect(exporter).toHaveBeenCalled()); expect(exportedData!).toEqual([ { id: 1, title: 'War and Peace' }, { id: 5, title: 'The Lord of the Rings' }, ]); expect(exportedResource!).toEqual('books'); }); it('should export selected records using the exporter from the hook options', async () => { const exporter = jest.fn(); let exportedData: any[]; let exportedResource: string; const hookExporter = jest.fn( (data, fetchRelatedRecords, dataProvider, resource) => { exportedData = data; exportedResource = resource; } ); render( ); fireEvent.click(await screen.findByText('War and Peace')); fireEvent.click(await screen.findByText('The Lord of the Rings')); fireEvent.click(await screen.findByText('Export')); await waitFor(() => expect(hookExporter).toHaveBeenCalled()); expect(exportedData!).toEqual([ { id: 1, title: 'War and Peace' }, { id: 5, title: 'The Lord of the Rings' }, ]); expect(exportedResource!).toEqual('books'); expect(exporter).toHaveBeenCalledTimes(0); }); });