dpp/group/
group_action_status.rs1#[cfg(all(feature = "json-conversion", feature = "serde-conversion"))]
2use crate::serialization::JsonConvertible;
3#[cfg(all(feature = "value-conversion", feature = "serde-conversion"))]
4use crate::serialization::ValueConvertible;
5use anyhow::bail;
6
7#[derive(Debug, PartialEq, PartialOrd, Clone, Copy, Eq)]
8#[cfg_attr(
9 feature = "serde-conversion",
10 derive(serde::Serialize, serde::Deserialize),
11 serde(rename_all = "camelCase")
12)]
13pub enum GroupActionStatus {
14 ActionActive,
15 ActionClosed,
16}
17
18#[cfg(all(feature = "json-conversion", feature = "serde-conversion"))]
19impl JsonConvertible for GroupActionStatus {}
20
21#[cfg(all(feature = "value-conversion", feature = "serde-conversion"))]
22impl ValueConvertible for GroupActionStatus {}
23
24#[cfg(all(
25 test,
26 feature = "json-conversion",
27 feature = "value-conversion",
28 feature = "serde-conversion"
29))]
30mod json_convertible_tests {
31 use super::*;
32 use platform_value::Value;
33 use serde_json::json;
34
35 #[test]
39 fn json_round_trip_action_active() {
40 use crate::serialization::JsonConvertible;
41 let original = GroupActionStatus::ActionActive;
42 let json = original.to_json().expect("to_json");
43 assert_eq!(json, json!("actionActive"));
44 let recovered = GroupActionStatus::from_json(json).expect("from_json");
45 assert_eq!(original, recovered);
46 }
47
48 #[test]
49 fn json_round_trip_action_closed() {
50 use crate::serialization::JsonConvertible;
51 let original = GroupActionStatus::ActionClosed;
52 let json = original.to_json().expect("to_json");
53 assert_eq!(json, json!("actionClosed"));
54 let recovered = GroupActionStatus::from_json(json).expect("from_json");
55 assert_eq!(original, recovered);
56 }
57
58 #[test]
59 fn value_round_trip_action_active() {
60 use crate::serialization::ValueConvertible;
61 let original = GroupActionStatus::ActionActive;
62 let value = original.to_object().expect("to_object");
63 assert_eq!(value, Value::Text("actionActive".to_string()));
64 let recovered = GroupActionStatus::from_object(value).expect("from_object");
65 assert_eq!(original, recovered);
66 }
67
68 #[test]
69 fn value_round_trip_action_closed() {
70 use crate::serialization::ValueConvertible;
71 let original = GroupActionStatus::ActionClosed;
72 let value = original.to_object().expect("to_object");
73 assert_eq!(value, Value::Text("actionClosed".to_string()));
74 let recovered = GroupActionStatus::from_object(value).expect("from_object");
75 assert_eq!(original, recovered);
76 }
77}
78
79impl TryFrom<u8> for GroupActionStatus {
80 type Error = anyhow::Error;
81 fn try_from(value: u8) -> Result<Self, Self::Error> {
82 match value {
83 0 => Ok(Self::ActionActive),
84 1 => Ok(Self::ActionClosed),
85 value => bail!("unrecognized action status: {}", value),
86 }
87 }
88}
89
90impl TryFrom<i32> for GroupActionStatus {
91 type Error = anyhow::Error;
92 fn try_from(value: i32) -> Result<Self, Self::Error> {
93 match value {
94 0 => Ok(Self::ActionActive),
95 1 => Ok(Self::ActionClosed),
96 value => bail!("unrecognized action status: {}", value),
97 }
98 }
99}