76 lines
2.0 KiB
Rust
76 lines
2.0 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum WorkflowStatus {
|
|
#[default]
|
|
Runnable,
|
|
Suspended,
|
|
Complete,
|
|
Terminated,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
|
pub enum PointerStatus {
|
|
#[default]
|
|
Pending,
|
|
Running,
|
|
Complete,
|
|
Skipped,
|
|
Sleeping,
|
|
WaitingForEvent,
|
|
Failed,
|
|
Compensated,
|
|
Cancelled,
|
|
PendingPredecessor,
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
use pretty_assertions::assert_eq;
|
|
|
|
#[test]
|
|
fn workflow_status_default_is_runnable() {
|
|
assert_eq!(WorkflowStatus::default(), WorkflowStatus::Runnable);
|
|
}
|
|
|
|
#[test]
|
|
fn pointer_status_default_is_pending() {
|
|
assert_eq!(PointerStatus::default(), PointerStatus::Pending);
|
|
}
|
|
|
|
#[test]
|
|
fn workflow_status_serde_round_trip() {
|
|
for status in [
|
|
WorkflowStatus::Runnable,
|
|
WorkflowStatus::Suspended,
|
|
WorkflowStatus::Complete,
|
|
WorkflowStatus::Terminated,
|
|
] {
|
|
let json = serde_json::to_string(&status).unwrap();
|
|
let deserialized: WorkflowStatus = serde_json::from_str(&json).unwrap();
|
|
assert_eq!(status, deserialized);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn pointer_status_serde_round_trip() {
|
|
for status in [
|
|
PointerStatus::Pending,
|
|
PointerStatus::Running,
|
|
PointerStatus::Complete,
|
|
PointerStatus::Skipped,
|
|
PointerStatus::Sleeping,
|
|
PointerStatus::WaitingForEvent,
|
|
PointerStatus::Failed,
|
|
PointerStatus::Compensated,
|
|
PointerStatus::Cancelled,
|
|
PointerStatus::PendingPredecessor,
|
|
] {
|
|
let json = serde_json::to_string(&status).unwrap();
|
|
let deserialized: PointerStatus = serde_json::from_str(&json).unwrap();
|
|
assert_eq!(status, deserialized);
|
|
}
|
|
}
|
|
}
|