From 316dd6d58272980ab8acbe1ed6d38e52f00e1fa8 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Sat, 31 Jul 2021 19:08:11 -0400 Subject: [PATCH] Write remaining control response serde tests. --- client/src/control/response.rs | 207 +++++++++++++++++++++++++++++++-- 1 file changed, 197 insertions(+), 10 deletions(-) diff --git a/client/src/control/response.rs b/client/src/control/response.rs index 56898f0..1ac111a 100644 --- a/client/src/control/response.rs +++ b/client/src/control/response.rs @@ -124,6 +124,12 @@ pub struct UserListResponse { #[cfg(test)] mod tests { + use std::collections::HashSet; + + use solstice_proto::{User, UserStatus}; + + use crate::room::{Membership, Room, Visibility}; + use super::{ LoginStatusResponse, Response, RoomJoinResponse, RoomLeaveResponse, RoomListResponse, RoomMessageResponse, RoomUserJoinedResponse, @@ -183,14 +189,195 @@ mod tests { ); } - // TODO: Write tests for the other variants: - // - // - RoomJoinResponse - // - RoomLeaveResponse - // - RoomListResponse - // - RoomMessageResponse - // - RoomUserJoinedResponse - // - RoomUserLeftResponse - // - UserInfoResponse - // - UserListResponse + #[test] + fn deserialize_room_join_response() { + assert_eq!( + serde_json::from_str::(r#"{ "room_name": "bleep" }"#) + .unwrap(), + RoomJoinResponse { + room_name: "bleep".to_string(), + } + ); + } + + #[test] + fn deserialize_room_leave_response() { + assert_eq!( + serde_json::from_str::(r#"{ "room_name": "bleep" }"#) + .unwrap(), + RoomLeaveResponse { + room_name: "bleep".to_string(), + } + ); + } + + #[test] + fn deserialize_room_message_response() { + assert_eq!( + serde_json::from_str::( + r#"{ + "room_name": "bleep", + "user_name": "karandeep", + "message": "namaste" + }"# + ) + .unwrap(), + RoomMessageResponse { + room_name: "bleep".to_string(), + user_name: "karandeep".to_string(), + message: "namaste".to_string(), + } + ); + } + + #[test] + fn deserialize_room_list_response() { + assert_eq!( + serde_json::from_str::( + r#"{ + "rooms": [ + ["bleep", { + "membership": "Joining", + "visibility": "PrivateOwned", + "operated": false, + "user_count": 3, + "owner": null, + "operators": [], + "members": [], + "messages": [], + "tickers": [] + }] + ] + }"# + ) + .unwrap(), + RoomListResponse { + rooms: vec![( + "bleep".to_string(), + Room { + membership: Membership::Joining, + visibility: Visibility::PrivateOwned, + operated: false, + user_count: 3, + owner: None, + operators: HashSet::new(), + members: HashSet::new(), + messages: vec![], + tickers: vec![], + } + )], + } + ); + } + + #[test] + fn deserialize_room_user_joined_response() { + assert_eq!( + serde_json::from_str::( + r#"{ + "room_name": "bleep", + "user_name": "karandeep" + }"# + ) + .unwrap(), + RoomUserJoinedResponse { + room_name: "bleep".to_string(), + user_name: "karandeep".to_string(), + } + ); + } + + #[test] + fn deserialize_room_user_left_response() { + assert_eq!( + serde_json::from_str::( + r#"{ + "room_name": "bleep", + "user_name": "karandeep" + }"# + ) + .unwrap(), + RoomUserLeftResponse { + room_name: "bleep".to_string(), + user_name: "karandeep".to_string(), + } + ); + } + + #[test] + fn deserialize_user_info_response() { + assert_eq!( + serde_json::from_str::( + r#"{ + "user_name": "karandeep", + "user_info": { + "name": "karandeep", + "status": "Online", + "average_speed": 1, + "num_downloads": 2, + "unknown": 3, + "num_files": 4, + "num_folders": 5, + "num_free_slots": 6, + "country": "IN" + } + }"# + ) + .unwrap(), + UserInfoResponse { + user_name: "karandeep".to_string(), + user_info: User { + name: "karandeep".to_string(), + status: UserStatus::Online, + average_speed: 1, + num_downloads: 2, + unknown: 3, + num_files: 4, + num_folders: 5, + num_free_slots: 6, + country: "IN".to_string(), + } + } + ); + } + + #[test] + fn deserialize_user_list_response() { + assert_eq!( + serde_json::from_str::( + r#"{ + "user_list": [ + ["karandeep", { + "name": "karandeep", + "status": "Online", + "average_speed": 1, + "num_downloads": 2, + "unknown": 3, + "num_files": 4, + "num_folders": 5, + "num_free_slots": 6, + "country": "IN" + }] + ] + }"# + ) + .unwrap(), + UserListResponse { + user_list: vec![( + "karandeep".to_string(), + User { + name: "karandeep".to_string(), + status: UserStatus::Online, + average_speed: 1, + num_downloads: 2, + unknown: 3, + num_files: 4, + num_folders: 5, + num_free_slots: 6, + country: "IN".to_string(), + } + )], + } + ); + } }