fix: Wrapped all Sonarr use of Language with Option to fix the 'null' array issue in the new Sonarr API
This commit is contained in:
@@ -445,13 +445,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(", ");
|
||||
|
||||
@@ -607,10 +619,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(),
|
||||
@@ -623,10 +635,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(),
|
||||
@@ -639,10 +651,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(),
|
||||
|
||||
@@ -210,13 +210,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(", ");
|
||||
|
||||
|
||||
@@ -245,8 +245,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)
|
||||
};
|
||||
@@ -385,10 +396,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(),
|
||||
@@ -401,10 +412,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(),
|
||||
@@ -417,10 +428,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(),
|
||||
|
||||
@@ -150,8 +150,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)
|
||||
}),
|
||||
|
||||
@@ -515,12 +515,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)
|
||||
}),
|
||||
|
||||
@@ -1116,12 +1116,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)
|
||||
};
|
||||
@@ -1160,10 +1165,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(),
|
||||
@@ -1179,10 +1184,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(),
|
||||
|
||||
Reference in New Issue
Block a user