Lidarr support #1
@@ -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