import * as React from 'react'; import expect from 'expect'; import { render, screen } from '@testing-library/react'; import { DataTableBase } from './DataTableBase'; import { ResourceContextProvider, useResourceContext } from '../core'; import { ListContextProvider } from '../controller'; describe('', () => { const defaultListContext = { resource: 'posts', data: [], total: 0, isPending: false, isFetching: false, sort: { field: 'id', order: 'ASC' }, }; const DataTable = () => ( Empty} loading={
Loading
} hasBulkActions={false} >
Child Content
); it('should render children when data is present', () => { render( ); expect(screen.queryByText('Child Content')).not.toBeNull(); expect(screen.queryByText('Loading')).toBeNull(); expect(screen.queryByText('Empty')).toBeNull(); }); it('should render empty component when no data', () => { render( ); expect(screen.queryByText('Child Content')).toBeNull(); expect(screen.queryByText('Loading')).toBeNull(); expect(screen.queryByText('Empty')).not.toBeNull(); }); it('should render loading component when pending', () => { render( ); expect(screen.queryByText('Child Content')).toBeNull(); expect(screen.queryByText('Loading')).not.toBeNull(); expect(screen.queryByText('Empty')).toBeNull(); }); it('should display the current data when data is refreshing', () => { render( ); expect(screen.queryByText('Child Content')).not.toBeNull(); expect(screen.queryByText('Loading')).toBeNull(); expect(screen.queryByText('Empty')).toBeNull(); }); it('should provide ResourceContext to the loading component', () => { const Loading = () => { const resource = useResourceContext(); return
Loading resource: {resource}
; }; render( Empty} loading={} hasBulkActions={false} >
Child
); expect(screen.queryByText('Loading resource: posts')).not.toBeNull(); }); it('should provide ResourceContext to the empty component', () => { const Empty = () => { const resource = useResourceContext(); return
Empty resource: {resource}
; }; render( } loading={
Loading
} hasBulkActions={false} >
Child
); expect(screen.queryByText('Empty resource: posts')).not.toBeNull(); }); });