@@ -2,6 +2,12 @@ import React from 'react';
22
33import { cleanup , render , waitFor } from '@testing-library/react-native' ;
44
5+ import { Channel } from '../../..' ;
6+ import { ChannelsStateProvider } from '../../../../contexts/channelsStateContext/ChannelsStateContext' ;
7+ import { getOrCreateChannelApi } from '../../../../mock-builders/api/getOrCreateChannel' ;
8+ import { useMockedApis } from '../../../../mock-builders/api/useMockedApis' ;
9+ import { generateChannelResponse } from '../../../../mock-builders/generator/channel' ;
10+ import { generateMember } from '../../../../mock-builders/generator/member' ;
511import { generateMessage } from '../../../../mock-builders/generator/message' ;
612import { generateStaticUser , generateUser } from '../../../../mock-builders/generator/user' ;
713import { getTestClientWithUser } from '../../../../mock-builders/mock' ;
@@ -10,26 +16,54 @@ import { Chat } from '../../../Chat/Chat';
1016import { MessageStatus } from '../MessageStatus' ;
1117
1218let chatClient ;
13- let id ;
1419let i18nInstance ;
15-
20+ let channel ;
1621describe ( 'MessageStatus' , ( ) => {
17- beforeAll ( async ( ) => {
22+ const user1 = generateUser ( { id : 'id1' , name : 'name1' } ) ;
23+ const user2 = generateUser ( { id : 'id2' , name : 'name2' } ) ;
24+ const user3 = generateUser ( { id : 'id3' , name : 'name3' } ) ;
25+ const messages = [ generateMessage ( { user : user1 } ) ] ;
26+ const members = [
27+ generateMember ( { user : user1 } ) ,
28+ generateMember ( { user : user2 } ) ,
29+ generateMember ( { user : user3 } ) ,
30+ ] ;
31+ beforeAll ( ( ) => {
1832 id = 'testID' ;
19- chatClient = await getTestClientWithUser ( { id } ) ;
2033 i18nInstance = new Streami18n ( ) ;
2134 } ) ;
35+ beforeEach ( async ( ) => {
36+ jest . clearAllMocks ( ) ;
37+ const mockedChannel = generateChannelResponse ( {
38+ members,
39+ messages,
40+ } ) ;
41+
42+ chatClient = await getTestClientWithUser ( user1 ) ;
43+ useMockedApis ( chatClient , [ getOrCreateChannelApi ( mockedChannel ) ] ) ;
44+ channel = chatClient . channel ( 'messaging' , mockedChannel . id ) ;
45+ } ) ;
2246 afterEach ( cleanup ) ;
2347
48+ renderMessageStatus = ( options , channelProps ) =>
49+ render (
50+ < ChannelsStateProvider >
51+ < Chat client = { chatClient } >
52+ < Channel channel = { channel } { ...channelProps } >
53+ < MessageStatus { ...options } />
54+ </ Channel >
55+ </ Chat >
56+ </ ChannelsStateProvider > ,
57+ ) ;
58+
2459 it ( 'should render message status with delivered container' , async ( ) => {
2560 const user = generateUser ( ) ;
2661 const message = generateMessage ( { user } ) ;
2762
28- const { getByTestId } = render (
29- < Chat client = { chatClient } i18nInstance = { i18nInstance } >
30- < MessageStatus lastReceivedId = { message . id } message = { { ...message , status : 'received' } } />
31- </ Chat > ,
32- ) ;
63+ const { getByTestId } = renderMessageStatus ( {
64+ lastReceivedId : message . id ,
65+ message : { ...message , status : 'received' } ,
66+ } ) ;
3367
3468 await waitFor ( ( ) => {
3569 expect ( getByTestId ( 'delivered-container' ) ) . toBeTruthy ( ) ;
@@ -40,42 +74,43 @@ describe('MessageStatus', () => {
4074 const user = generateUser ( ) ;
4175 const message = generateMessage ( { readBy : 2 , user } ) ;
4276
43- const { getByTestId, getByText, rerender, toJSON } = render (
44- < Chat client = { chatClient } i18nInstance = { i18nInstance } >
45- < MessageStatus lastReceivedId = { message . id } message = { message } />
46- </ Chat > ,
47- ) ;
77+ const { getByTestId, getByText, rerender, toJSON } = renderMessageStatus ( {
78+ lastReceivedId : message . id ,
79+ message,
80+ } ) ;
4881
4982 await waitFor ( ( ) => {
5083 expect ( getByTestId ( 'read-by-container' ) ) . toBeTruthy ( ) ;
51- expect ( getByText ( message . readBy . toString ( ) ) ) . toBeTruthy ( ) ;
84+ expect ( getByText ( ( message . readBy - 1 ) . toString ( ) ) ) . toBeTruthy ( ) ;
5285 } ) ;
5386
5487 const staticUser = generateStaticUser ( 0 ) ;
5588 const staticMessage = generateMessage ( { readBy : 2 , staticUser } ) ;
5689
5790 rerender (
58- < Chat client = { chatClient } i18nInstance = { i18nInstance } >
59- < MessageStatus lastReceivedId = { staticMessage . id } message = { staticMessage } />
60- </ Chat > ,
91+ < ChannelsStateProvider >
92+ < Chat client = { chatClient } i18nInstance = { i18nInstance } >
93+ < Channel channel = { channel } >
94+ < MessageStatus lastReceivedId = { staticMessage . id } message = { staticMessage } />
95+ </ Channel >
96+ </ Chat >
97+ </ ChannelsStateProvider > ,
6198 ) ;
6299
63100 await waitFor ( ( ) => {
64101 expect ( toJSON ( ) ) . toMatchSnapshot ( ) ;
65102 expect ( getByTestId ( 'read-by-container' ) ) . toBeTruthy ( ) ;
66- expect ( getByText ( staticMessage . readBy . toString ( ) ) ) . toBeTruthy ( ) ;
103+ expect ( getByText ( ( staticMessage . readBy - 1 ) . toString ( ) ) ) . toBeTruthy ( ) ;
67104 } ) ;
68105 } ) ;
69106
70107 it ( 'should render message status with sending container' , async ( ) => {
71108 const user = generateUser ( ) ;
72109 const message = generateMessage ( { user } ) ;
73110
74- const { getByTestId } = render (
75- < Chat client = { chatClient } i18nInstance = { i18nInstance } >
76- < MessageStatus message = { { ...message , status : 'sending' } } />
77- </ Chat > ,
78- ) ;
111+ const { getByTestId } = renderMessageStatus ( {
112+ message : { ...message , status : 'sending' } ,
113+ } ) ;
79114
80115 await waitFor ( ( ) => {
81116 expect ( getByTestId ( 'sending-container' ) ) . toBeTruthy ( ) ;
0 commit comments