@@ -3186,4 +3186,114 @@ pub(crate) mod tests {
3186
3186
. await ;
3187
3187
assert_matches ! ( ret, Ok ( ( ) ) ) ;
3188
3188
}
3189
+
3190
+ #[ async_test]
3191
+ async fn test_room_preview_for_invited_room_hits_summary_endpoint ( ) {
3192
+ let server = MatrixMockServer :: new ( ) . await ;
3193
+ let client = server. client_builder ( ) . build ( ) . await ;
3194
+
3195
+ let room_id = room_id ! ( "!a-room:matrix.org" ) ;
3196
+
3197
+ // Make sure the summary endpoint is called once
3198
+ server. mock_room_summary ( ) . ok ( room_id) . mock_once ( ) . mount ( ) . await ;
3199
+
3200
+ // We create a locally cached invited room
3201
+ let invited_room = client. inner . base_client . get_or_create_room ( room_id, RoomState :: Invited ) ;
3202
+
3203
+ // And we get a preview, the server endpoint was reached
3204
+ let preview = client
3205
+ . get_room_preview ( room_id. into ( ) , Vec :: new ( ) )
3206
+ . await
3207
+ . expect ( "Room preview should be retrieved" ) ;
3208
+
3209
+ assert_eq ! ( invited_room. room_id( ) . to_owned( ) , preview. room_id) ;
3210
+ }
3211
+
3212
+ #[ async_test]
3213
+ async fn test_room_preview_for_left_room_hits_summary_endpoint ( ) {
3214
+ let server = MatrixMockServer :: new ( ) . await ;
3215
+ let client = server. client_builder ( ) . build ( ) . await ;
3216
+
3217
+ let room_id = room_id ! ( "!a-room:matrix.org" ) ;
3218
+
3219
+ // Make sure the summary endpoint is called once
3220
+ server. mock_room_summary ( ) . ok ( room_id) . mock_once ( ) . mount ( ) . await ;
3221
+
3222
+ // We create a locally cached left room
3223
+ let left_room = client. inner . base_client . get_or_create_room ( room_id, RoomState :: Left ) ;
3224
+
3225
+ // And we get a preview, the server endpoint was reached
3226
+ let preview = client
3227
+ . get_room_preview ( room_id. into ( ) , Vec :: new ( ) )
3228
+ . await
3229
+ . expect ( "Room preview should be retrieved" ) ;
3230
+
3231
+ assert_eq ! ( left_room. room_id( ) . to_owned( ) , preview. room_id) ;
3232
+ }
3233
+
3234
+ #[ async_test]
3235
+ async fn test_room_preview_for_knocked_room_hits_summary_endpoint ( ) {
3236
+ let server = MatrixMockServer :: new ( ) . await ;
3237
+ let client = server. client_builder ( ) . build ( ) . await ;
3238
+
3239
+ let room_id = room_id ! ( "!a-room:matrix.org" ) ;
3240
+
3241
+ // Make sure the summary endpoint is called once
3242
+ server. mock_room_summary ( ) . ok ( room_id) . mock_once ( ) . mount ( ) . await ;
3243
+
3244
+ // We create a locally cached knocked room
3245
+ let knocked_room = client. inner . base_client . get_or_create_room ( room_id, RoomState :: Knocked ) ;
3246
+
3247
+ // And we get a preview, the server endpoint was reached
3248
+ let preview = client
3249
+ . get_room_preview ( room_id. into ( ) , Vec :: new ( ) )
3250
+ . await
3251
+ . expect ( "Room preview should be retrieved" ) ;
3252
+
3253
+ assert_eq ! ( knocked_room. room_id( ) . to_owned( ) , preview. room_id) ;
3254
+ }
3255
+
3256
+ #[ async_test]
3257
+ async fn test_room_preview_for_joined_room_retrieves_local_room_info ( ) {
3258
+ let server = MatrixMockServer :: new ( ) . await ;
3259
+ let client = server. client_builder ( ) . build ( ) . await ;
3260
+
3261
+ let room_id = room_id ! ( "!a-room:matrix.org" ) ;
3262
+
3263
+ // Make sure the summary endpoint is not called
3264
+ server. mock_room_summary ( ) . ok ( room_id) . never ( ) . mount ( ) . await ;
3265
+
3266
+ // We create a locally cached joined room
3267
+ let joined_room = client. inner . base_client . get_or_create_room ( room_id, RoomState :: Joined ) ;
3268
+
3269
+ // And we get a preview, no server endpoint was reached
3270
+ let preview = client
3271
+ . get_room_preview ( room_id. into ( ) , Vec :: new ( ) )
3272
+ . await
3273
+ . expect ( "Room preview should be retrieved" ) ;
3274
+
3275
+ assert_eq ! ( joined_room. room_id( ) . to_owned( ) , preview. room_id) ;
3276
+ }
3277
+
3278
+ #[ async_test]
3279
+ async fn test_room_preview_for_banned_room_retrieves_local_room_info ( ) {
3280
+ let server = MatrixMockServer :: new ( ) . await ;
3281
+ let client = server. client_builder ( ) . build ( ) . await ;
3282
+
3283
+ let room_id = room_id ! ( "!a-room:matrix.org" ) ;
3284
+
3285
+ // Make sure the summary endpoint is not called
3286
+ server. mock_room_summary ( ) . ok ( room_id) . never ( ) . mount ( ) . await ;
3287
+
3288
+ // We create a locally cached banned room
3289
+ let banned_room = client. inner . base_client . get_or_create_room ( room_id, RoomState :: Banned ) ;
3290
+
3291
+ // And we get a preview, no server endpoint was reached
3292
+ let preview = client
3293
+ . get_room_preview ( room_id. into ( ) , Vec :: new ( ) )
3294
+ . await
3295
+ . expect ( "Room preview should be retrieved" ) ;
3296
+
3297
+ assert_eq ! ( banned_room. room_id( ) . to_owned( ) , preview. room_id) ;
3298
+ }
3189
3299
}
0 commit comments