88 toRenderExactlyTimes ,
99 toRerender ,
1010} from '../renderStreamMatchers.js'
11+ import { getExpectErrorMessage } from '../../__testHelpers__/getCleanedErrorMessage.js'
1112
1213expect . extend ( {
1314 toRerender,
@@ -56,6 +57,39 @@ describe('toRerender', () => {
5657
5758 await expect ( takeRender ) . not . toRerender ( )
5859 } )
60+
61+ test ( "errors when it rerenders, but shouldn't" , async ( ) => {
62+ const { takeRender, render} = createRenderStream ( { } )
63+
64+ render ( < RerenderingComponent /> )
65+ await expect ( takeRender ) . toRerender ( )
66+ await takeRender ( )
67+
68+ testEvents . emit ( 'rerender' )
69+ const error = await getExpectErrorMessage (
70+ expect ( takeRender ) . not . toRerender ( ) ,
71+ )
72+ expect ( error ) . toMatchInlineSnapshot ( `
73+ expect(received).not.toRerender(expected)
74+
75+ Expected component to not rerender, but it did.
76+ ` )
77+ } )
78+
79+ test ( "errors when it should rerender, but doesn't" , async ( ) => {
80+ const { takeRender, render} = createRenderStream ( { } )
81+
82+ render ( < RerenderingComponent /> )
83+ await expect ( takeRender ) . toRerender ( )
84+ await takeRender ( )
85+
86+ const error = await getExpectErrorMessage ( expect ( takeRender ) . toRerender ( ) )
87+ expect ( error ) . toMatchInlineSnapshot ( `
88+ expect(received).toRerender(expected)
89+
90+ Expected component to rerender, but it did not.
91+ ` )
92+ } )
5993} )
6094
6195describe ( 'toRenderExactlyTimes' , ( ) => {
@@ -67,4 +101,38 @@ describe('toRenderExactlyTimes', () => {
67101
68102 await expect ( takeRender ) . toRenderExactlyTimes ( 2 )
69103 } )
104+
105+ test ( 'errors when the count of rerenders is wrong' , async ( ) => {
106+ const { takeRender, render} = createRenderStream ( { } )
107+
108+ render ( < RerenderingComponent /> )
109+ testEvents . emit ( 'rerender' )
110+
111+ const error = await getExpectErrorMessage (
112+ expect ( takeRender ) . toRenderExactlyTimes ( 3 ) ,
113+ )
114+ expect ( error ) . toMatchInlineSnapshot ( `
115+ expect(received).toRenderExactlyTimes(expected)
116+
117+ Expected component to render exactly 3 times.
118+ It rendered 2 times.
119+ ` )
120+ } )
121+
122+ test ( 'errors when the count of rerenders is right (inverted)' , async ( ) => {
123+ const { takeRender, render} = createRenderStream ( { } )
124+
125+ render ( < RerenderingComponent /> )
126+ testEvents . emit ( 'rerender' )
127+
128+ const error = await getExpectErrorMessage (
129+ expect ( takeRender ) . not . toRenderExactlyTimes ( 2 ) ,
130+ )
131+ expect ( error ) . toMatchInlineSnapshot ( `
132+ expect(received).not.toRenderExactlyTimes(expected)
133+
134+ Expected component to not render exactly 2 times.
135+ It rendered 2 times.
136+ ` )
137+ } )
70138} )
0 commit comments