| @ -0,0 +1,77 @@ | |||
| use anyhow::Context as AnyhowContext; | |||
| use solstice_proto::server; | |||
| use crate::context::Context; | |||
| use crate::control; | |||
| use crate::message_handler::MessageHandler; | |||
| #[derive(Debug, Default)] | |||
| pub struct RoomMessageResponseHandler; | |||
| impl MessageHandler for RoomMessageResponseHandler { | |||
| type Message = server::RoomMessageResponse; | |||
| fn run( | |||
| self, | |||
| context: &Context, | |||
| message: &server::RoomMessageResponse, | |||
| ) -> anyhow::Result<()> { | |||
| // TODO: Append message to room struct. | |||
| context | |||
| .control_response_tx | |||
| .blocking_send(control::Response::RoomMessageResponse( | |||
| control::RoomMessageResponse { | |||
| room_name: message.room_name.clone(), | |||
| user_name: message.user_name.clone(), | |||
| message: message.message.clone(), | |||
| }, | |||
| )) | |||
| .context("sending control response")?; | |||
| Ok(()) | |||
| } | |||
| fn name() -> String { | |||
| "RoomMessageResponseHandler".to_string() | |||
| } | |||
| } | |||
| #[cfg(test)] | |||
| mod tests { | |||
| use solstice_proto::server; | |||
| use crate::context::ContextBundle; | |||
| use crate::control; | |||
| use crate::message_handler::MessageHandler; | |||
| use super::RoomMessageResponseHandler; | |||
| #[test] | |||
| fn run_forwards_response() { | |||
| let mut bundle = ContextBundle::default(); | |||
| RoomMessageResponseHandler::default() | |||
| .run( | |||
| &bundle.context, | |||
| &server::RoomMessageResponse { | |||
| room_name: "bleep".to_string(), | |||
| user_name: "shruti".to_string(), | |||
| message: "yo!".to_string(), | |||
| }, | |||
| ) | |||
| .expect("running handler"); | |||
| let response = bundle | |||
| .control_response_rx | |||
| .blocking_recv() | |||
| .expect("receiving control response"); | |||
| assert_eq!( | |||
| response, | |||
| control::Response::RoomMessageResponse(control::RoomMessageResponse { | |||
| room_name: "bleep".to_string(), | |||
| user_name: "shruti".to_string(), | |||
| message: "yo!".to_string(), | |||
| }) | |||
| ); | |||
| } | |||
| } | |||