events: Remove Serialize implementations for event enums

This commit is contained in:
Jonas Platte 2022-02-12 01:33:47 +01:00
parent 510b8485d8
commit f130d09daa
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67
6 changed files with 10 additions and 103 deletions

View File

@ -63,8 +63,6 @@ fn expand_event_enum(
variants: &[EventEnumVariant],
ruma_events: &TokenStream,
) -> TokenStream {
let serde = quote! { #ruma_events::exports::serde };
let event_struct = kind.to_event_ident(var);
let ident = kind.to_event_enum_ident(var);
@ -78,8 +76,7 @@ fn expand_event_enum(
quote! {
#( #attrs )*
#[derive(Clone, Debug, #serde::Serialize)]
#[serde(untagged)]
#[derive(Clone, Debug)]
#[allow(clippy::large_enum_variant)]
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
pub enum #ident {
@ -377,8 +374,7 @@ fn expand_possibly_redacted_enum(
quote! {
/// An enum that holds either regular un-redacted events or redacted events.
#[derive(Clone, Debug, #serde::Serialize)]
#[serde(untagged)]
#[derive(Clone, Debug)]
#[allow(clippy::exhaustive_enums)]
pub enum #ident {
/// An un-redacted event.

View File

@ -2,7 +2,7 @@ use ruma_common::MilliSecondsSinceUnixEpoch;
use ruma_events_macros::{event_enum, EventEnumFromEvent};
use ruma_identifiers::{EventId, RoomId, RoomVersionId, UserId};
use ruma_serde::from_raw_json_value;
use serde::{de, Deserialize, Serialize};
use serde::{de, Deserialize};
use serde_json::value::RawValue as RawJsonValue;
use crate::{
@ -123,8 +123,7 @@ macro_rules! room_ev_accessor {
/// Any room event.
#[allow(clippy::large_enum_variant, clippy::exhaustive_enums)]
#[derive(Clone, Debug, Serialize, EventEnumFromEvent)]
#[serde(untagged)]
#[derive(Clone, Debug, EventEnumFromEvent)]
pub enum AnyRoomEvent {
/// Any message event.
Message(AnyMessageEvent),
@ -150,8 +149,7 @@ impl AnyRoomEvent {
///
/// Sync room events are room event without a `room_id`, as returned in `/sync` responses.
#[allow(clippy::large_enum_variant, clippy::exhaustive_enums)]
#[derive(Clone, Debug, Serialize, EventEnumFromEvent)]
#[serde(untagged)]
#[derive(Clone, Debug, EventEnumFromEvent)]
pub enum AnySyncRoomEvent {
/// Any sync message event.
Message(AnySyncMessageEvent),

View File

@ -1,15 +1,12 @@
use assign::assign;
use js_int::{uint, UInt};
use matches::assert_matches;
use ruma_common::MilliSecondsSinceUnixEpoch;
use ruma_identifiers::{event_id, mxc_uri, room_id, user_id};
use serde_json::{from_value as from_json_value, json, to_value as to_json_value};
use ruma_identifiers::{event_id, room_id, user_id};
use serde_json::{from_value as from_json_value, json};
use ruma_events::{
call::{answer::CallAnswerEventContent, SessionDescription, SessionDescriptionType},
room::{ImageInfo, ThumbnailInfo},
sticker::StickerEventContent,
AnyMessageEvent, MessageEvent, Unsigned,
AnyMessageEvent, MessageEvent,
};
#[test]
@ -65,59 +62,3 @@ fn deserialize_message_event() {
&& unsigned.is_empty()
);
}
#[test]
fn serialize_message_event() {
let aliases_event = AnyMessageEvent::Sticker(MessageEvent {
content: StickerEventContent::new(
"Hello".into(),
assign!(ImageInfo::new(), {
height: UInt::new(423),
width: UInt::new(1011),
mimetype: Some("image/png".into()),
size: UInt::new(84242),
thumbnail_info: Some(Box::new(assign!(ThumbnailInfo::new(), {
width: UInt::new(800),
height: UInt::new(334),
mimetype: Some("image/png".into()),
size: UInt::new(82595),
}))),
thumbnail_url: Some(mxc_uri!("mxc://matrix.org/mnrsnsRRS787TSts").to_owned()),
}),
mxc_uri!("mxc://matrix.org/arsrns98rsRSR").to_owned(),
),
event_id: event_id!("$h29iv0s8:example.com").to_owned(),
origin_server_ts: MilliSecondsSinceUnixEpoch(uint!(1)),
room_id: room_id!("!roomid:room.com").to_owned(),
sender: user_id!("@carl:example.com").to_owned(),
unsigned: Unsigned::default(),
});
let actual = to_json_value(&aliases_event).unwrap();
let expected = json!({
"content": {
"body": "Hello",
"info": {
"h": 423,
"mimetype": "image/png",
"size": 84242,
"thumbnail_info": {
"h": 334,
"mimetype": "image/png",
"size": 82595,
"w": 800
},
"thumbnail_url": "mxc://matrix.org/mnrsnsRRS787TSts",
"w": 1011
},
"url": "mxc://matrix.org/arsrns98rsRSR"
},
"event_id": "$h29iv0s8:example.com",
"origin_server_ts": 1,
"room_id": "!roomid:room.com",
"sender": "@carl:example.com",
"type": "m.sticker",
});
assert_eq!(actual, expected);
}

View File

@ -242,12 +242,8 @@ fn deserialize_message_then_convert_to_full() {
let sync_ev: AnySyncMessageEvent = from_json_value(json_data).unwrap();
// Test conversion method
let full = sync_ev.into_full_event(rid.to_owned());
let full_json = to_json_value(full).unwrap();
assert_matches!(
from_json_value::<AnyMessageEvent>(full_json).unwrap(),
sync_ev.into_full_event(rid.to_owned()),
AnyMessageEvent::CallAnswer(MessageEvent {
content: CallAnswerEventContent {
answer: SessionDescription {

View File

@ -287,12 +287,8 @@ fn deserialize_full_event_convert_to_sync() {
let full_ev: AnyStateEvent = from_json_value(json_data).unwrap();
// Test conversion to sync event (without room_id field)
let sync: AnySyncStateEvent = full_ev.into();
let sync_json = to_json_value(sync).unwrap();
assert_matches!(
from_json_value::<AnySyncStateEvent>(sync_json).unwrap(),
AnySyncStateEvent::from(full_ev),
AnySyncStateEvent::RoomAliases(SyncStateEvent {
content,
event_id,

View File

@ -28,26 +28,6 @@ fn serialize_stripped_state_event_any_content() {
assert_eq!(to_json_value(&event).unwrap(), json_data);
}
#[test]
fn serialize_stripped_state_event_any_event() {
let event = AnyStrippedStateEvent::RoomTopic(StrippedStateEvent {
content: RoomTopicEventContent::new("Testing room".into()),
state_key: "".into(),
sender: user_id!("@example:localhost").to_owned(),
});
let json_data = json!({
"content": {
"topic": "Testing room"
},
"type": "m.room.topic",
"state_key": "",
"sender": "@example:localhost"
});
assert_eq!(to_json_value(&event).unwrap(), json_data);
}
#[test]
fn deserialize_stripped_state_events() {
let name_event = json!({