From dc57620ae033596687893029fe3afeac206390f0 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Sun, 18 Apr 2021 14:36:24 +0200 Subject: [PATCH] events: Make StickerEventContent non-exhaustive --- ruma-events/src/sticker.rs | 8 ++++++++ ruma-events/tests/event_enums.rs | 10 +++++----- ruma-events/tests/message_event.rs | 11 ++++++----- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/ruma-events/src/sticker.rs b/ruma-events/src/sticker.rs index 67c7fb75..5ebc8bdf 100644 --- a/ruma-events/src/sticker.rs +++ b/ruma-events/src/sticker.rs @@ -11,6 +11,7 @@ pub type StickerEvent = MessageEvent; /// The payload for `StickerEvent`. #[derive(Clone, Debug, Deserialize, Serialize, MessageEventContent)] +#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] #[ruma_event(type = "m.sticker")] pub struct StickerEventContent { /// A textual representation or associated description of the sticker image. This could @@ -24,3 +25,10 @@ pub struct StickerEventContent { /// The URL to the sticker image. This must be a valid `mxc://` URI. pub url: MxcUri, } + +impl StickerEventContent { + /// Creates a new `StickerEventContent` with the given body, image info and URL. + pub fn new(body: String, info: ImageInfo, url: MxcUri) -> Self { + Self { body, info, url } + } +} diff --git a/ruma-events/tests/event_enums.rs b/ruma-events/tests/event_enums.rs index 9bc60736..e0b62067 100644 --- a/ruma-events/tests/event_enums.rs +++ b/ruma-events/tests/event_enums.rs @@ -69,9 +69,9 @@ fn deserialize_message_event() { #[test] fn serialize_message_event() { let aliases_event = AnyMessageEvent::Sticker(MessageEvent { - content: StickerEventContent { - body: "Hello".into(), - info: ImageInfo { + content: StickerEventContent::new( + "Hello".into(), + ImageInfo { height: UInt::new(423), width: UInt::new(1011), mimetype: Some("image/png".into()), @@ -87,8 +87,8 @@ fn serialize_message_event() { #[cfg(feature = "unstable-pre-spec")] blurhash: None, }, - url: mxc_uri!("mxc://matrix.org/arsrns98rsRSR"), - }, + mxc_uri!("mxc://matrix.org/arsrns98rsRSR"), + ), event_id: event_id!("$h29iv0s8:example.com"), origin_server_ts: UNIX_EPOCH + Duration::from_millis(1), room_id: room_id!("!roomid:room.com"), diff --git a/ruma-events/tests/message_event.rs b/ruma-events/tests/message_event.rs index 8b951acb..bd0345d7 100644 --- a/ruma-events/tests/message_event.rs +++ b/ruma-events/tests/message_event.rs @@ -15,9 +15,9 @@ use serde_json::{from_value as from_json_value, json, to_value as to_json_value} #[test] fn message_serialize_sticker() { let aliases_event = MessageEvent { - content: AnyMessageEventContent::Sticker(StickerEventContent { - body: "Hello".into(), - info: ImageInfo { + content: AnyMessageEventContent::Sticker(StickerEventContent::new( + "Hello".into(), + ImageInfo { height: UInt::new(423), width: UInt::new(1011), mimetype: Some("image/png".into()), @@ -33,8 +33,8 @@ fn message_serialize_sticker() { #[cfg(feature = "unstable-pre-spec")] blurhash: None, }, - url: mxc_uri!("mxc://matrix.org/rnsldl8srs98IRrs"), - }), + mxc_uri!("mxc://matrix.org/rnsldl8srs98IRrs"), + )), event_id: event_id!("$h29iv0s8:example.com"), origin_server_ts: UNIX_EPOCH + Duration::from_millis(1), room_id: room_id!("!roomid:room.com"), @@ -195,6 +195,7 @@ fn deserialize_message_sticker() { blurhash: None, }, url, + .. }), event_id, origin_server_ts,