From 351fbf60c17dfaca23c0c1e04df59f6a4c1cb9f0 Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Mon, 7 Oct 2024 07:19:20 +0200 Subject: [PATCH] tests: serialize `Unsigned` with serde --- crates/matrix-sdk/src/test_utils/events.rs | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/crates/matrix-sdk/src/test_utils/events.rs b/crates/matrix-sdk/src/test_utils/events.rs index 5906b09abef..9ace4ccd49f 100644 --- a/crates/matrix-sdk/src/test_utils/events.rs +++ b/crates/matrix-sdk/src/test_utils/events.rs @@ -59,9 +59,11 @@ impl TimestampArg for u64 { } } -#[derive(Debug, Default)] +#[derive(Debug, Default, Serialize)] struct Unsigned { + #[serde(skip_serializing_if = "Option::is_none")] transaction_id: Option, + #[serde(rename = "m.relations", skip_serializing_if = "Option::is_none")] relations: Option>>, } @@ -156,19 +158,7 @@ where } if let Some(unsigned) = self.unsigned { - let mut unsigned_json = json!({}); - - // We can't plain serialize `Unsigned`, otherwise this would result in some - // `null` fields when options are set to none, which Ruma rejects. - let unsigned_obj = unsigned_json.as_object_mut().unwrap(); - if let Some(transaction_id) = unsigned.transaction_id { - unsigned_obj.insert("transaction_id".to_owned(), json!(transaction_id)); - } - if let Some(relations) = unsigned.relations { - unsigned_obj.insert("m.relations".to_owned(), json!(relations)); - } - - map.insert("unsigned".to_owned(), unsigned_json); + map.insert("unsigned".to_owned(), json!(unsigned)); } if let Some(state_key) = self.state_key {