@@ -150,6 +150,64 @@ describe('Message utils', () => {
150
150
expect ( shouldUpdate ) . toBe ( true ) ;
151
151
} ) ;
152
152
153
+ it ( 'should update if rendered with a different quoted message' , ( ) => {
154
+ const cases = [
155
+ [ 'deleted_at' , undefined , new Date ( ) . toISOString ( ) ] ,
156
+ [ 'latest_reactions' , [ ] , [ 1 ] ] ,
157
+ [ 'own_reactions' , [ ] , [ 1 ] ] ,
158
+ [ 'pinned' , false , true ] ,
159
+ [ 'reply_count' , 0 , 1 ] ,
160
+ [ 'status' , 'sending' , 'received' ] ,
161
+ [ 'text' , '' , 'a' ] ,
162
+ [ 'type' , 'X' , 'Y' ] ,
163
+ [ 'updated_at' , new Date ( 1 ) . toISOString ( ) , new Date ( 2 ) . toISOString ( ) ] ,
164
+ [
165
+ 'user' ,
166
+ { updated_at : new Date ( 1 ) . toISOString ( ) } ,
167
+ { updated_at : new Date ( 2 ) . toISOString ( ) } ,
168
+ ] ,
169
+ ] ;
170
+ const message = generateMessage ( ) ;
171
+ const quotedMessage = generateMessage ( ) ;
172
+ cases . forEach ( ( [ key , prevVal , nextVal ] ) => {
173
+ const shouldUpdate = ! areMessagePropsEqual (
174
+ {
175
+ message : {
176
+ ...message ,
177
+ quoted_message : { ...quotedMessage , [ key ] : prevVal } ,
178
+ quoted_message_id : quotedMessage . id ,
179
+ } ,
180
+ } ,
181
+ {
182
+ message : {
183
+ ...message ,
184
+ quoted_message : { ...quotedMessage , [ key ] : nextVal } ,
185
+ quoted_message_id : quotedMessage . id ,
186
+ } ,
187
+ } ,
188
+ ) ;
189
+ expect ( shouldUpdate ) . toBe ( true ) ;
190
+ } ) ;
191
+ expect (
192
+ ! areMessagePropsEqual (
193
+ {
194
+ message : {
195
+ ...message ,
196
+ quoted_message : undefined ,
197
+ quoted_message_id : undefined ,
198
+ } ,
199
+ } ,
200
+ {
201
+ message : {
202
+ ...message ,
203
+ quoted_message : quotedMessage ,
204
+ quoted_message_id : quotedMessage . id ,
205
+ } ,
206
+ } ,
207
+ ) ,
208
+ ) . toBe ( true ) ;
209
+ } ) ;
210
+
153
211
it ( 'should update if rendered with a different message is read by other users' , ( ) => {
154
212
const message = generateMessage ( ) ;
155
213
const currentReadBy = [ alice ] ;
0 commit comments