@@ -3,14 +3,20 @@ import { fireEvent, render, screen, waitFor } from '@testing-library/react';
33import {
44 AccessControl ,
55 DefaultTitle ,
6+ EmptyWhileLoading ,
7+ EmptyWhileLoadingRender ,
68 NoAuthProvider ,
79 Offline ,
810 WithAuthProviderNoAccessControl ,
911 WithRenderProps ,
1012} from './ListBase.stories' ;
1113import { testDataProvider } from '../../dataProvider' ;
14+ import { onlineManager } from '@tanstack/react-query' ;
1215
1316describe ( 'ListBase' , ( ) => {
17+ beforeEach ( ( ) => {
18+ onlineManager . setOnline ( true ) ;
19+ } ) ;
1420 it ( 'should load data immediately if authProvider is not provided' , async ( ) => {
1521 const dataProvider = testDataProvider ( {
1622 // @ts -ignore
@@ -144,7 +150,7 @@ describe('ListBase', () => {
144150 it ( 'should render the offline prop node when offline' , async ( ) => {
145151 const { rerender } = render ( < Offline isOnline = { false } /> ) ;
146152 await screen . findByText ( 'You are offline, cannot load data' ) ;
147- rerender ( < Offline isOnline = { true } /> ) ;
153+ rerender ( < Offline isOnline /> ) ;
148154 await screen . findByText ( 'War and Peace' ) ;
149155 expect (
150156 screen . queryByText ( 'You are offline, cannot load data' )
@@ -153,11 +159,25 @@ describe('ListBase', () => {
153159 await screen . findByText ( 'You are offline, the data may be outdated' ) ;
154160 fireEvent . click ( screen . getByText ( 'next' ) ) ;
155161 await screen . findByText ( 'You are offline, cannot load data' ) ;
156- rerender ( < Offline isOnline = { true } /> ) ;
162+ rerender ( < Offline isOnline /> ) ;
157163 await screen . findByText ( 'And Then There Were None' ) ;
158164 rerender ( < Offline isOnline = { false } /> ) ;
159165 fireEvent . click ( screen . getByText ( 'previous' ) ) ;
160166 await screen . findByText ( 'War and Peace' ) ;
161167 await screen . findByText ( 'You are offline, the data may be outdated' ) ;
162168 } ) ;
169+ it ( 'should render nothing while loading if emptyWhileLoading is set to true' , async ( ) => {
170+ render ( < EmptyWhileLoading /> ) ;
171+ expect ( screen . queryByText ( 'Loading...' ) ) . toBeNull ( ) ;
172+ expect ( screen . queryByText ( 'War and Peace' ) ) . toBeNull ( ) ;
173+ fireEvent . click ( screen . getByText ( 'Resolve books loading' ) ) ;
174+ await screen . findByText ( 'War and Peace' ) ;
175+ } ) ;
176+ it ( 'should render nothing while loading if emptyWhileLoading is set to true and using the render prop' , async ( ) => {
177+ render ( < EmptyWhileLoadingRender /> ) ;
178+ expect ( screen . queryByText ( 'Loading...' ) ) . toBeNull ( ) ;
179+ expect ( screen . queryByText ( 'War and Peace' ) ) . toBeNull ( ) ;
180+ fireEvent . click ( screen . getByText ( 'Resolve books loading' ) ) ;
181+ await screen . findByText ( 'War and Peace' ) ;
182+ } ) ;
163183} ) ;
0 commit comments