use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum PipelinePhase {
Planning,
Development,
Review,
CommitMessage,
FinalValidation,
Finalizing,
Complete,
AwaitingDevFix,
Interrupted,
}
impl std::fmt::Display for PipelinePhase {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Planning => write!(f, "Planning"),
Self::Development => write!(f, "Development"),
Self::Review => write!(f, "Review"),
Self::CommitMessage => write!(f, "Commit Message"),
Self::FinalValidation => write!(f, "Final Validation"),
Self::Finalizing => write!(f, "Finalizing"),
Self::Complete => write!(f, "Complete"),
Self::AwaitingDevFix => write!(f, "Awaiting Dev Fix"),
Self::Interrupted => write!(f, "Interrupted"),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_pipeline_phase_display() {
assert_eq!(format!("{}", PipelinePhase::Planning), "Planning");
assert_eq!(format!("{}", PipelinePhase::Development), "Development");
assert_eq!(format!("{}", PipelinePhase::Review), "Review");
assert_eq!(
format!("{}", PipelinePhase::CommitMessage),
"Commit Message"
);
assert_eq!(
format!("{}", PipelinePhase::FinalValidation),
"Final Validation"
);
assert_eq!(format!("{}", PipelinePhase::Finalizing), "Finalizing");
assert_eq!(format!("{}", PipelinePhase::Complete), "Complete");
assert_eq!(
format!("{}", PipelinePhase::AwaitingDevFix),
"Awaiting Dev Fix"
);
assert_eq!(format!("{}", PipelinePhase::Interrupted), "Interrupted");
}
}