diff --git a/ruma-client-api/src/r0/membership/get_member_events.rs b/ruma-client-api/src/r0/membership/get_member_events.rs index 4ca6686c..b23fa277 100644 --- a/ruma-client-api/src/r0/membership/get_member_events.rs +++ b/ruma-client-api/src/r0/membership/get_member_events.rs @@ -64,3 +64,39 @@ pub enum MembershipEventFilter { /// The user has been banned. Ban, } + +#[cfg(test)] +mod tests { + use std::convert::TryInto; + + use matches::assert_matches; + + use super::{MembershipEventFilter, Request}; + + #[test] + fn deserialization() { + let uri = http::Uri::builder() + .scheme("https") + .authority("example.org") + .path_and_query( + "/_matrix/client/r0/rooms/!dummy%3Aexample.org/members\ + ?not_membership=leave\ + &at=1026", + ) + .build() + .unwrap(); + + let req: Result = + http::Request::builder().uri(uri).body(Vec::::new()).unwrap().try_into(); + + assert_matches!( + req, + Ok(Request { + room_id, + at: Some(at), + membership: None, + not_membership: Some(MembershipEventFilter::Leave), + }) if room_id == "!dummy:example.org" && at == "1026" + ); + } +}