refactor: update rating validation logic — enforce minimum rating value
All checks were successful
CI / Check / Test (push) Successful in 1h5m56s

This commit is contained in:
2026-07-10 13:22:21 +02:00
parent fa881c3fd1
commit 6bf4ffc4ab
4 changed files with 54 additions and 4 deletions

View File

@@ -104,12 +104,12 @@ pub fn review_to_ap_object(review: &Review, input: ReviewApInput) -> ReviewObjec
let tag = vec![
ApHashtag {
kind: "Hashtag".to_string(),
href: Url::parse(&format!("{}/tags/moviesdiary", &base_url)).expect("valid base_url"),
href: Url::parse(&format!("{}/tags/moviesdiary", base_url)).expect("valid base_url"),
name: "#MoviesDiary".to_string(),
},
ApHashtag {
kind: "Hashtag".to_string(),
href: Url::parse(&format!("{}/tags/{}", &base_url, normalized.to_lowercase()))
href: Url::parse(&format!("{}/tags/{}", base_url, normalized.to_lowercase()))
.expect("valid base_url"),
name: format!("#{}", normalized),
},

View File

@@ -9,13 +9,14 @@ fn movie_id_generate_unique() {
#[test]
fn rating_valid_range() {
assert!(Rating::new(0).is_ok());
assert!(Rating::new(1).is_ok());
assert!(Rating::new(5).is_ok());
assert_eq!(Rating::new(3).unwrap().value(), 3);
}
#[test]
fn rating_invalid() {
assert!(Rating::new(0).is_err());
assert!(Rating::new(6).is_err());
assert!(Rating::new(255).is_err());
}

View File

@@ -86,10 +86,11 @@ pub fn format_watched_at(dt: &chrono::NaiveDateTime) -> String {
pub struct Rating(u8);
impl Rating {
const MIN: u8 = 1;
const MAX: u8 = 5;
pub fn new(value: u8) -> Result<Self, DomainError> {
if value <= Self::MAX {
if (Self::MIN..=Self::MAX).contains(&value) {
Ok(Self(value))
} else {
Err(DomainError::InvalidRating {