From 29b49d2edf900d40869ca667e843c5c69c68a328 Mon Sep 17 00:00:00 2001 From: Devin Ragotzy Date: Fri, 16 Apr 2021 17:42:29 -0400 Subject: [PATCH] events: Add codegen for ephemeral event enum room_id accessor --- ruma-events-macros/src/event_enum.rs | 2 +- ruma-events/tests/enums.rs | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/ruma-events-macros/src/event_enum.rs b/ruma-events-macros/src/event_enum.rs index b21c5d77..7b8ce739 100644 --- a/ruma-events-macros/src/event_enum.rs +++ b/ruma-events-macros/src/event_enum.rs @@ -30,7 +30,7 @@ type EventKindFn = fn(&EventKind, &EventKindVariation) -> bool; const EVENT_FIELDS: &[(&str, EventKindFn)] = &[ ("origin_server_ts", is_non_stripped_room_event), ("room_id", |kind, var| { - matches!(kind, EventKind::Message | EventKind::State) + matches!(kind, EventKind::Message | EventKind::State | EventKind::Ephemeral) && matches!(var, EventKindVariation::Full | EventKindVariation::Redacted) }), ("event_id", is_non_stripped_room_event), diff --git a/ruma-events/tests/enums.rs b/ruma-events/tests/enums.rs index 6483677d..e321e16a 100644 --- a/ruma-events/tests/enums.rs +++ b/ruma-events/tests/enums.rs @@ -10,9 +10,9 @@ use ruma_events::{ message::{MessageEventContent, MessageType, TextMessageEventContent}, power_levels::PowerLevelsEventContent, }, - AnyEvent, AnyMessageEvent, AnyRoomEvent, AnyStateEvent, AnyStateEventContent, - AnySyncMessageEvent, AnySyncRoomEvent, AnySyncStateEvent, MessageEvent, StateEvent, - SyncMessageEvent, SyncStateEvent, Unsigned, + AnyEphemeralRoomEvent, AnyEvent, AnyMessageEvent, AnyRoomEvent, AnyStateEvent, + AnyStateEventContent, AnySyncMessageEvent, AnySyncRoomEvent, AnySyncStateEvent, MessageEvent, + StateEvent, SyncMessageEvent, SyncStateEvent, Unsigned, }; fn message_event() -> JsonValue { @@ -296,3 +296,23 @@ fn alias_event_field_access() { } assert_eq!(deser.event_type(), "m.room.aliases"); } + +#[test] +fn ephemeral_event_deserialization() { + let json_data = json!({ + "content": { + "user_ids": [ + "@alice:matrix.org", + "@bob:example.com" + ] + }, + "room_id": "!jEsUZKDJdhlrceRyVU:example.org", + "type": "m.typing" + }); + + assert_matches!( + from_json_value::(json_data), + Ok(AnyEvent::Ephemeral(ephem @ AnyEphemeralRoomEvent::Typing(_))) + if ephem.room_id() == &room_id!("!jEsUZKDJdhlrceRyVU:example.org") + ); +}