events: Add codegen for ephemeral event enum room_id accessor

This commit is contained in:
Devin Ragotzy 2021-04-16 17:42:29 -04:00 committed by GitHub
parent d7af96747c
commit 29b49d2edf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 4 deletions

View File

@ -30,7 +30,7 @@ type EventKindFn = fn(&EventKind, &EventKindVariation) -> bool;
const EVENT_FIELDS: &[(&str, EventKindFn)] = &[ const EVENT_FIELDS: &[(&str, EventKindFn)] = &[
("origin_server_ts", is_non_stripped_room_event), ("origin_server_ts", is_non_stripped_room_event),
("room_id", |kind, var| { ("room_id", |kind, var| {
matches!(kind, EventKind::Message | EventKind::State) matches!(kind, EventKind::Message | EventKind::State | EventKind::Ephemeral)
&& matches!(var, EventKindVariation::Full | EventKindVariation::Redacted) && matches!(var, EventKindVariation::Full | EventKindVariation::Redacted)
}), }),
("event_id", is_non_stripped_room_event), ("event_id", is_non_stripped_room_event),

View File

@ -10,9 +10,9 @@ use ruma_events::{
message::{MessageEventContent, MessageType, TextMessageEventContent}, message::{MessageEventContent, MessageType, TextMessageEventContent},
power_levels::PowerLevelsEventContent, power_levels::PowerLevelsEventContent,
}, },
AnyEvent, AnyMessageEvent, AnyRoomEvent, AnyStateEvent, AnyStateEventContent, AnyEphemeralRoomEvent, AnyEvent, AnyMessageEvent, AnyRoomEvent, AnyStateEvent,
AnySyncMessageEvent, AnySyncRoomEvent, AnySyncStateEvent, MessageEvent, StateEvent, AnyStateEventContent, AnySyncMessageEvent, AnySyncRoomEvent, AnySyncStateEvent, MessageEvent,
SyncMessageEvent, SyncStateEvent, Unsigned, StateEvent, SyncMessageEvent, SyncStateEvent, Unsigned,
}; };
fn message_event() -> JsonValue { fn message_event() -> JsonValue {
@ -296,3 +296,23 @@ fn alias_event_field_access() {
} }
assert_eq!(deser.event_type(), "m.room.aliases"); 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::<AnyEvent>(json_data),
Ok(AnyEvent::Ephemeral(ephem @ AnyEphemeralRoomEvent::Typing(_)))
if ephem.room_id() == &room_id!("!jEsUZKDJdhlrceRyVU:example.org")
);
}