fix: Refactored how quality profiles, language profiles, and metadata profiles are populated for each servarr so they sort using the ID to mimic the web UI better
This commit is contained in:
@@ -11,6 +11,7 @@ use crate::models::{
|
|||||||
use crate::network::lidarr_network::LidarrEvent;
|
use crate::network::lidarr_network::LidarrEvent;
|
||||||
use bimap::BiMap;
|
use bimap::BiMap;
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
|
use itertools::Itertools;
|
||||||
use strum::EnumIter;
|
use strum::EnumIter;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use {
|
use {
|
||||||
@@ -68,17 +69,23 @@ impl LidarrData<'_> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn sorted_quality_profile_names(&self) -> Vec<String> {
|
pub fn sorted_quality_profile_names(&self) -> Vec<String> {
|
||||||
let mut quality_profile_names: Vec<String> =
|
self
|
||||||
self.quality_profile_map.right_values().cloned().collect();
|
.quality_profile_map
|
||||||
quality_profile_names.sort();
|
.iter()
|
||||||
quality_profile_names
|
.sorted_by_key(|(id, _)| *id)
|
||||||
|
.map(|(_, name)| name)
|
||||||
|
.cloned()
|
||||||
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn sorted_metadata_profile_names(&self) -> Vec<String> {
|
pub fn sorted_metadata_profile_names(&self) -> Vec<String> {
|
||||||
let mut metadata_profile_names: Vec<String> =
|
self
|
||||||
self.metadata_profile_map.right_values().cloned().collect();
|
.metadata_profile_map
|
||||||
metadata_profile_names.sort();
|
.iter()
|
||||||
metadata_profile_names
|
.sorted_by_key(|(id, _)| *id)
|
||||||
|
.map(|(_, name)| name)
|
||||||
|
.cloned()
|
||||||
|
.collect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,17 +64,17 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_sorted_quality_profile_names() {
|
fn test_sorted_quality_profile_names() {
|
||||||
let mut quality_profile_map = BiMap::new();
|
let mut quality_profile_map = BiMap::new();
|
||||||
quality_profile_map.insert(3, "test 3".to_owned());
|
quality_profile_map.insert(3, "test 1".to_owned());
|
||||||
quality_profile_map.insert(2, "test 2".to_owned());
|
quality_profile_map.insert(2, "test 2".to_owned());
|
||||||
quality_profile_map.insert(1, "test 1".to_owned());
|
quality_profile_map.insert(1, "test 3".to_owned());
|
||||||
let lidarr_data = LidarrData {
|
let lidarr_data = LidarrData {
|
||||||
quality_profile_map,
|
quality_profile_map,
|
||||||
..LidarrData::default()
|
..LidarrData::default()
|
||||||
};
|
};
|
||||||
let expected_quality_profile_vec = vec![
|
let expected_quality_profile_vec = vec![
|
||||||
"test 1".to_owned(),
|
|
||||||
"test 2".to_owned(),
|
|
||||||
"test 3".to_owned(),
|
"test 3".to_owned(),
|
||||||
|
"test 2".to_owned(),
|
||||||
|
"test 1".to_owned(),
|
||||||
];
|
];
|
||||||
|
|
||||||
assert_iter_eq!(
|
assert_iter_eq!(
|
||||||
@@ -86,17 +86,17 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_sorted_metadata_profile_names() {
|
fn test_sorted_metadata_profile_names() {
|
||||||
let mut metadata_profile_map = BiMap::new();
|
let mut metadata_profile_map = BiMap::new();
|
||||||
metadata_profile_map.insert(3, "test 3".to_owned());
|
metadata_profile_map.insert(3, "test 1".to_owned());
|
||||||
metadata_profile_map.insert(2, "test 2".to_owned());
|
metadata_profile_map.insert(2, "test 2".to_owned());
|
||||||
metadata_profile_map.insert(1, "test 1".to_owned());
|
metadata_profile_map.insert(1, "test 3".to_owned());
|
||||||
let lidarr_data = LidarrData {
|
let lidarr_data = LidarrData {
|
||||||
metadata_profile_map,
|
metadata_profile_map,
|
||||||
..LidarrData::default()
|
..LidarrData::default()
|
||||||
};
|
};
|
||||||
let expected_metadata_profile_vec = vec![
|
let expected_metadata_profile_vec = vec![
|
||||||
"test 1".to_owned(),
|
|
||||||
"test 2".to_owned(),
|
|
||||||
"test 3".to_owned(),
|
"test 3".to_owned(),
|
||||||
|
"test 2".to_owned(),
|
||||||
|
"test 1".to_owned(),
|
||||||
];
|
];
|
||||||
|
|
||||||
assert_iter_eq!(
|
assert_iter_eq!(
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ use crate::models::{
|
|||||||
use crate::network::radarr_network::RadarrEvent;
|
use crate::network::radarr_network::RadarrEvent;
|
||||||
use bimap::BiMap;
|
use bimap::BiMap;
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
|
use itertools::Itertools;
|
||||||
use serde_json::Number;
|
use serde_json::Number;
|
||||||
use strum::EnumIter;
|
use strum::EnumIter;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@@ -112,9 +113,13 @@ impl RadarrData<'_> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn sorted_quality_profile_names(&self) -> Vec<String> {
|
pub fn sorted_quality_profile_names(&self) -> Vec<String> {
|
||||||
let mut names: Vec<String> = self.quality_profile_map.right_values().cloned().collect();
|
self
|
||||||
names.sort();
|
.quality_profile_map
|
||||||
names
|
.iter()
|
||||||
|
.sorted_by_key(|(id, _)| *id)
|
||||||
|
.map(|(_, name)| name)
|
||||||
|
.cloned()
|
||||||
|
.collect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,17 +82,17 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_sorted_quality_profile_names() {
|
fn test_sorted_quality_profile_names() {
|
||||||
let mut quality_profile_map = BiMap::new();
|
let mut quality_profile_map = BiMap::new();
|
||||||
quality_profile_map.insert(3, "test 3".to_owned());
|
quality_profile_map.insert(3, "test 1".to_owned());
|
||||||
quality_profile_map.insert(2, "test 2".to_owned());
|
quality_profile_map.insert(2, "test 2".to_owned());
|
||||||
quality_profile_map.insert(1, "test 1".to_owned());
|
quality_profile_map.insert(1, "test 3".to_owned());
|
||||||
let radarr_data = RadarrData {
|
let radarr_data = RadarrData {
|
||||||
quality_profile_map,
|
quality_profile_map,
|
||||||
..RadarrData::default()
|
..RadarrData::default()
|
||||||
};
|
};
|
||||||
let expected_quality_profile_vec = vec![
|
let expected_quality_profile_vec = vec![
|
||||||
"test 1".to_owned(),
|
|
||||||
"test 2".to_owned(),
|
|
||||||
"test 3".to_owned(),
|
"test 3".to_owned(),
|
||||||
|
"test 2".to_owned(),
|
||||||
|
"test 1".to_owned(),
|
||||||
];
|
];
|
||||||
|
|
||||||
assert_iter_eq!(
|
assert_iter_eq!(
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ use crate::{
|
|||||||
};
|
};
|
||||||
use bimap::BiMap;
|
use bimap::BiMap;
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
|
use itertools::Itertools;
|
||||||
use serde_json::Number;
|
use serde_json::Number;
|
||||||
use strum::EnumIter;
|
use strum::EnumIter;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@@ -119,15 +120,23 @@ impl SonarrData<'_> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn sorted_quality_profile_names(&self) -> Vec<String> {
|
pub fn sorted_quality_profile_names(&self) -> Vec<String> {
|
||||||
let mut names: Vec<String> = self.quality_profile_map.right_values().cloned().collect();
|
self
|
||||||
names.sort();
|
.quality_profile_map
|
||||||
names
|
.iter()
|
||||||
|
.sorted_by_key(|(id, _)| *id)
|
||||||
|
.map(|(_, name)| name)
|
||||||
|
.cloned()
|
||||||
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn sorted_language_profile_names(&self) -> Vec<String> {
|
pub fn sorted_language_profile_names(&self) -> Vec<String> {
|
||||||
let mut names: Vec<String> = self.language_profiles_map.right_values().cloned().collect();
|
self
|
||||||
names.sort();
|
.language_profiles_map
|
||||||
names
|
.iter()
|
||||||
|
.sorted_by_key(|(id, _)| *id)
|
||||||
|
.map(|(_, name)| name)
|
||||||
|
.cloned()
|
||||||
|
.collect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,17 +98,17 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_sorted_quality_profile_names() {
|
fn test_sorted_quality_profile_names() {
|
||||||
let mut quality_profile_map = BiMap::new();
|
let mut quality_profile_map = BiMap::new();
|
||||||
quality_profile_map.insert(3, "test 3".to_owned());
|
quality_profile_map.insert(3, "test 1".to_owned());
|
||||||
quality_profile_map.insert(2, "test 2".to_owned());
|
quality_profile_map.insert(2, "test 2".to_owned());
|
||||||
quality_profile_map.insert(1, "test 1".to_owned());
|
quality_profile_map.insert(1, "test 3".to_owned());
|
||||||
let sonarr_data = SonarrData {
|
let sonarr_data = SonarrData {
|
||||||
quality_profile_map,
|
quality_profile_map,
|
||||||
..SonarrData::default()
|
..SonarrData::default()
|
||||||
};
|
};
|
||||||
let expected_quality_profile_vec = vec![
|
let expected_quality_profile_vec = vec![
|
||||||
"test 1".to_owned(),
|
|
||||||
"test 2".to_owned(),
|
|
||||||
"test 3".to_owned(),
|
"test 3".to_owned(),
|
||||||
|
"test 2".to_owned(),
|
||||||
|
"test 1".to_owned(),
|
||||||
];
|
];
|
||||||
|
|
||||||
assert_iter_eq!(
|
assert_iter_eq!(
|
||||||
@@ -120,17 +120,17 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_sorted_language_profile_names() {
|
fn test_sorted_language_profile_names() {
|
||||||
let mut language_profiles_map = BiMap::new();
|
let mut language_profiles_map = BiMap::new();
|
||||||
language_profiles_map.insert(3, "test 3".to_owned());
|
language_profiles_map.insert(3, "test 1".to_owned());
|
||||||
language_profiles_map.insert(2, "test 2".to_owned());
|
language_profiles_map.insert(2, "test 2".to_owned());
|
||||||
language_profiles_map.insert(1, "test 1".to_owned());
|
language_profiles_map.insert(1, "test 3".to_owned());
|
||||||
let sonarr_data = SonarrData {
|
let sonarr_data = SonarrData {
|
||||||
language_profiles_map,
|
language_profiles_map,
|
||||||
..SonarrData::default()
|
..SonarrData::default()
|
||||||
};
|
};
|
||||||
let expected_language_profiles_vec = vec![
|
let expected_language_profiles_vec = vec![
|
||||||
"test 1".to_owned(),
|
|
||||||
"test 2".to_owned(),
|
|
||||||
"test 3".to_owned(),
|
"test 3".to_owned(),
|
||||||
|
"test 2".to_owned(),
|
||||||
|
"test 1".to_owned(),
|
||||||
];
|
];
|
||||||
|
|
||||||
assert_iter_eq!(
|
assert_iter_eq!(
|
||||||
|
|||||||
Reference in New Issue
Block a user