wfe_core/models/
status.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
4pub enum WorkflowStatus {
6 #[default]
7 Runnable,
9 Suspended,
11 Complete,
13 Terminated,
15}
16
17#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
18pub enum PointerStatus {
20 #[default]
21 Pending,
23 Running,
25 Complete,
27 Skipped,
29 Sleeping,
31 WaitingForEvent,
33 Failed,
35 Compensated,
37 Cancelled,
39 PendingPredecessor,
41}
42
43#[cfg(test)]
44mod tests {
45 use super::*;
46 use pretty_assertions::assert_eq;
47
48 #[test]
49 fn workflow_status_default_is_runnable() {
50 assert_eq!(WorkflowStatus::default(), WorkflowStatus::Runnable);
51 }
52
53 #[test]
54 fn pointer_status_default_is_pending() {
55 assert_eq!(PointerStatus::default(), PointerStatus::Pending);
56 }
57
58 #[test]
59 fn workflow_status_serde_round_trip() {
60 for status in [
61 WorkflowStatus::Runnable,
62 WorkflowStatus::Suspended,
63 WorkflowStatus::Complete,
64 WorkflowStatus::Terminated,
65 ] {
66 let json = serde_json::to_string(&status).unwrap();
67 let deserialized: WorkflowStatus = serde_json::from_str(&json).unwrap();
68 assert_eq!(status, deserialized);
69 }
70 }
71
72 #[test]
73 fn pointer_status_serde_round_trip() {
74 for status in [
75 PointerStatus::Pending,
76 PointerStatus::Running,
77 PointerStatus::Complete,
78 PointerStatus::Skipped,
79 PointerStatus::Sleeping,
80 PointerStatus::WaitingForEvent,
81 PointerStatus::Failed,
82 PointerStatus::Compensated,
83 PointerStatus::Cancelled,
84 PointerStatus::PendingPredecessor,
85 ] {
86 let json = serde_json::to_string(&status).unwrap();
87 let deserialized: PointerStatus = serde_json::from_str(&json).unwrap();
88 assert_eq!(status, deserialized);
89 }
90 }
91}