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