From 5ef342f8c442b19f7dc9205c98faef9494f08721 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 5 Oct 2022 16:20:01 +0200 Subject: [PATCH] Enhance integration test to verify creating rooms while busy --- crates/collab/src/integration_tests.rs | 28 ++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/crates/collab/src/integration_tests.rs b/crates/collab/src/integration_tests.rs index 7ab7126613..79d167d013 100644 --- a/crates/collab/src/integration_tests.rs +++ b/crates/collab/src/integration_tests.rs @@ -215,7 +215,7 @@ async fn test_basic_calls( } #[gpui::test(iterations = 10)] -async fn test_calling_busy_user( +async fn test_room_uniqueness( deterministic: Arc, cx_a: &mut TestAppContext, cx_b: &mut TestAppContext, @@ -230,12 +230,16 @@ async fn test_calling_busy_user( .make_contacts(&mut [(&client_a, cx_a), (&client_b, cx_b), (&client_c, cx_c)]) .await; - // Call user B from client A. let room_a = cx_a .update(|cx| Room::create(client_a.clone(), client_a.user_store.clone(), cx)) .await .unwrap(); + // Ensure room can't be created given we've just created one. + cx_a.update(|cx| Room::create(client_a.clone(), client_a.user_store.clone(), cx)) + .await + .unwrap_err(); + // Call user B from client A. let mut incoming_call_b = client_b .user_store .update(cx_b, |user, _| user.incoming_call()); @@ -266,6 +270,11 @@ async fn test_calling_busy_user( .await .unwrap_err(); + // Ensure User B can't create a room while they still have an incoming call. + cx_b.update(|cx| Room::create(client_b.clone(), client_b.user_store.clone(), cx)) + .await + .unwrap_err(); + // User B joins the room and calling them after they've joined still fails. let room_b = cx_b .update(|cx| { @@ -285,6 +294,11 @@ async fn test_calling_busy_user( .await .unwrap_err(); + // Ensure User B can't create a room while they belong to another room. + cx_b.update(|cx| Room::create(client_b.clone(), client_b.user_store.clone(), cx)) + .await + .unwrap_err(); + // Client C can successfully call client B after client B leaves the room. cx_b.update(|_| drop(room_b)); deterministic.run_until_parked(); @@ -296,6 +310,16 @@ async fn test_calling_busy_user( .unwrap(); let call_b2 = incoming_call_b.next().await.unwrap().unwrap(); assert_eq!(call_b2.caller.github_login, "user_c"); + + // Client B can successfully create a room after declining the call from client C. + client_b + .user_store + .update(cx_b, |user_store, _| user_store.decline_call()) + .unwrap(); + deterministic.run_until_parked(); + cx_b.update(|cx| Room::create(client_b.clone(), client_b.user_store.clone(), cx)) + .await + .unwrap(); } #[gpui::test(iterations = 10)]