Files
k-mood/crates/domain/tests/user/timezone_test.rs
Gabriel Kaszewski 23d052278a
All checks were successful
CI / ci (push) Successful in 19m38s
changes
2026-08-26 20:58:14 +02:00

54 lines
1.2 KiB
Rust

use domain::errors::DomainError;
use domain::user::Timezone;
#[test]
fn a_zone_from_the_iana_database_is_accepted() {
assert_eq!(
Timezone::new("Europe/Warsaw").unwrap().value(),
"Europe/Warsaw"
);
assert_eq!(
Timezone::new("America/New_York").unwrap().value(),
"America/New_York"
);
}
#[test]
fn utc_is_a_real_zone_and_is_accepted() {
assert_eq!(Timezone::new("UTC").unwrap().value(), "UTC");
}
#[test]
fn surrounding_whitespace_is_trimmed() {
assert_eq!(
Timezone::new(" America/New_York ").unwrap().value(),
"America/New_York"
);
}
#[test]
fn a_zone_that_merely_looks_like_one_is_rejected() {
assert!(matches!(
Timezone::new("Foo/Bar"),
Err(DomainError::InvalidInput(_))
));
assert!(matches!(
Timezone::new("Europe/Atlantis"),
Err(DomainError::InvalidInput(_))
));
}
#[test]
fn an_empty_zone_is_rejected() {
assert!(matches!(
Timezone::new(""),
Err(DomainError::InvalidInput(_))
));
}
#[test]
fn a_stored_zone_that_cannot_be_resolved_is_refused_on_load() {
assert!(Timezone::from_persistence("Foo/Bar").is_err());
assert!(Timezone::from_persistence("Europe/Warsaw").is_ok());
}