From 97255eff600f5f551af05191d4ea55614ad1b526 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Mon, 4 May 2020 22:59:32 +0200 Subject: [PATCH] Import push::Action tests from ruma-events --- Cargo.toml | 1 + src/push.rs | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index d33d8eba..432eca9a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,7 @@ repository = "https://github.com/ruma/ruma-client-api" edition = "2018" [dependencies] +matches = "0.1.8" ruma-serde = "0.1.3" serde = { version = "1.0.106", features = ["derive"] } serde_json = { version = "1.0.52", features = ["raw_value"] } diff --git a/src/push.rs b/src/push.rs index f98642c2..0de7f2de 100644 --- a/src/push.rs +++ b/src/push.rs @@ -117,3 +117,77 @@ impl Serialize for Action { } } } + +#[cfg(test)] +mod tests { + use matches::assert_matches; + use serde_json::{from_value as from_json_value, json, to_value as to_json_value}; + + use super::{Action, Tweak}; + + #[test] + fn serialize_string_action() { + assert_eq!(to_json_value(&Action::Notify).unwrap(), json!("notify")); + } + + #[test] + fn serialize_tweak_sound_action() { + assert_eq!( + to_json_value(&Action::SetTweak(Tweak::Sound("default".into()))).unwrap(), + json!({ "set_tweak": "sound", "value": "default" }) + ); + } + + #[test] + fn serialize_tweak_highlight_action() { + assert_eq!( + to_json_value(&Action::SetTweak(Tweak::Highlight(true))).unwrap(), + json!({ "set_tweak": "highlight" }) + ); + + assert_eq!( + to_json_value(&Action::SetTweak(Tweak::Highlight(false))).unwrap(), + json!({ "set_tweak": "highlight", "value": false }) + ); + } + + #[test] + fn deserialize_string_action() { + assert_matches!( + from_json_value::(json!("notify")).unwrap(), + Action::Notify + ); + } + + #[test] + fn deserialize_tweak_sound_action() { + let json_data = json!({ + "set_tweak": "sound", + "value": "default" + }); + assert_matches!( + &from_json_value::(json_data).unwrap(), + Action::SetTweak(Tweak::Sound(value)) if value == "default" + ); + } + + #[test] + fn deserialize_tweak_highlight_action() { + let json_data = json!({ + "set_tweak": "highlight", + "value": true + }); + assert_matches!( + from_json_value::(json_data).unwrap(), + Action::SetTweak(Tweak::Highlight(true)) + ); + } + + #[test] + fn deserialize_tweak_highlight_action_with_default_value() { + assert_matches!( + from_json_value::(json!({ "set_tweak": "highlight" })).unwrap(), + Action::SetTweak(Tweak::Highlight(true)) + ); + } +}