diff --git a/src/model.rs b/src/model.rs index 1694efd..853d481 100644 --- a/src/model.rs +++ b/src/model.rs @@ -286,3 +286,61 @@ fn validate_text(field: &'static str, value: &str) -> Result<(), ValidationError } Ok(()) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_assert_legal_state_valid() { + assert_eq!( + assert_legal_state( + &MemoryTier::ShortTerm, + &ClaimStatus::Accepted, + &MemoryProcessingState::Pending + ), + Ok(()) + ); + + assert_eq!( + assert_legal_state( + &MemoryTier::LongTerm, + &ClaimStatus::Accepted, + &MemoryProcessingState::Processed + ), + Ok(()) + ); + } + + #[test] + fn test_assert_legal_state_archive_superseded() { + assert_eq!( + assert_legal_state( + &MemoryTier::Archive, + &ClaimStatus::Superseded, + &MemoryProcessingState::Processed + ), + Err(ValidationError::IllegalMemoryState( + "archive".to_owned(), + "superseded".to_owned(), + "processed".to_owned() + )) + ); + } + + #[test] + fn test_assert_legal_state_long_term_unprocessed() { + assert_eq!( + assert_legal_state( + &MemoryTier::LongTerm, + &ClaimStatus::Accepted, + &MemoryProcessingState::Pending + ), + Err(ValidationError::IllegalMemoryState( + "long_term".to_owned(), + "accepted".to_owned(), + "pending".to_owned() + )) + ); + } +}