@@ -267,6 +267,29 @@ describe('XChatbot', () => {
267
267
expect ( emitMock ) . toHaveBeenCalledTimes ( 1 )
268
268
} )
269
269
270
+ it ( 'Preserve feedback on data change' , ( ) => {
271
+ const { container, getByRole, getByTestId, rerender } = render ( < XChatbot { ...{ ...model , data, events : [ 'feedback' ] } } /> )
272
+ const likeButton = container . querySelector ( "i[data-icon-name='Like']" ) as HTMLLIElement
273
+ expect ( likeButton ) . toBeInTheDocument ( )
274
+
275
+ fireEvent . click ( likeButton )
276
+ const likeSolidButton = container . querySelector ( "i[data-icon-name='LikeSolid']" ) as HTMLLIElement
277
+ expect ( likeSolidButton ) . toBeInTheDocument ( )
278
+
279
+ const input = getByRole ( 'textbox' )
280
+ fireEvent . change ( input , { target : { value : 'Woohoo' } } )
281
+ fireEvent . click ( getByTestId ( `${ name } -submit` ) )
282
+
283
+ // TODO: "rerender" does not append new message
284
+ rerender ( < XChatbot { ...{
285
+ ...model , data : [ ...data ,
286
+ { content : 'I like it!' , from_user : false }
287
+ ] , events : [ 'feedback' ]
288
+ } } /> )
289
+
290
+ expect ( container . querySelector ( "i[data-icon-name='LikeSolid']" ) as HTMLLIElement ) . toBeInTheDocument ( )
291
+ } )
292
+
270
293
it ( 'Renders suggestions when specified' , ( ) => {
271
294
const { getByText } = render ( < XChatbot { ...{ ...model , suggestions } } /> )
272
295
0 commit comments