feat(network): Support for deleting a series from Sonarr

This commit is contained in:
2024-11-23 12:42:11 -07:00
parent 374819b4f3
commit cac54c5447
5 changed files with 164 additions and 7 deletions
+67 -3
View File
@@ -24,8 +24,8 @@ mod test {
QualityWrapper, QueueEvent, RootFolder, SecurityConfig, Tag, Update,
};
use crate::models::sonarr_models::{
BlocklistItem, DownloadRecord, DownloadsResponse, Episode, EpisodeFile, MediaInfo,
SonarrRelease, SonarrReleaseDownloadBody, SonarrTaskName,
BlocklistItem, DeleteSeriesParams, DownloadRecord, DownloadsResponse, Episode, EpisodeFile,
MediaInfo, SonarrRelease, SonarrReleaseDownloadBody, SonarrTaskName,
};
use crate::models::sonarr_models::{
BlocklistResponse, SonarrHistoryData, SonarrHistoryItem, SonarrHistoryWrapper,
@@ -137,7 +137,12 @@ mod test {
#[rstest]
fn test_resource_series(
#[values(SonarrEvent::ListSeries, SonarrEvent::GetSeriesDetails(None))] event: SonarrEvent,
#[values(
SonarrEvent::ListSeries,
SonarrEvent::GetSeriesDetails(None),
SonarrEvent::DeleteSeries(None)
)]
event: SonarrEvent,
) {
assert_str_eq!(event.resource(), "/series");
}
@@ -577,6 +582,65 @@ mod test {
async_server.assert_async().await;
}
#[tokio::test]
async fn test_handle_delete_series_event() {
let (async_server, app_arc, _server) = mock_servarr_api(
RequestMethod::Delete,
None,
None,
None,
SonarrEvent::DeleteSeries(None),
Some("/1"),
Some("deleteFiles=true&addImportExclusion=true"),
)
.await;
{
let mut app = app_arc.lock().await;
app.data.sonarr_data.series.set_items(vec![series()]);
app.data.sonarr_data.delete_series_files = true;
app.data.sonarr_data.add_list_exclusion = true;
}
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
assert!(network
.handle_sonarr_event(SonarrEvent::DeleteSeries(None))
.await
.is_ok());
async_server.assert_async().await;
assert!(!app_arc.lock().await.data.sonarr_data.delete_series_files);
assert!(!app_arc.lock().await.data.sonarr_data.add_list_exclusion);
}
#[tokio::test]
async fn test_handle_delete_series_event_use_provided_params() {
let (async_server, app_arc, _server) = mock_servarr_api(
RequestMethod::Delete,
None,
None,
None,
SonarrEvent::DeleteSeries(None),
Some("/1"),
Some("deleteFiles=true&addImportExclusion=true"),
)
.await;
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
let delete_series_params = DeleteSeriesParams {
id: 1,
delete_series_files: true,
add_list_exclusion: true,
};
assert!(network
.handle_sonarr_event(SonarrEvent::DeleteSeries(Some(delete_series_params)))
.await
.is_ok());
async_server.assert_async().await;
assert!(!app_arc.lock().await.data.sonarr_data.delete_series_files);
assert!(!app_arc.lock().await.data.sonarr_data.add_list_exclusion);
}
#[tokio::test]
async fn test_handle_delete_sonarr_tag_event() {
let (async_server, app_arc, _server) = mock_servarr_api(