test: Wrote snapshot tests for all Sonarr UI
This commit is contained in:
@@ -96,6 +96,7 @@ mod tests {
|
||||
},
|
||||
{
|
||||
"seriesId": 2001,
|
||||
"seriesTitle": "Test Series",
|
||||
"episodeIds": [42018],
|
||||
"sourceTitle": "A Series",
|
||||
"languages": [{ "id": 1, "name": "English" }],
|
||||
|
||||
@@ -12,7 +12,7 @@ mod tests {
|
||||
use crate::network::sonarr_network::SonarrEvent;
|
||||
use crate::network::sonarr_network::library::episodes::get_episode_status;
|
||||
use crate::network::sonarr_network::sonarr_network_test_utils::test_utils::{
|
||||
EPISODE_JSON, episode, episode_file, history_item, release,
|
||||
EPISODE_JSON, episode, episode_file, history_item, torrent_release,
|
||||
};
|
||||
use indoc::formatdoc;
|
||||
use mockito::Matcher;
|
||||
@@ -1124,9 +1124,9 @@ mod tests {
|
||||
.unwrap()
|
||||
.episode_releases
|
||||
.items,
|
||||
vec![release()]
|
||||
vec![torrent_release()]
|
||||
);
|
||||
assert_eq!(releases_vec, vec![release()]);
|
||||
assert_eq!(releases_vec, vec![torrent_release()]);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
@@ -1179,9 +1179,9 @@ mod tests {
|
||||
.unwrap()
|
||||
.episode_releases
|
||||
.items,
|
||||
vec![release()]
|
||||
vec![torrent_release()]
|
||||
);
|
||||
assert_eq!(releases_vec, vec![release()]);
|
||||
assert_eq!(releases_vec, vec![torrent_release()]);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
@@ -6,7 +6,7 @@ mod tests {
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::sonarr_network::SonarrEvent;
|
||||
use crate::network::sonarr_network::sonarr_network_test_utils::test_utils::{
|
||||
SERIES_JSON, history_item, release, season, series,
|
||||
SERIES_JSON, history_item, season, series, torrent_release,
|
||||
};
|
||||
use mockito::Matcher;
|
||||
use pretty_assertions::assert_eq;
|
||||
@@ -101,16 +101,16 @@ mod tests {
|
||||
]);
|
||||
let expected_filtered_sonarr_release = SonarrRelease {
|
||||
full_season: true,
|
||||
..release()
|
||||
..torrent_release()
|
||||
};
|
||||
let expected_raw_sonarr_releases = vec![
|
||||
SonarrRelease {
|
||||
full_season: true,
|
||||
..release()
|
||||
..torrent_release()
|
||||
},
|
||||
SonarrRelease {
|
||||
guid: "4567".to_owned(),
|
||||
..release()
|
||||
..torrent_release()
|
||||
},
|
||||
];
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
@@ -197,7 +197,7 @@ mod tests {
|
||||
]);
|
||||
let expected_sonarr_release = SonarrRelease {
|
||||
full_season: true,
|
||||
..release()
|
||||
..torrent_release()
|
||||
};
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(release_json)
|
||||
|
||||
@@ -19,7 +19,7 @@ mod sonarr_network_tests;
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "sonarr_network_test_utils.rs"]
|
||||
mod sonarr_network_test_utils;
|
||||
pub mod sonarr_network_test_utils;
|
||||
|
||||
mod blocklist;
|
||||
mod downloads;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#[cfg(test)]
|
||||
pub(in crate::network::sonarr_network) mod test_utils {
|
||||
use crate::models::HorizontallyScrollableText;
|
||||
pub mod test_utils {
|
||||
use crate::models::servarr_models::{
|
||||
Indexer, IndexerField, Language, Quality, QualityWrapper, RootFolder,
|
||||
};
|
||||
@@ -8,9 +7,13 @@ pub(in crate::network::sonarr_network) mod test_utils {
|
||||
AddSeriesSearchResult, AddSeriesSearchResultStatistics, BlocklistItem, DownloadRecord,
|
||||
DownloadStatus, DownloadsResponse, Episode, EpisodeFile, IndexerSettings, MediaInfo, Rating,
|
||||
Season, SeasonStatistics, Series, SeriesStatistics, SeriesStatus, SeriesType,
|
||||
SonarrHistoryData, SonarrHistoryEventType, SonarrHistoryItem, SonarrRelease,
|
||||
SonarrHistoryData, SonarrHistoryEventType, SonarrHistoryItem, SonarrRelease, SonarrTask,
|
||||
SonarrTaskName,
|
||||
};
|
||||
use crate::models::{HorizontallyScrollableText, ScrollableText};
|
||||
use bimap::BiMap;
|
||||
use chrono::DateTime;
|
||||
use indoc::formatdoc;
|
||||
use serde_json::{Number, Value, json};
|
||||
|
||||
pub const SERIES_JSON: &str = r#"{
|
||||
@@ -22,6 +25,7 @@ pub(in crate::network::sonarr_network) mod test_utils {
|
||||
"seasons": [
|
||||
{
|
||||
"seasonNumber": 1,
|
||||
"title": "Season title",
|
||||
"monitored": true,
|
||||
"statistics": {
|
||||
"previousAiring": "2022-10-24T01:00:00Z",
|
||||
@@ -120,7 +124,7 @@ pub(in crate::network::sonarr_network) mod test_utils {
|
||||
BlocklistItem {
|
||||
id: 1,
|
||||
series_id: 1,
|
||||
series_title: None,
|
||||
series_title: Some("Test Series".to_owned()),
|
||||
episode_ids: vec![Number::from(1)],
|
||||
source_title: "Test Source Title".to_owned(),
|
||||
languages: vec![Some(language())],
|
||||
@@ -299,7 +303,7 @@ pub(in crate::network::sonarr_network) mod test_utils {
|
||||
|
||||
pub fn season() -> Season {
|
||||
Season {
|
||||
title: None,
|
||||
title: Some("Season title".to_owned()),
|
||||
season_number: 1,
|
||||
monitored: true,
|
||||
statistics: Some(season_statistics()),
|
||||
@@ -364,7 +368,7 @@ pub(in crate::network::sonarr_network) mod test_utils {
|
||||
]
|
||||
}
|
||||
|
||||
pub fn release() -> SonarrRelease {
|
||||
pub fn torrent_release() -> SonarrRelease {
|
||||
SonarrRelease {
|
||||
guid: "1234".to_owned(),
|
||||
protocol: "torrent".to_owned(),
|
||||
@@ -383,6 +387,25 @@ pub(in crate::network::sonarr_network) mod test_utils {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn usenet_release() -> SonarrRelease {
|
||||
SonarrRelease {
|
||||
guid: "1234".to_owned(),
|
||||
protocol: "usenet".to_owned(),
|
||||
age: 1,
|
||||
title: HorizontallyScrollableText::from("Test Release"),
|
||||
indexer: "DrunkenSlug".to_owned(),
|
||||
indexer_id: 1,
|
||||
size: 1234,
|
||||
rejected: true,
|
||||
rejections: Some(rejections()),
|
||||
seeders: None,
|
||||
leechers: None,
|
||||
languages: Some(vec![Some(language())]),
|
||||
quality: quality_wrapper(),
|
||||
full_season: false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn root_folder() -> RootFolder {
|
||||
RootFolder {
|
||||
id: 1,
|
||||
@@ -399,4 +422,61 @@ pub(in crate::network::sonarr_network) mod test_utils {
|
||||
"label": "testing"
|
||||
})
|
||||
}
|
||||
|
||||
pub fn log_line() -> &'static str {
|
||||
"2025-12-16 16:40:59 UTC|INFO|ImportListSyncService|No list items to process"
|
||||
}
|
||||
|
||||
pub fn language_profiles_map() -> BiMap<i64, String> {
|
||||
let Language { id, name } = language();
|
||||
|
||||
BiMap::from_iter(vec![(id, name)])
|
||||
}
|
||||
|
||||
pub fn quality_profile_map() -> BiMap<i64, String> {
|
||||
BiMap::from_iter(vec![(6, quality().name)])
|
||||
}
|
||||
|
||||
pub fn tags_map() -> BiMap<i64, String> {
|
||||
BiMap::from_iter(vec![(1, "alex".to_owned())])
|
||||
}
|
||||
|
||||
pub fn task() -> SonarrTask {
|
||||
SonarrTask {
|
||||
name: "Backup".to_owned(),
|
||||
task_name: SonarrTaskName::Backup,
|
||||
interval: 60,
|
||||
last_execution: DateTime::from(DateTime::parse_from_rfc3339("2023-05-20T21:29:16Z").unwrap()),
|
||||
next_execution: DateTime::from(DateTime::parse_from_rfc3339("2023-05-20T22:29:16Z").unwrap()),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn updates() -> ScrollableText {
|
||||
let line_break = "-".repeat(200);
|
||||
ScrollableText::with_string(formatdoc!(
|
||||
"
|
||||
The latest version of Sonarr is already installed
|
||||
|
||||
4.3.2.1 - 2023-04-15 02:02:53 UTC (Currently Installed)
|
||||
{line_break}
|
||||
New:
|
||||
* Cool new thing
|
||||
Fixed:
|
||||
* Some bugs killed
|
||||
|
||||
|
||||
3.2.1.0 - 2023-04-15 02:02:53 UTC (Previously Installed)
|
||||
{line_break}
|
||||
New:
|
||||
* Cool new thing (old)
|
||||
* Other cool new thing (old)
|
||||
|
||||
|
||||
2.1.0 - 2023-04-15 02:02:53 UTC
|
||||
{line_break}
|
||||
Fixed:
|
||||
* Killed bug 1
|
||||
* Fixed bug 2"
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,9 +202,9 @@ impl Network<'_, '_> {
|
||||
.map(|update| {
|
||||
let install_status = if update.installed_on.is_some() {
|
||||
if update.installed {
|
||||
"(Currently Installed)".to_owned()
|
||||
" (Currently Installed)".to_owned()
|
||||
} else {
|
||||
"(Previously Installed)".to_owned()
|
||||
" (Previously Installed)".to_owned()
|
||||
}
|
||||
} else {
|
||||
String::new()
|
||||
@@ -218,7 +218,7 @@ impl Network<'_, '_> {
|
||||
};
|
||||
|
||||
let mut update_info = formatdoc!(
|
||||
"{} - {} {install_status}
|
||||
"{} - {}{install_status}
|
||||
{}",
|
||||
update.version,
|
||||
update.release_date,
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::models::HorizontallyScrollableText;
|
||||
use crate::models::servarr_models::{
|
||||
DiskSpace, HostConfig, LogResponse, QueueEvent, SecurityConfig, Update,
|
||||
};
|
||||
use crate::models::sonarr_models::{SonarrSerdeable, SonarrTask, SonarrTaskName, SystemStatus};
|
||||
use crate::models::{HorizontallyScrollableText, ScrollableText};
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::sonarr_network::SonarrEvent;
|
||||
use crate::network::sonarr_network::sonarr_network_test_utils::test_utils::updates;
|
||||
use chrono::DateTime;
|
||||
use indoc::formatdoc;
|
||||
use pretty_assertions::{assert_eq, assert_str_eq};
|
||||
use serde_json::json;
|
||||
|
||||
@@ -359,32 +359,7 @@ mod tests {
|
||||
},
|
||||
}]);
|
||||
let response: Vec<Update> = serde_json::from_value(updates_json.clone()).unwrap();
|
||||
let line_break = "-".repeat(200);
|
||||
let expected_text = ScrollableText::with_string(formatdoc!(
|
||||
"
|
||||
The latest version of Sonarr is already installed
|
||||
|
||||
4.3.2.1 - 2023-04-15 02:02:53 UTC (Currently Installed)
|
||||
{line_break}
|
||||
New:
|
||||
* Cool new thing
|
||||
Fixed:
|
||||
* Some bugs killed
|
||||
|
||||
|
||||
3.2.1.0 - 2023-04-15 02:02:53 UTC (Previously Installed)
|
||||
{line_break}
|
||||
New:
|
||||
* Cool new thing (old)
|
||||
* Other cool new thing (old)
|
||||
|
||||
|
||||
2.1.0 - 2023-04-15 02:02:53 UTC
|
||||
{line_break}
|
||||
Fixed:
|
||||
* Killed bug 1
|
||||
* Fixed bug 2"
|
||||
));
|
||||
let expected_text = updates();
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(updates_json)
|
||||
.build_for(SonarrEvent::GetUpdates)
|
||||
|
||||
Reference in New Issue
Block a user