@@ -2,6 +2,12 @@ import React from 'react';
2
2
3
3
import { cleanup , render , waitFor } from '@testing-library/react-native' ;
4
4
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' ;
5
11
import { generateMessage } from '../../../../mock-builders/generator/message' ;
6
12
import { generateStaticUser , generateUser } from '../../../../mock-builders/generator/user' ;
7
13
import { getTestClientWithUser } from '../../../../mock-builders/mock' ;
@@ -10,26 +16,54 @@ import { Chat } from '../../../Chat/Chat';
10
16
import { MessageStatus } from '../MessageStatus' ;
11
17
12
18
let chatClient ;
13
- let id ;
14
19
let i18nInstance ;
15
-
20
+ let channel ;
16
21
describe ( '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 ( ( ) => {
18
32
id = 'testID' ;
19
- chatClient = await getTestClientWithUser ( { id } ) ;
20
33
i18nInstance = new Streami18n ( ) ;
21
34
} ) ;
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
+ } ) ;
22
46
afterEach ( cleanup ) ;
23
47
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
+
24
59
it ( 'should render message status with delivered container' , async ( ) => {
25
60
const user = generateUser ( ) ;
26
61
const message = generateMessage ( { user } ) ;
27
62
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
+ } ) ;
33
67
34
68
await waitFor ( ( ) => {
35
69
expect ( getByTestId ( 'delivered-container' ) ) . toBeTruthy ( ) ;
@@ -40,42 +74,43 @@ describe('MessageStatus', () => {
40
74
const user = generateUser ( ) ;
41
75
const message = generateMessage ( { readBy : 2 , user } ) ;
42
76
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
+ } ) ;
48
81
49
82
await waitFor ( ( ) => {
50
83
expect ( getByTestId ( 'read-by-container' ) ) . toBeTruthy ( ) ;
51
- expect ( getByText ( message . readBy . toString ( ) ) ) . toBeTruthy ( ) ;
84
+ expect ( getByText ( ( message . readBy - 1 ) . toString ( ) ) ) . toBeTruthy ( ) ;
52
85
} ) ;
53
86
54
87
const staticUser = generateStaticUser ( 0 ) ;
55
88
const staticMessage = generateMessage ( { readBy : 2 , staticUser } ) ;
56
89
57
90
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 > ,
61
98
) ;
62
99
63
100
await waitFor ( ( ) => {
64
101
expect ( toJSON ( ) ) . toMatchSnapshot ( ) ;
65
102
expect ( getByTestId ( 'read-by-container' ) ) . toBeTruthy ( ) ;
66
- expect ( getByText ( staticMessage . readBy . toString ( ) ) ) . toBeTruthy ( ) ;
103
+ expect ( getByText ( ( staticMessage . readBy - 1 ) . toString ( ) ) ) . toBeTruthy ( ) ;
67
104
} ) ;
68
105
} ) ;
69
106
70
107
it ( 'should render message status with sending container' , async ( ) => {
71
108
const user = generateUser ( ) ;
72
109
const message = generateMessage ( { user } ) ;
73
110
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
+ } ) ;
79
114
80
115
await waitFor ( ( ) => {
81
116
expect ( getByTestId ( 'sending-container' ) ) . toBeTruthy ( ) ;
0 commit comments