wfe_core/models/
status.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
4pub enum WorkflowStatus {
5 #[default]
6 Runnable,
7 Suspended,
8 Complete,
9 Terminated,
10}
11
12#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
13pub enum PointerStatus {
14 #[default]
15 Pending,
16 Running,
17 Complete,
18 Sleeping,
19 WaitingForEvent,
20 Failed,
21 Compensated,
22 Cancelled,
23 PendingPredecessor,
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29 use pretty_assertions::assert_eq;
30
31 #[test]
32 fn workflow_status_default_is_runnable() {
33 assert_eq!(WorkflowStatus::default(), WorkflowStatus::Runnable);
34 }
35
36 #[test]
37 fn pointer_status_default_is_pending() {
38 assert_eq!(PointerStatus::default(), PointerStatus::Pending);
39 }
40
41 #[test]
42 fn workflow_status_serde_round_trip() {
43 for status in [
44 WorkflowStatus::Runnable,
45 WorkflowStatus::Suspended,
46 WorkflowStatus::Complete,
47 WorkflowStatus::Terminated,
48 ] {
49 let json = serde_json::to_string(&status).unwrap();
50 let deserialized: WorkflowStatus = serde_json::from_str(&json).unwrap();
51 assert_eq!(status, deserialized);
52 }
53 }
54
55 #[test]
56 fn pointer_status_serde_round_trip() {
57 for status in [
58 PointerStatus::Pending,
59 PointerStatus::Running,
60 PointerStatus::Complete,
61 PointerStatus::Sleeping,
62 PointerStatus::WaitingForEvent,
63 PointerStatus::Failed,
64 PointerStatus::Compensated,
65 PointerStatus::Cancelled,
66 PointerStatus::PendingPredecessor,
67 ] {
68 let json = serde_json::to_string(&status).unwrap();
69 let deserialized: PointerStatus = serde_json::from_str(&json).unwrap();
70 assert_eq!(status, deserialized);
71 }
72 }
73}