fix(sonarr): Construct and pass edit all indexer settings alongside all EditAllIndexerSettings events when publishing to the networking channel

This commit is contained in:
2024-12-17 23:05:29 -07:00
parent 3e36bcf307
commit 89d106c03e
7 changed files with 66 additions and 90 deletions
+7 -30
View File
@@ -50,7 +50,7 @@ pub enum SonarrEvent {
DeleteSeries(DeleteSeriesParams),
DeleteTag(i64),
DownloadRelease(SonarrReleaseDownloadBody),
EditAllIndexerSettings(Option<IndexerSettings>),
EditAllIndexerSettings(IndexerSettings),
EditIndexer(Option<EditIndexerParams>),
EditSeries(Option<EditSeriesParams>),
GetAllIndexerSettings,
@@ -622,41 +622,18 @@ impl<'a, 'b> Network<'a, 'b> {
.await
}
async fn edit_all_sonarr_indexer_settings(
&mut self,
params: Option<IndexerSettings>,
) -> Result<Value> {
async fn edit_all_sonarr_indexer_settings(&mut self, params: IndexerSettings) -> Result<Value> {
info!("Updating Sonarr indexer settings");
let event = SonarrEvent::EditAllIndexerSettings(None);
let body = if let Some(indexer_settings) = params {
indexer_settings
} else {
self
.app
.lock()
.await
.data
.sonarr_data
.indexer_settings
.as_ref()
.unwrap()
.clone()
};
debug!("Indexer settings body: {body:?}");
let event = SonarrEvent::EditAllIndexerSettings(params.clone());
debug!("Indexer settings body: {params:?}");
let request_props = self
.request_props_from(event, RequestMethod::Put, Some(body), None, None)
.request_props_from(event, RequestMethod::Put, Some(params), None, None)
.await;
let resp = self
self
.handle_request::<IndexerSettings, Value>(request_props, |_, _| {})
.await;
self.app.lock().await.data.sonarr_data.indexer_settings = None;
resp
.await
}
async fn edit_sonarr_indexer(
+3 -43
View File
@@ -141,7 +141,7 @@ mod test {
fn test_resource_all_indexer_settings(
#[values(
SonarrEvent::GetAllIndexerSettings,
SonarrEvent::EditAllIndexerSettings(None)
SonarrEvent::EditAllIndexerSettings(IndexerSettings::default())
)]
event: SonarrEvent,
) {
@@ -758,45 +758,7 @@ mod test {
Some(indexer_settings_json),
None,
None,
SonarrEvent::EditAllIndexerSettings(None),
None,
None,
)
.await;
app_arc.lock().await.data.sonarr_data.indexer_settings = Some(indexer_settings());
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
assert!(network
.handle_sonarr_event(SonarrEvent::EditAllIndexerSettings(None))
.await
.is_ok());
async_server.assert_async().await;
assert!(app_arc
.lock()
.await
.data
.sonarr_data
.indexer_settings
.is_none());
}
#[tokio::test]
async fn test_handle_edit_all_indexer_settings_event_uses_provided_settings() {
let indexer_settings_json = json!({
"id": 1,
"minimumAge": 1,
"maximumSize": 12345,
"retention": 1,
"rssSyncInterval": 60
});
let (async_server, app_arc, _server) = mock_servarr_api(
RequestMethod::Put,
Some(indexer_settings_json),
None,
None,
SonarrEvent::EditAllIndexerSettings(None),
SonarrEvent::EditAllIndexerSettings(indexer_settings()),
None,
None,
)
@@ -805,9 +767,7 @@ mod test {
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
assert!(network
.handle_sonarr_event(SonarrEvent::EditAllIndexerSettings(
Some(indexer_settings())
))
.handle_sonarr_event(SonarrEvent::EditAllIndexerSettings(indexer_settings()))
.await
.is_ok());