Skip to main content

wfe_core/models/
status.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
4/// Workflowstatus.
5pub enum WorkflowStatus {
6    #[default]
7    /// Runnable.
8    Runnable,
9    /// Suspended.
10    Suspended,
11    /// Complete.
12    Complete,
13    /// Terminated.
14    Terminated,
15}
16
17#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
18/// Pointerstatus.
19pub enum PointerStatus {
20    #[default]
21    /// Pending.
22    Pending,
23    /// Running.
24    Running,
25    /// Complete.
26    Complete,
27    /// Skipped.
28    Skipped,
29    /// Sleeping.
30    Sleeping,
31    /// Waitingforevent.
32    WaitingForEvent,
33    /// Failed.
34    Failed,
35    /// Compensated.
36    Compensated,
37    /// Cancelled.
38    Cancelled,
39    /// Pendingpredecessor.
40    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}