Merge remote-tracking branch 'origin/main' into test-refactoring

# Conflicts:
#	Cargo.lock
#	src/cli/mod.rs
#	src/cli/radarr/add_command_handler.rs
#	src/cli/radarr/get_command_handler.rs
#	src/cli/radarr/list_command_handler.rs
This commit is contained in:
2025-12-15 07:55:14 -07:00
19 changed files with 158 additions and 52 deletions
@@ -439,13 +439,25 @@ mod tests {
let a_languages = a
.languages
.iter()
.map(|lang| lang.name.to_lowercase())
.map(|lang| {
lang
.as_ref()
.unwrap_or(&Default::default())
.name
.to_lowercase()
})
.collect::<Vec<String>>()
.join(", ");
let b_languages = b
.languages
.iter()
.map(|lang| lang.name.to_lowercase())
.map(|lang| {
lang
.as_ref()
.unwrap_or(&Default::default())
.name
.to_lowercase()
})
.collect::<Vec<String>>()
.join(", ");
@@ -601,10 +613,10 @@ mod tests {
BlocklistItem {
id: 3,
source_title: "test 1".to_owned(),
languages: vec![Language {
languages: vec![Some(Language {
id: 1,
name: "telgu".to_owned(),
}],
})],
quality: QualityWrapper {
quality: Quality {
name: "HD - 1080p".to_owned(),
@@ -617,10 +629,10 @@ mod tests {
BlocklistItem {
id: 2,
source_title: "test 2".to_owned(),
languages: vec![Language {
languages: vec![Some(Language {
id: 3,
name: "chinese".to_owned(),
}],
})],
quality: QualityWrapper {
quality: Quality {
name: "SD - 720p".to_owned(),
@@ -633,10 +645,10 @@ mod tests {
BlocklistItem {
id: 1,
source_title: "test 3".to_owned(),
languages: vec![Language {
languages: vec![Some(Language {
id: 1,
name: "english".to_owned(),
}],
})],
quality: QualityWrapper {
quality: Quality {
name: "HD - 1080p".to_owned(),
+14 -2
View File
@@ -214,13 +214,25 @@ fn blocklist_sorting_options() -> Vec<SortOption<BlocklistItem>> {
let a_languages = a
.languages
.iter()
.map(|lang| lang.name.to_lowercase())
.map(|lang| {
lang
.as_ref()
.unwrap_or(&Default::default())
.name
.to_lowercase()
})
.collect::<Vec<String>>()
.join(", ");
let b_languages = b
.languages
.iter()
.map(|lang| lang.name.to_lowercase())
.map(|lang| {
lang
.as_ref()
.unwrap_or(&Default::default())
.name
.to_lowercase()
})
.collect::<Vec<String>>()
.join(", ");
@@ -246,8 +246,19 @@ mod tests {
id: 1,
name: "_".to_owned(),
};
let language_a = &a.languages.first().unwrap_or(&default_language);
let language_b = &b.languages.first().unwrap_or(&default_language);
let default_language_option = Some(default_language.clone());
let language_a = &a
.languages
.first()
.unwrap_or(&default_language_option)
.as_ref()
.unwrap_or(&default_language);
let language_b = &b
.languages
.first()
.unwrap_or(&default_language_option)
.as_ref()
.unwrap_or(&default_language);
language_a.cmp(language_b)
};
@@ -386,10 +397,10 @@ mod tests {
id: 3,
source_title: "test 1".into(),
event_type: SonarrHistoryEventType::Grabbed,
languages: vec![Language {
languages: vec![Some(Language {
id: 1,
name: "telgu".to_owned(),
}],
})],
quality: QualityWrapper {
quality: Quality {
name: "HD - 1080p".to_owned(),
@@ -402,10 +413,10 @@ mod tests {
id: 2,
source_title: "test 2".into(),
event_type: SonarrHistoryEventType::DownloadFolderImported,
languages: vec![Language {
languages: vec![Some(Language {
id: 3,
name: "chinese".to_owned(),
}],
})],
quality: QualityWrapper {
quality: Quality {
name: "SD - 720p".to_owned(),
@@ -418,10 +429,10 @@ mod tests {
id: 1,
source_title: "test 3".into(),
event_type: SonarrHistoryEventType::EpisodeFileDeleted,
languages: vec![Language {
languages: vec![Some(Language {
id: 1,
name: "english".to_owned(),
}],
})],
quality: QualityWrapper {
quality: Quality {
name: "HD - 1080p".to_owned(),
+13 -2
View File
@@ -154,8 +154,19 @@ pub(in crate::handlers::sonarr_handlers) fn history_sorting_options()
id: 1,
name: "_".to_owned(),
};
let language_a = &a.languages.first().unwrap_or(&default_language);
let language_b = &b.languages.first().unwrap_or(&default_language);
let default_language_option = Some(default_language.clone());
let language_a = &a
.languages
.first()
.unwrap_or(&default_language_option)
.as_ref()
.unwrap_or(&default_language);
let language_b = &b
.languages
.first()
.unwrap_or(&default_language_option)
.as_ref()
.unwrap_or(&default_language);
language_a.cmp(language_b)
}),
@@ -518,12 +518,17 @@ pub(in crate::handlers::sonarr_handlers::library) fn releases_sorting_options()
SortOption {
name: "Language",
cmp_fn: Some(|a, b| {
let default_language_vec = vec![Language {
let default_language = Language {
id: 1,
name: "_".to_owned(),
}];
let language_a = &a.languages.as_ref().unwrap_or(&default_language_vec)[0];
let language_b = &b.languages.as_ref().unwrap_or(&default_language_vec)[0];
};
let default_language_vec = vec![Some(default_language.clone())];
let language_a = &a.languages.as_ref().unwrap_or(&default_language_vec)[0]
.as_ref()
.unwrap_or(&default_language);
let language_b = &b.languages.as_ref().unwrap_or(&default_language_vec)[0]
.as_ref()
.unwrap_or(&default_language);
language_a.cmp(language_b)
}),
@@ -1097,12 +1097,17 @@ mod tests {
#[test]
fn test_releases_sorting_options_language() {
let expected_cmp_fn: fn(&SonarrRelease, &SonarrRelease) -> Ordering = |a, b| {
let default_language_vec = vec![Language {
let default_language = Language {
id: 1,
name: "_".to_owned(),
}];
let language_a = &a.languages.as_ref().unwrap_or(&default_language_vec)[0];
let language_b = &b.languages.as_ref().unwrap_or(&default_language_vec)[0];
};
let default_language_vec = vec![Some(default_language.clone())];
let language_a = a.languages.as_ref().unwrap_or(&default_language_vec)[0]
.as_ref()
.unwrap_or(&default_language);
let language_b = b.languages.as_ref().unwrap_or(&default_language_vec)[0]
.as_ref()
.unwrap_or(&default_language);
language_a.cmp(language_b)
};
@@ -1141,10 +1146,10 @@ mod tests {
size: 1,
rejected: true,
seeders: Some(Number::from(1)),
languages: Some(vec![Language {
languages: Some(vec![Some(Language {
id: 1,
name: "Language A".to_owned(),
}]),
})]),
quality: QualityWrapper {
quality: Quality {
name: "Quality A".to_owned(),
@@ -1160,10 +1165,10 @@ mod tests {
size: 2,
rejected: false,
seeders: Some(Number::from(2)),
languages: Some(vec![Language {
languages: Some(vec![Some(Language {
id: 2,
name: "Language B".to_owned(),
}]),
})]),
quality: QualityWrapper {
quality: Quality {
name: "Quality B".to_owned(),