@@ -3186,4 +3186,114 @@ pub(crate) mod tests {
31863186 . await ;
31873187 assert_matches ! ( ret, Ok ( ( ) ) ) ;
31883188 }
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+ }
31893299}
0 commit comments