@@ -217,6 +217,23 @@ describe('<MessageSimple />', () => {
217217 expect ( results ) . toHaveNoViolations ( ) ;
218218 } ) ;
219219
220+ it ( 'should render message with custom message-is-reply indicator' , async ( ) => {
221+ const message = generateAliceMessage ( { parent_id : 'x' , show_in_channel : true } ) ;
222+ const CustomMessageIsThreadReplyInChannelButtonIndicator = ( ) => (
223+ < div data-testid = 'custom-message-is-reply' > Is Reply</ div >
224+ ) ;
225+ const { container, getByTestId } = await renderMessageSimple ( {
226+ components : {
227+ MessageIsThreadReplyInChannelButtonIndicator :
228+ CustomMessageIsThreadReplyInChannelButtonIndicator ,
229+ } ,
230+ message,
231+ } ) ;
232+ expect ( getByTestId ( 'custom-message-is-reply' ) ) . toBeInTheDocument ( ) ;
233+ const results = await axe ( container ) ;
234+ expect ( results ) . toHaveNoViolations ( ) ;
235+ } ) ;
236+
220237 it ( 'should render message with custom options component when one is given' , async ( ) => {
221238 const message = generateAliceMessage ( { text : '' } ) ;
222239 const CustomOptions = ( ) => < div data-testid = 'custom-message-options' > Options</ div > ;
@@ -636,6 +653,69 @@ describe('<MessageSimple />', () => {
636653 expect ( results ) . toHaveNoViolations ( ) ;
637654 } ) ;
638655
656+ it ( 'should display is-message-reply button' , async ( ) => {
657+ const message = generateAliceMessage ( {
658+ parent_id : 'x' ,
659+ show_in_channel : true ,
660+ } ) ;
661+ const { container, getByTestId } = await renderMessageSimple ( { message } ) ;
662+ expect ( getByTestId ( 'message-is-thread-reply-button' ) ) . toBeInTheDocument ( ) ;
663+ const results = await axe ( container ) ;
664+ expect ( results ) . toHaveNoViolations ( ) ;
665+ } ) ;
666+
667+ it ( 'should open thread when is-message-reply button is clicked' , async ( ) => {
668+ const parentMessage = generateMessage ( { id : 'x' } ) ;
669+ const message = generateAliceMessage ( {
670+ parent_id : parentMessage . id ,
671+ show_in_channel : true ,
672+ } ) ;
673+ channel . state . messageSets [ 0 ] . messages . unshift ( parentMessage ) ;
674+ const { container, getByTestId } = await renderMessageSimple ( {
675+ message,
676+ } ) ;
677+ expect ( openThreadMock ) . not . toHaveBeenCalled ( ) ;
678+ fireEvent . click ( getByTestId ( 'message-is-thread-reply-button' ) ) ;
679+ expect ( openThreadMock ) . toHaveBeenCalledWith ( expect . any ( Object ) ) ;
680+ const results = await axe ( container ) ;
681+ expect ( results ) . toHaveNoViolations ( ) ;
682+ } ) ;
683+
684+ it ( 'should not open thread when is-message-reply button is clicked and parent message is not found' , async ( ) => {
685+ const parentMessage = generateMessage ( { id : 'x' } ) ;
686+ const message = generateAliceMessage ( {
687+ parent_id : parentMessage . id ,
688+ show_in_channel : true ,
689+ } ) ;
690+ const { container, getByTestId } = await renderMessageSimple ( {
691+ message,
692+ } ) ;
693+ expect ( openThreadMock ) . not . toHaveBeenCalled ( ) ;
694+ fireEvent . click ( getByTestId ( 'message-is-thread-reply-button' ) ) ;
695+ expect ( openThreadMock ) . not . toHaveBeenCalled ( ) ;
696+ const results = await axe ( container ) ;
697+ expect ( results ) . toHaveNoViolations ( ) ;
698+ } ) ;
699+
700+ it ( 'should query the parent if not found in local state' , async ( ) => {
701+ const parentMessage = generateMessage ( { id : 'x' } ) ;
702+ const message = generateAliceMessage ( {
703+ parent_id : parentMessage . id ,
704+ show_in_channel : true ,
705+ } ) ;
706+ const searchSpy = jest . spyOn ( client , 'search' ) ;
707+ const { container, getByTestId } = await renderMessageSimple ( {
708+ message,
709+ } ) ;
710+ fireEvent . click ( getByTestId ( 'message-is-thread-reply-button' ) ) ;
711+ expect ( searchSpy ) . toHaveBeenCalledWith (
712+ { cid : channel . cid } ,
713+ { id : parentMessage . id } ,
714+ ) ;
715+ const results = await axe ( container ) ;
716+ expect ( results ) . toHaveNoViolations ( ) ;
717+ } ) ;
718+
639719 it ( 'should open thread when reply count button is clicked' , async ( ) => {
640720 const message = generateAliceMessage ( {
641721 reply_count : 1 ,
0 commit comments