@@ -15,11 +15,17 @@ describe('Spinner', () => {
1515
1616 test ( "renders its content if object isn't loading" , ( ) => {
1717 const { container : container , rerender} = render (
18- < Spinner > Some spinner content</ Spinner >
18+ < Spinner loading_state = { { is_loading : false } } >
19+ Some spinner content
20+ </ Spinner >
1921 ) ;
2022
23+ // spinner is initially visible until we've had time to update based on
24+ // loading state. this can be disabled with show_initially={false}
25+ act ( ( ) => jest . advanceTimersByTime ( 10 ) ) ;
26+
2127 expect ( container ) . toHaveTextContent ( 'Some spinner content' ) ;
22- expect ( container . querySelector ( 'div.spinner-border' ) ) . toBe ( null ) ;
28+ expect ( container . querySelector ( 'div.spinner-border' ) ) . toBe ( null ) ;
2329
2430 rerender (
2531 < Spinner loading_state = { { is_loading : true } } > Some spinner content</ Spinner >
@@ -28,8 +34,19 @@ describe('Spinner', () => {
2834 const overAll = container . firstChild ;
2935 const spinner = overAll . lastChild ;
3036
31- expect ( overAll ) . toHaveTextContent ( 'Some spinner content' ) ;
32- expect ( spinner . firstChild ) . toHaveClass ( 'spinner-border' ) ;
37+ act ( ( ) => jest . advanceTimersByTime ( 10 ) ) ;
38+
39+ expect ( container ) . toHaveTextContent ( 'Some spinner content' ) ;
40+ expect ( container . querySelector ( 'div.spinner-border' ) ) . not . toBe ( null ) ;
41+ } ) ;
42+
43+ test ( "doesn't show initially when show_initially is false" , ( ) => {
44+ const { container : container } = render (
45+ < Spinner show_initially = { false } > Some spinner content</ Spinner >
46+ ) ;
47+
48+ expect ( container ) . toHaveTextContent ( 'Some spinner content' ) ;
49+ expect ( container . querySelector ( 'div.spinner-border' ) ) . toBe ( null ) ;
3350 } ) ;
3451
3552 test ( 'applies additional CSS classes when props are set' , ( ) => {
0 commit comments