test: Updated Rust edition to 2024 and refactored network module tests to be more idiomatic
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
use crate::models::Route;
|
||||
use crate::models::radarr_models::BlocklistResponse;
|
||||
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
||||
use crate::models::Route;
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::{Network, RequestMethod};
|
||||
use anyhow::Result;
|
||||
use log::info;
|
||||
use serde_json::{json, Value};
|
||||
use serde_json::{Value, json};
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "radarr_blocklist_network_tests.rs"]
|
||||
|
||||
@@ -5,16 +5,13 @@ mod tests {
|
||||
use crate::models::radarr_models::BlocklistResponse;
|
||||
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
||||
use crate::models::stateful_table::SortOption;
|
||||
use crate::network::network_tests::test_utils::mock_servarr_api;
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::blocklist_item;
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::radarr_network::RadarrSerdeable;
|
||||
use crate::network::{Network, RequestMethod};
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::blocklist_item;
|
||||
use pretty_assertions::assert_eq;
|
||||
use reqwest::Client;
|
||||
use rstest::rstest;
|
||||
use serde_json::json;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_clear_radarr_blocklist_event() {
|
||||
@@ -33,53 +30,45 @@ mod tests {
|
||||
},
|
||||
];
|
||||
let expected_request_json = json!({ "ids": [1, 2, 3]});
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Delete,
|
||||
Some(expected_request_json),
|
||||
None,
|
||||
None,
|
||||
RadarrEvent::ClearBlocklist,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc
|
||||
let (mock, app, _server) = MockServarrApi::delete()
|
||||
.with_request_body(expected_request_json)
|
||||
.build_for(RadarrEvent::ClearBlocklist)
|
||||
.await;
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.blocklist
|
||||
.set_items(blocklist_items);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::ClearBlocklist)
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::ClearBlocklist)
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_delete_radarr_blocklist_item_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Delete,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
RadarrEvent::DeleteBlocklistItem(1),
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::delete()
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::DeleteBlocklistItem(1))
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::DeleteBlocklistItem(1))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::DeleteBlocklistItem(1))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
@@ -179,17 +168,11 @@ mod tests {
|
||||
..blocklist_item()
|
||||
},
|
||||
];
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(blocklist_json),
|
||||
None,
|
||||
RadarrEvent::GetBlocklist,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.blocklist.sort_asc = true;
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(blocklist_json)
|
||||
.build_for(RadarrEvent::GetBlocklist)
|
||||
.await;
|
||||
app.lock().await.data.radarr_data.blocklist.sort_asc = true;
|
||||
if use_custom_sorting {
|
||||
let cmp_fn = |a: &BlocklistItem, b: &BlocklistItem| {
|
||||
a.source_title
|
||||
@@ -202,7 +185,7 @@ mod tests {
|
||||
name: "Source Title",
|
||||
cmp_fn: Some(cmp_fn),
|
||||
};
|
||||
app_arc
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
@@ -210,19 +193,19 @@ mod tests {
|
||||
.blocklist
|
||||
.sorting(vec![blocklist_sort_option]);
|
||||
}
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::BlocklistResponse(blocklist) = network
|
||||
.handle_radarr_event(RadarrEvent::GetBlocklist)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.blocklist.items,
|
||||
app.lock().await.data.radarr_data.blocklist.items,
|
||||
expected_blocklist
|
||||
);
|
||||
assert!(app_arc.lock().await.data.radarr_data.blocklist.sort_asc);
|
||||
assert!(app.lock().await.data.radarr_data.blocklist.sort_asc);
|
||||
assert_eq!(blocklist, response);
|
||||
}
|
||||
}
|
||||
@@ -302,18 +285,12 @@ mod tests {
|
||||
},
|
||||
},
|
||||
}]});
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(blocklist_json),
|
||||
None,
|
||||
RadarrEvent::GetBlocklist,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.blocklist.sort_asc = true;
|
||||
app_arc
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(blocklist_json)
|
||||
.build_for(RadarrEvent::GetBlocklist)
|
||||
.await;
|
||||
app.lock().await.data.radarr_data.blocklist.sort_asc = true;
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.push_navigation_stack(ActiveRadarrBlock::BlocklistSortPrompt.into());
|
||||
@@ -326,29 +303,24 @@ mod tests {
|
||||
name: "Source Title",
|
||||
cmp_fn: Some(cmp_fn),
|
||||
};
|
||||
app_arc
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.blocklist
|
||||
.sorting(vec![blocklist_sort_option]);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::GetBlocklist)
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::GetBlocklist)
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
assert!(app_arc
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.blocklist
|
||||
.items
|
||||
.is_empty());
|
||||
assert!(app_arc.lock().await.data.radarr_data.blocklist.sort_asc);
|
||||
mock.assert_async().await;
|
||||
assert!(app.lock().await.data.radarr_data.blocklist.items.is_empty());
|
||||
assert!(app.lock().await.data.radarr_data.blocklist.sort_asc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
use crate::models::Route;
|
||||
use crate::models::radarr_models::{Collection, EditCollectionParams};
|
||||
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
||||
use crate::models::servarr_models::CommandBody;
|
||||
use crate::models::Route;
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::{Network, RequestMethod};
|
||||
use anyhow::Result;
|
||||
use log::{debug, info};
|
||||
use serde_json::{json, Value};
|
||||
use serde_json::{Value, json};
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "radarr_collections_network_tests.rs"]
|
||||
|
||||
@@ -5,16 +5,14 @@ mod tests {
|
||||
};
|
||||
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
||||
use crate::models::stateful_table::SortOption;
|
||||
use crate::network::network_tests::test_utils::mock_servarr_api;
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::collection;
|
||||
use crate::network::NetworkResource;
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::{Network, NetworkResource, RequestMethod};
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::collection;
|
||||
use mockito::Matcher;
|
||||
use pretty_assertions::assert_eq;
|
||||
use reqwest::Client;
|
||||
use rstest::rstest;
|
||||
use serde_json::json;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_edit_collection_event() {
|
||||
@@ -64,17 +62,12 @@ mod tests {
|
||||
search_on_add: Some(false),
|
||||
};
|
||||
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(detailed_collection_body),
|
||||
None,
|
||||
RadarrEvent::GetCollections,
|
||||
Some("/123"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let async_edit_server = server
|
||||
let (mock_details, app, mut server) = MockServarrApi::get()
|
||||
.returns(detailed_collection_body)
|
||||
.path("/123")
|
||||
.build_for(RadarrEvent::GetCollections)
|
||||
.await;
|
||||
let mock_edit = server
|
||||
.mock(
|
||||
"PUT",
|
||||
format!(
|
||||
@@ -88,20 +81,22 @@ mod tests {
|
||||
.match_body(Matcher::Json(expected_body))
|
||||
.create_async()
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditCollection(edit_collection_params))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditCollection(edit_collection_params))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_details_server.assert_async().await;
|
||||
async_edit_server.assert_async().await;
|
||||
mock_details.assert_async().await;
|
||||
mock_edit.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_edit_collection_event_defaults_to_previous_values_when_no_params_are_provided(
|
||||
) {
|
||||
async fn test_handle_edit_collection_event_defaults_to_previous_values_when_no_params_are_provided()
|
||||
{
|
||||
let detailed_collection_body = json!({
|
||||
"id": 123,
|
||||
"title": "Test Collection",
|
||||
@@ -140,21 +135,16 @@ mod tests {
|
||||
*expected_body.get_mut("rootFolderPath").unwrap() = json!("/nfs/movies");
|
||||
*expected_body.get_mut("searchOnAdd").unwrap() = json!(true);
|
||||
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(detailed_collection_body),
|
||||
None,
|
||||
RadarrEvent::GetCollections,
|
||||
Some("/123"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (mock_details, app, mut server) = MockServarrApi::get()
|
||||
.returns(detailed_collection_body)
|
||||
.path("/123")
|
||||
.build_for(RadarrEvent::GetCollections)
|
||||
.await;
|
||||
let edit_collection_params = EditCollectionParams {
|
||||
collection_id: 123,
|
||||
..EditCollectionParams::default()
|
||||
};
|
||||
let async_edit_server = server
|
||||
let mock_edit = server
|
||||
.mock(
|
||||
"PUT",
|
||||
format!(
|
||||
@@ -172,15 +162,17 @@ mod tests {
|
||||
collection_id: 123,
|
||||
..EditCollectionParams::default()
|
||||
};
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditCollection(edit_collection_params))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditCollection(edit_collection_params))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_details_server.assert_async().await;
|
||||
async_edit_server.assert_async().await;
|
||||
mock_details.assert_async().await;
|
||||
mock_edit.assert_async().await;
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
@@ -257,17 +249,11 @@ mod tests {
|
||||
..collection()
|
||||
},
|
||||
];
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(collections_json),
|
||||
None,
|
||||
RadarrEvent::GetCollections,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.collections.sort_asc = true;
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(collections_json)
|
||||
.build_for(RadarrEvent::GetCollections)
|
||||
.await;
|
||||
app.lock().await.data.radarr_data.collections.sort_asc = true;
|
||||
if use_custom_sorting {
|
||||
let cmp_fn = |a: &Collection, b: &Collection| {
|
||||
a.title
|
||||
@@ -281,7 +267,7 @@ mod tests {
|
||||
name: "Collection",
|
||||
cmp_fn: Some(cmp_fn),
|
||||
};
|
||||
app_arc
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
@@ -289,19 +275,19 @@ mod tests {
|
||||
.collections
|
||||
.sorting(vec![collection_sort_option]);
|
||||
}
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::Collections(collections) = network
|
||||
.handle_radarr_event(RadarrEvent::GetCollections)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.collections.items,
|
||||
app.lock().await.data.radarr_data.collections.items,
|
||||
expected_collections
|
||||
);
|
||||
assert!(app_arc.lock().await.data.radarr_data.collections.sort_asc);
|
||||
assert!(app.lock().await.data.radarr_data.collections.sort_asc);
|
||||
assert_eq!(collections, response);
|
||||
}
|
||||
}
|
||||
@@ -366,18 +352,12 @@ mod tests {
|
||||
}
|
||||
}],
|
||||
}]);
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(collections_json),
|
||||
None,
|
||||
RadarrEvent::GetCollections,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.collections.sort_asc = true;
|
||||
app_arc
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(collections_json)
|
||||
.build_for(RadarrEvent::GetCollections)
|
||||
.await;
|
||||
app.lock().await.data.radarr_data.collections.sort_asc = true;
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.push_navigation_stack(ActiveRadarrBlock::CollectionsSortPrompt.into());
|
||||
@@ -391,53 +371,54 @@ mod tests {
|
||||
name: "Collection",
|
||||
cmp_fn: Some(cmp_fn),
|
||||
};
|
||||
app_arc
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.collections
|
||||
.sorting(vec![collection_sort_option]);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::GetCollections)
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::GetCollections)
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
assert!(app_arc
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.collections
|
||||
.items
|
||||
.is_empty());
|
||||
assert!(app_arc.lock().await.data.radarr_data.collections.sort_asc);
|
||||
mock.assert_async().await;
|
||||
assert!(
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.collections
|
||||
.items
|
||||
.is_empty()
|
||||
);
|
||||
assert!(app.lock().await.data.radarr_data.collections.sort_asc);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_update_collections_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Post,
|
||||
Some(json!({
|
||||
let (mock, app, _server) = MockServarrApi::post()
|
||||
.with_request_body(json!({
|
||||
"name": "RefreshCollections"
|
||||
})),
|
||||
Some(json!({})),
|
||||
None,
|
||||
RadarrEvent::UpdateCollections,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
}))
|
||||
.returns(json!({}))
|
||||
.build_for(RadarrEvent::UpdateCollections)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::UpdateCollections)
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::UpdateCollections)
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +1,27 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::models::radarr_models::{DownloadsResponse, RadarrSerdeable};
|
||||
use crate::network::network_tests::test_utils::mock_servarr_api;
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::downloads_response;
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::{Network, RequestMethod};
|
||||
use reqwest::Client;
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::downloads_response;
|
||||
use serde_json::json;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_delete_radarr_download_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Delete,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
RadarrEvent::DeleteDownload(1),
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::delete()
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::DeleteDownload(1))
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::DeleteDownload(1))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::DeleteDownload(1))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
@@ -48,26 +41,21 @@ mod tests {
|
||||
});
|
||||
let response: DownloadsResponse =
|
||||
serde_json::from_value(downloads_response_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(downloads_response_json),
|
||||
None,
|
||||
RadarrEvent::GetDownloads(500),
|
||||
None,
|
||||
Some("pageSize=500"),
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(downloads_response_json)
|
||||
.path("?pageSize=500")
|
||||
.build_for(RadarrEvent::GetDownloads(500))
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::DownloadsResponse(downloads) = network
|
||||
.handle_radarr_event(RadarrEvent::GetDownloads(500))
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
pretty_assertions::assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.downloads.items,
|
||||
app.lock().await.data.radarr_data.downloads.items,
|
||||
downloads_response().records
|
||||
);
|
||||
pretty_assertions::assert_eq!(downloads, response);
|
||||
@@ -76,25 +64,22 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_update_radarr_downloads_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Post,
|
||||
Some(json!({
|
||||
let (mock, app, _server) = MockServarrApi::post()
|
||||
.with_request_body(json!({
|
||||
"name": "RefreshMonitoredDownloads"
|
||||
})),
|
||||
Some(json!({})),
|
||||
None,
|
||||
RadarrEvent::UpdateDownloads,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
}))
|
||||
.returns(json!({}))
|
||||
.build_for(RadarrEvent::UpdateDownloads)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::UpdateDownloads)
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::UpdateDownloads)
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::{Network, RequestMethod};
|
||||
use anyhow::Result;
|
||||
use log::{debug, info};
|
||||
use serde_json::{json, Value};
|
||||
use serde_json::{Value, json};
|
||||
|
||||
#[cfg(test)]
|
||||
#[path = "radarr_indexers_network_tests.rs"]
|
||||
|
||||
@@ -1,40 +1,34 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::models::HorizontallyScrollableText;
|
||||
use crate::models::radarr_models::{IndexerSettings, RadarrSerdeable};
|
||||
use crate::models::servarr_data::modals::IndexerTestResultModalItem;
|
||||
use crate::models::servarr_models::{EditIndexerParams, Indexer, IndexerTestResult};
|
||||
use crate::models::HorizontallyScrollableText;
|
||||
use crate::network::network_tests::test_utils::mock_servarr_api;
|
||||
use crate::network::NetworkResource;
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::{
|
||||
indexer, indexer_settings,
|
||||
};
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::{Network, NetworkResource, RequestMethod};
|
||||
use bimap::BiMap;
|
||||
use mockito::Matcher;
|
||||
use pretty_assertions::assert_eq;
|
||||
use reqwest::Client;
|
||||
use serde_json::json;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_delete_radarr_indexer_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Delete,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
RadarrEvent::DeleteIndexer(1),
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (async_server, app, _server) = MockServarrApi::delete()
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::DeleteIndexer(1))
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::DeleteIndexer(1))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::DeleteIndexer(1))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
}
|
||||
@@ -52,22 +46,18 @@ mod tests {
|
||||
"whitelistedHardcodedSubs": "",
|
||||
"id": 1
|
||||
});
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Put,
|
||||
Some(indexer_settings_json),
|
||||
None,
|
||||
None,
|
||||
RadarrEvent::EditAllIndexerSettings(indexer_settings()),
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (async_server, app, _server) = MockServarrApi::put()
|
||||
.with_request_body(indexer_settings_json)
|
||||
.build_for(RadarrEvent::EditAllIndexerSettings(indexer_settings()))
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditAllIndexerSettings(indexer_settings()))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditAllIndexerSettings(indexer_settings()))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
}
|
||||
@@ -133,16 +123,11 @@ mod tests {
|
||||
priority: Some(0),
|
||||
..EditIndexerParams::default()
|
||||
};
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_details_json),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_details_server, app, mut server) = MockServarrApi::get()
|
||||
.returns(indexer_details_json)
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let async_edit_server = server
|
||||
.mock(
|
||||
"PUT",
|
||||
@@ -157,22 +142,24 @@ mod tests {
|
||||
.match_body(Matcher::Json(expected_indexer_edit_body_json))
|
||||
.create_async()
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.tags_map =
|
||||
app.lock().await.data.radarr_data.tags_map =
|
||||
BiMap::from_iter([(1, "usenet".to_owned()), (2, "testing".to_owned())]);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_details_server.assert_async().await;
|
||||
async_edit_server.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_edit_radarr_indexer_event_does_not_overwrite_tags_vec_if_tag_input_string_is_none(
|
||||
) {
|
||||
async fn test_handle_edit_radarr_indexer_event_does_not_overwrite_tags_vec_if_tag_input_string_is_none()
|
||||
{
|
||||
let indexer_details_json = json!({
|
||||
"enableRss": true,
|
||||
"enableAutomaticSearch": true,
|
||||
@@ -232,16 +219,11 @@ mod tests {
|
||||
priority: Some(0),
|
||||
..EditIndexerParams::default()
|
||||
};
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_details_json),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_details_server, app, mut server) = MockServarrApi::get()
|
||||
.returns(indexer_details_json)
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let async_edit_server = server
|
||||
.mock(
|
||||
"PUT",
|
||||
@@ -256,22 +238,24 @@ mod tests {
|
||||
.match_body(Matcher::Json(expected_indexer_edit_body_json))
|
||||
.create_async()
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.tags_map =
|
||||
app.lock().await.data.radarr_data.tags_map =
|
||||
BiMap::from_iter([(1, "usenet".to_owned()), (2, "testing".to_owned())]);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_details_server.assert_async().await;
|
||||
async_edit_server.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_edit_radarr_indexer_event_does_not_add_seed_ratio_when_seed_ratio_field_is_none_in_details(
|
||||
) {
|
||||
async fn test_handle_edit_radarr_indexer_event_does_not_add_seed_ratio_when_seed_ratio_field_is_none_in_details()
|
||||
{
|
||||
let indexer_details_json = json!({
|
||||
"enableRss": true,
|
||||
"enableAutomaticSearch": true,
|
||||
@@ -323,16 +307,11 @@ mod tests {
|
||||
priority: Some(0),
|
||||
..EditIndexerParams::default()
|
||||
};
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_details_json),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_details_server, app, mut server) = MockServarrApi::get()
|
||||
.returns(indexer_details_json)
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let async_edit_server = server
|
||||
.mock(
|
||||
"PUT",
|
||||
@@ -347,22 +326,24 @@ mod tests {
|
||||
.match_body(Matcher::Json(expected_indexer_edit_body_json))
|
||||
.create_async()
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.tags_map =
|
||||
app.lock().await.data.radarr_data.tags_map =
|
||||
BiMap::from_iter([(1, "usenet".to_owned()), (2, "testing".to_owned())]);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_details_server.assert_async().await;
|
||||
async_edit_server.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_edit_radarr_indexer_event_populates_the_seed_ratio_value_when_seed_ratio_field_is_present_in_details(
|
||||
) {
|
||||
async fn test_handle_edit_radarr_indexer_event_populates_the_seed_ratio_value_when_seed_ratio_field_is_present_in_details()
|
||||
{
|
||||
let indexer_details_json = json!({
|
||||
"enableRss": true,
|
||||
"enableAutomaticSearch": true,
|
||||
@@ -421,16 +402,11 @@ mod tests {
|
||||
priority: Some(0),
|
||||
..EditIndexerParams::default()
|
||||
};
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_details_json),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_details_server, app, mut server) = MockServarrApi::get()
|
||||
.returns(indexer_details_json)
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let async_edit_server = server
|
||||
.mock(
|
||||
"PUT",
|
||||
@@ -445,14 +421,16 @@ mod tests {
|
||||
.match_body(Matcher::Json(expected_indexer_edit_body_json))
|
||||
.create_async()
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.tags_map =
|
||||
app.lock().await.data.radarr_data.tags_map =
|
||||
BiMap::from_iter([(1, "usenet".to_owned()), (2, "testing".to_owned())]);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_details_server.assert_async().await;
|
||||
async_edit_server.assert_async().await;
|
||||
@@ -488,16 +466,11 @@ mod tests {
|
||||
..EditIndexerParams::default()
|
||||
};
|
||||
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_details_json.clone()),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_details_server, app, mut server) = MockServarrApi::get()
|
||||
.returns(indexer_details_json.clone())
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let async_edit_server = server
|
||||
.mock(
|
||||
"PUT",
|
||||
@@ -512,12 +485,14 @@ mod tests {
|
||||
.match_body(Matcher::Json(indexer_details_json))
|
||||
.create_async()
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_details_server.assert_async().await;
|
||||
async_edit_server.assert_async().await;
|
||||
@@ -577,16 +552,11 @@ mod tests {
|
||||
..EditIndexerParams::default()
|
||||
};
|
||||
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_details_json),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_details_server, app, mut server) = MockServarrApi::get()
|
||||
.returns(indexer_details_json)
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let async_edit_server = server
|
||||
.mock(
|
||||
"PUT",
|
||||
@@ -601,12 +571,14 @@ mod tests {
|
||||
.match_body(Matcher::Json(expected_edit_indexer_body))
|
||||
.create_async()
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::EditIndexer(edit_indexer_params))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_details_server.assert_async().await;
|
||||
async_edit_server.assert_async().await;
|
||||
@@ -645,17 +617,11 @@ mod tests {
|
||||
"id": 1
|
||||
}]);
|
||||
let response: Vec<Indexer> = serde_json::from_value(indexers_response_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexers_response_json),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (async_server, app, _server) = MockServarrApi::get()
|
||||
.returns(indexers_response_json)
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::Indexers(indexers) = network
|
||||
.handle_radarr_event(RadarrEvent::GetIndexers)
|
||||
@@ -664,7 +630,7 @@ mod tests {
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.indexers.items,
|
||||
app.lock().await.data.radarr_data.indexers.items,
|
||||
vec![indexer()]
|
||||
);
|
||||
assert_eq!(indexers, response);
|
||||
@@ -686,17 +652,11 @@ mod tests {
|
||||
});
|
||||
let response: IndexerSettings =
|
||||
serde_json::from_value(indexer_settings_response_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_settings_response_json),
|
||||
None,
|
||||
RadarrEvent::GetAllIndexerSettings,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (async_server, app, _server) = MockServarrApi::get()
|
||||
.returns(indexer_settings_response_json)
|
||||
.build_for(RadarrEvent::GetAllIndexerSettings)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::IndexerSettings(settings) = network
|
||||
.handle_radarr_event(RadarrEvent::GetAllIndexerSettings)
|
||||
@@ -705,7 +665,7 @@ mod tests {
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.indexer_settings,
|
||||
app.lock().await.data.radarr_data.indexer_settings,
|
||||
Some(indexer_settings())
|
||||
);
|
||||
assert_eq!(settings, response);
|
||||
@@ -725,27 +685,23 @@ mod tests {
|
||||
"whitelistedHardcodedSubs": "",
|
||||
"id": 1
|
||||
});
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_settings_response_json),
|
||||
None,
|
||||
RadarrEvent::GetAllIndexerSettings,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.indexer_settings = Some(IndexerSettings::default());
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (async_server, app, _server) = MockServarrApi::get()
|
||||
.returns(indexer_settings_response_json)
|
||||
.build_for(RadarrEvent::GetAllIndexerSettings)
|
||||
.await;
|
||||
app.lock().await.data.radarr_data.indexer_settings = Some(IndexerSettings::default());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::GetAllIndexerSettings)
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::GetAllIndexerSettings)
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.indexer_settings,
|
||||
app.lock().await.data.radarr_data.indexer_settings,
|
||||
Some(IndexerSettings::default())
|
||||
);
|
||||
}
|
||||
@@ -781,16 +737,11 @@ mod tests {
|
||||
"errorMessage": "test failure",
|
||||
"severity": "error"
|
||||
}]);
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_details_json.clone()),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_details_server, app, mut server) = MockServarrApi::get()
|
||||
.returns(indexer_details_json.clone())
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let async_test_server = server
|
||||
.mock(
|
||||
"POST",
|
||||
@@ -802,7 +753,7 @@ mod tests {
|
||||
.with_body(response_json.to_string())
|
||||
.create_async()
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::Value(value) = network
|
||||
.handle_radarr_event(RadarrEvent::TestIndexer(1))
|
||||
@@ -812,7 +763,7 @@ mod tests {
|
||||
async_details_server.assert_async().await;
|
||||
async_test_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.indexer_test_errors,
|
||||
app.lock().await.data.radarr_data.indexer_test_errors,
|
||||
Some("\"test failure\"".to_owned())
|
||||
);
|
||||
assert_eq!(value, response_json)
|
||||
@@ -843,16 +794,11 @@ mod tests {
|
||||
"tags": [1],
|
||||
"id": 1
|
||||
});
|
||||
let (async_details_server, app_arc, mut server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(indexer_details_json.clone()),
|
||||
None,
|
||||
RadarrEvent::GetIndexers,
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_details_server, app, mut server) = MockServarrApi::get()
|
||||
.returns(indexer_details_json.clone())
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::GetIndexers)
|
||||
.await;
|
||||
let async_test_server = server
|
||||
.mock(
|
||||
"POST",
|
||||
@@ -864,7 +810,7 @@ mod tests {
|
||||
.with_body("{}")
|
||||
.create_async()
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::Value(value) = network
|
||||
.handle_radarr_event(RadarrEvent::TestIndexer(1))
|
||||
@@ -874,7 +820,7 @@ mod tests {
|
||||
async_details_server.assert_async().await;
|
||||
async_test_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.indexer_test_errors,
|
||||
app.lock().await.data.radarr_data.indexer_test_errors,
|
||||
Some(String::new())
|
||||
);
|
||||
assert_eq!(value, json!({}));
|
||||
@@ -930,24 +876,19 @@ mod tests {
|
||||
]
|
||||
}]);
|
||||
let response: Vec<IndexerTestResult> = serde_json::from_value(response_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Post,
|
||||
None,
|
||||
Some(response_json),
|
||||
Some(400),
|
||||
RadarrEvent::TestAllIndexers,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc
|
||||
let (async_server, app, _server) = MockServarrApi::post()
|
||||
.returns(response_json)
|
||||
.status(400)
|
||||
.build_for(RadarrEvent::TestAllIndexers)
|
||||
.await;
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.indexers
|
||||
.set_items(indexers);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::IndexerTestResults(results) = network
|
||||
.handle_radarr_event(RadarrEvent::TestAllIndexers)
|
||||
@@ -955,15 +896,17 @@ mod tests {
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert!(app_arc
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.indexer_test_all_results
|
||||
.is_some());
|
||||
assert!(
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.indexer_test_all_results
|
||||
.is_some()
|
||||
);
|
||||
assert_eq!(
|
||||
app_arc
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
|
||||
@@ -13,7 +13,7 @@ use crate::utils::{convert_runtime, convert_to_gb};
|
||||
use anyhow::Result;
|
||||
use indoc::formatdoc;
|
||||
use log::{debug, info, warn};
|
||||
use serde_json::{json, Value};
|
||||
use serde_json::{Value, json};
|
||||
use urlencoding::encode;
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -53,7 +53,9 @@ impl Network<'_, '_> {
|
||||
delete_movie_files,
|
||||
add_list_exclusion,
|
||||
} = delete_movie_params;
|
||||
info!("Deleting Radarr movie with ID: {id} with deleteFiles={delete_movie_files} and addImportExclusion={add_list_exclusion}");
|
||||
info!(
|
||||
"Deleting Radarr movie with ID: {id} with deleteFiles={delete_movie_files} and addImportExclusion={add_list_exclusion}"
|
||||
);
|
||||
|
||||
let request_props = self
|
||||
.request_props_from(
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@ use anyhow::Result;
|
||||
use std::fmt::Debug;
|
||||
|
||||
use log::info;
|
||||
use serde_json::{json, Value};
|
||||
use serde_json::{Value, json};
|
||||
|
||||
use crate::models::radarr_models::{
|
||||
AddMovieBody, DeleteMovieParams, EditCollectionParams, EditMovieParams, IndexerSettings,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#[cfg(test)]
|
||||
pub(in crate::network::radarr_network) mod test_utils {
|
||||
use crate::models::HorizontallyScrollableText;
|
||||
use crate::models::radarr_models::{
|
||||
AddMovieSearchResult, BlocklistItem, BlocklistItemMovie, Collection, CollectionMovie, Credit,
|
||||
CreditType, DownloadRecord, DownloadsResponse, IndexerSettings, MediaInfo, MinimumAvailability,
|
||||
@@ -8,9 +9,8 @@ pub(in crate::network::radarr_network) mod test_utils {
|
||||
use crate::models::servarr_models::{
|
||||
Indexer, IndexerField, Language, Quality, QualityWrapper, RootFolder,
|
||||
};
|
||||
use crate::models::HorizontallyScrollableText;
|
||||
use chrono::DateTime;
|
||||
use serde_json::{json, Number};
|
||||
use serde_json::{Number, Value, json};
|
||||
|
||||
pub const MOVIE_JSON: &str = r#"{
|
||||
"id": 1,
|
||||
@@ -378,4 +378,18 @@ pub(in crate::network::radarr_network) mod test_utils {
|
||||
..IndexerSettings::default()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn tag() -> Value {
|
||||
json!({
|
||||
"id": 3,
|
||||
"label": "testing"
|
||||
})
|
||||
}
|
||||
|
||||
pub fn quality_profile() -> Value {
|
||||
json!({
|
||||
"id": 2222,
|
||||
"name": "HD - 1080p"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::super::*;
|
||||
use crate::App;
|
||||
use crate::models::radarr_models::{
|
||||
EditCollectionParams, EditMovieParams, IndexerSettings, RadarrTaskName,
|
||||
};
|
||||
use crate::models::servarr_data::radarr::modals::EditMovieModal;
|
||||
use crate::models::servarr_models::EditIndexerParams;
|
||||
use crate::network::network_tests::test_utils::mock_servarr_api;
|
||||
use crate::App;
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::{
|
||||
quality_profile, tag,
|
||||
};
|
||||
use bimap::BiMap;
|
||||
use pretty_assertions::{assert_eq, assert_str_eq};
|
||||
use reqwest::Client;
|
||||
use rstest::rstest;
|
||||
use serde_json::json;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::Mutex;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
#[rstest]
|
||||
fn test_resource_movie(
|
||||
@@ -161,146 +162,129 @@ mod test {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_get_radarr_healthcheck_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
RadarrEvent::HealthCheck,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.build_for(RadarrEvent::HealthCheck)
|
||||
.await;
|
||||
|
||||
let mut network = test_network(&app);
|
||||
|
||||
let _ = network.handle_radarr_event(RadarrEvent::HealthCheck).await;
|
||||
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_get_radarr_quality_profiles_event() {
|
||||
let quality_profile_json = json!([{
|
||||
"id": 2222,
|
||||
"name": "HD - 1080p"
|
||||
}]);
|
||||
let response: Vec<QualityProfile> =
|
||||
serde_json::from_value(quality_profile_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(quality_profile_json),
|
||||
None,
|
||||
RadarrEvent::GetQualityProfiles,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let expected: Vec<QualityProfile> = vec![QualityProfile {
|
||||
id: 2222,
|
||||
name: "HD - 1080p".to_owned(),
|
||||
}];
|
||||
|
||||
if let RadarrSerdeable::QualityProfiles(quality_profiles) = network
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(json!([quality_profile()]))
|
||||
.build_for(RadarrEvent::GetQualityProfiles)
|
||||
.await;
|
||||
|
||||
let mut network = test_network(&app);
|
||||
|
||||
let result = network
|
||||
.handle_radarr_event(RadarrEvent::GetQualityProfiles)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.quality_profile_map,
|
||||
BiMap::from_iter([(2222i64, "HD - 1080p".to_owned())])
|
||||
);
|
||||
assert_eq!(quality_profiles, response);
|
||||
}
|
||||
.await;
|
||||
|
||||
mock.assert_async().await;
|
||||
|
||||
let RadarrSerdeable::QualityProfiles(quality_profiles) = result.unwrap() else {
|
||||
panic!("Expected QualityProfiles variant");
|
||||
};
|
||||
assert_eq!(quality_profiles, expected);
|
||||
assert_eq!(
|
||||
app.lock().await.data.radarr_data.quality_profile_map,
|
||||
BiMap::from_iter([(2222i64, "HD - 1080p".to_owned())])
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_get_radarr_tags_event() {
|
||||
let tags_json = json!([{
|
||||
"id": 2222,
|
||||
"label": "usenet"
|
||||
}]);
|
||||
let response: Vec<Tag> = serde_json::from_value(tags_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(tags_json),
|
||||
None,
|
||||
RadarrEvent::GetTags,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let expected: Vec<Tag> = vec![Tag {
|
||||
id: 2222,
|
||||
label: "usenet".to_owned(),
|
||||
}];
|
||||
|
||||
if let RadarrSerdeable::Tags(tags) = network
|
||||
.handle_radarr_event(RadarrEvent::GetTags)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.tags_map,
|
||||
BiMap::from_iter([(2222i64, "usenet".to_owned())])
|
||||
);
|
||||
assert_eq!(tags, response);
|
||||
}
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(json!([{
|
||||
"id": 2222,
|
||||
"label": "usenet"
|
||||
}]))
|
||||
.build_for(RadarrEvent::GetTags)
|
||||
.await;
|
||||
|
||||
let mut network = test_network(&app);
|
||||
|
||||
let result = network.handle_radarr_event(RadarrEvent::GetTags).await;
|
||||
|
||||
mock.assert_async().await;
|
||||
|
||||
let RadarrSerdeable::Tags(tags) = result.unwrap() else {
|
||||
panic!("Expected Tags variant");
|
||||
};
|
||||
assert_eq!(tags, expected);
|
||||
assert_eq!(
|
||||
app.lock().await.data.radarr_data.tags_map,
|
||||
BiMap::from_iter([(2222i64, "usenet".to_owned())])
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_add_radarr_tag() {
|
||||
let tag_json = json!({ "id": 3, "label": "testing" });
|
||||
let response: Tag = serde_json::from_value(tag_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Post,
|
||||
Some(json!({ "label": "testing" })),
|
||||
Some(tag_json),
|
||||
None,
|
||||
RadarrEvent::AddTag(String::new()),
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.data.radarr_data.tags_map =
|
||||
BiMap::from_iter([(1, "usenet".to_owned()), (2, "test".to_owned())]);
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let expected = Tag {
|
||||
id: 3,
|
||||
label: "testing".to_owned(),
|
||||
};
|
||||
|
||||
if let RadarrSerdeable::Tag(tag) = network
|
||||
let (mock, app, _server) = MockServarrApi::post()
|
||||
.with_request_body(json!({ "label": "testing" }))
|
||||
.returns(tag())
|
||||
.build_for(RadarrEvent::AddTag(String::new()))
|
||||
.await;
|
||||
|
||||
app.lock().await.data.radarr_data.tags_map =
|
||||
BiMap::from_iter([(1, "usenet".to_owned()), (2, "test".to_owned())]);
|
||||
|
||||
let mut network = test_network(&app);
|
||||
|
||||
let result = network
|
||||
.handle_radarr_event(RadarrEvent::AddTag("testing".to_owned()))
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.tags_map,
|
||||
BiMap::from_iter([
|
||||
(1, "usenet".to_owned()),
|
||||
(2, "test".to_owned()),
|
||||
(3, "testing".to_owned())
|
||||
])
|
||||
);
|
||||
assert_eq!(tag, response);
|
||||
}
|
||||
.await;
|
||||
|
||||
mock.assert_async().await;
|
||||
|
||||
let RadarrSerdeable::Tag(tag) = result.unwrap() else {
|
||||
panic!("Expected Tag variant");
|
||||
};
|
||||
assert_eq!(tag, expected);
|
||||
assert_eq!(
|
||||
app.lock().await.data.radarr_data.tags_map,
|
||||
BiMap::from_iter([
|
||||
(1, "usenet".to_owned()),
|
||||
(2, "test".to_owned()),
|
||||
(3, "testing".to_owned())
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_delete_radarr_tag_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Delete,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
RadarrEvent::DeleteTag(1),
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::delete()
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::DeleteTag(1))
|
||||
.await;
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::DeleteTag(1))
|
||||
.await
|
||||
.is_ok());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
async_server.assert_async().await;
|
||||
let result = network.handle_radarr_event(RadarrEvent::DeleteTag(1)).await;
|
||||
|
||||
mock.assert_async().await;
|
||||
assert!(result.is_ok());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
@@ -315,7 +299,7 @@ mod test {
|
||||
(3, "hi".to_owned()),
|
||||
]);
|
||||
}
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app_arc);
|
||||
|
||||
assert_eq!(
|
||||
network.extract_and_add_radarr_tag_ids_vec(tags).await,
|
||||
@@ -325,34 +309,29 @@ mod test {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_extract_and_add_radarr_tag_ids_vec_add_missing_tags_first() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Post,
|
||||
Some(json!({ "label": "TESTING" })),
|
||||
Some(json!({ "id": 3, "label": "testing" })),
|
||||
None,
|
||||
RadarrEvent::GetTags,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let (async_server, app, _server) = MockServarrApi::post()
|
||||
.with_request_body(json!({ "label": "TESTING" }))
|
||||
.returns(json!({ "id": 3, "label": "testing" }))
|
||||
.build_for(RadarrEvent::GetTags)
|
||||
.await;
|
||||
let tags = "usenet, test, TESTING";
|
||||
{
|
||||
let mut app = app_arc.lock().await;
|
||||
app.data.radarr_data.edit_movie_modal = Some(EditMovieModal {
|
||||
let mut app_guard = app.lock().await;
|
||||
app_guard.data.radarr_data.edit_movie_modal = Some(EditMovieModal {
|
||||
tags: tags.into(),
|
||||
..EditMovieModal::default()
|
||||
});
|
||||
app.data.radarr_data.tags_map =
|
||||
app_guard.data.radarr_data.tags_map =
|
||||
BiMap::from_iter([(1, "usenet".to_owned()), (2, "test".to_owned())]);
|
||||
}
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
let tag_ids_vec = network.extract_and_add_radarr_tag_ids_vec(tags).await;
|
||||
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(tag_ids_vec, vec![1, 2, 3]);
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.tags_map,
|
||||
app.lock().await.data.radarr_data.tags_map,
|
||||
BiMap::from_iter([
|
||||
(1, "usenet".to_owned()),
|
||||
(2, "test".to_owned()),
|
||||
|
||||
@@ -2,62 +2,52 @@
|
||||
mod tests {
|
||||
use crate::models::radarr_models::RadarrSerdeable;
|
||||
use crate::models::servarr_models::{AddRootFolderBody, RootFolder};
|
||||
use crate::network::network_tests::test_utils::mock_servarr_api;
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::root_folder;
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::{Network, RequestMethod};
|
||||
use crate::network::radarr_network::radarr_network_test_utils::test_utils::root_folder;
|
||||
use pretty_assertions::assert_eq;
|
||||
use reqwest::Client;
|
||||
use serde_json::json;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_add_radarr_root_folder_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Post,
|
||||
Some(json!({
|
||||
let (mock, app, _server) = MockServarrApi::post()
|
||||
.with_request_body(json!({
|
||||
"path": "/nfs/test"
|
||||
})),
|
||||
Some(json!({})),
|
||||
None,
|
||||
RadarrEvent::AddRootFolder(AddRootFolderBody::default()),
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
}))
|
||||
.returns(json!({}))
|
||||
.build_for(RadarrEvent::AddRootFolder(AddRootFolderBody::default()))
|
||||
.await;
|
||||
let add_root_folder_body = AddRootFolderBody {
|
||||
path: "/nfs/test".to_owned(),
|
||||
};
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::AddRootFolder(add_root_folder_body))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::AddRootFolder(add_root_folder_body))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_delete_radarr_root_folder_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Delete,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
RadarrEvent::DeleteRootFolder(1),
|
||||
Some("/1"),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::delete()
|
||||
.path("/1")
|
||||
.build_for(RadarrEvent::DeleteRootFolder(1))
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
assert!(network
|
||||
.handle_radarr_event(RadarrEvent::DeleteRootFolder(1))
|
||||
.await
|
||||
.is_ok());
|
||||
assert!(
|
||||
network
|
||||
.handle_radarr_event(RadarrEvent::DeleteRootFolder(1))
|
||||
.await
|
||||
.is_ok()
|
||||
);
|
||||
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
@@ -69,26 +59,20 @@ mod tests {
|
||||
"freeSpace": 219902325555200u64,
|
||||
}]);
|
||||
let response: Vec<RootFolder> = serde_json::from_value(root_folder_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(root_folder_json),
|
||||
None,
|
||||
RadarrEvent::GetRootFolders,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(root_folder_json)
|
||||
.build_for(RadarrEvent::GetRootFolders)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::RootFolders(root_folders) = network
|
||||
.handle_radarr_event(RadarrEvent::GetRootFolders)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.root_folders.items,
|
||||
app.lock().await.data.radarr_data.root_folders.items,
|
||||
vec![root_folder()]
|
||||
);
|
||||
assert_eq!(root_folders, response);
|
||||
|
||||
@@ -5,22 +5,17 @@ mod tests {
|
||||
DiskSpace, HostConfig, LogResponse, QueueEvent, SecurityConfig, Update,
|
||||
};
|
||||
use crate::models::{HorizontallyScrollableText, ScrollableText};
|
||||
use crate::network::network_tests::test_utils::mock_servarr_api;
|
||||
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
|
||||
use crate::network::radarr_network::RadarrEvent;
|
||||
use crate::network::{Network, RequestMethod};
|
||||
use chrono::DateTime;
|
||||
use indoc::formatdoc;
|
||||
use pretty_assertions::{assert_eq, assert_str_eq};
|
||||
use reqwest::Client;
|
||||
use serde_json::json;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_get_radarr_diskspace_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(json!([
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(json!([
|
||||
{
|
||||
"freeSpace": 1111,
|
||||
"totalSpace": 2222,
|
||||
@@ -29,14 +24,10 @@ mod tests {
|
||||
"freeSpace": 3333,
|
||||
"totalSpace": 4444
|
||||
}
|
||||
])),
|
||||
None,
|
||||
RadarrEvent::GetDiskSpace,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
]))
|
||||
.build_for(RadarrEvent::GetDiskSpace)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
let disk_space_vec = vec![
|
||||
DiskSpace {
|
||||
free_space: 1111,
|
||||
@@ -53,9 +44,9 @@ mod tests {
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.disk_space_vec,
|
||||
app.lock().await.data.radarr_data.disk_space_vec,
|
||||
disk_space_vec
|
||||
);
|
||||
assert_eq!(disk_space, disk_space_vec);
|
||||
@@ -76,24 +67,18 @@ mod tests {
|
||||
"sslCertPassword": "test"
|
||||
});
|
||||
let response: HostConfig = serde_json::from_value(host_config_response.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(host_config_response),
|
||||
None,
|
||||
RadarrEvent::GetHostConfig,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(host_config_response)
|
||||
.build_for(RadarrEvent::GetHostConfig)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::HostConfig(host_config) = network
|
||||
.handle_radarr_event(RadarrEvent::GetHostConfig)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(host_config, response);
|
||||
}
|
||||
}
|
||||
@@ -131,37 +116,31 @@ mod tests {
|
||||
]
|
||||
});
|
||||
let response: LogResponse = serde_json::from_value(logs_response_json.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(logs_response_json),
|
||||
None,
|
||||
RadarrEvent::GetLogs(500),
|
||||
None,
|
||||
Some("pageSize=500&sortDirection=descending&sortKey=time"),
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(logs_response_json)
|
||||
.query("pageSize=500&sortDirection=descending&sortKey=time")
|
||||
.build_for(RadarrEvent::GetLogs(500))
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::LogResponse(logs) = network
|
||||
.handle_radarr_event(RadarrEvent::GetLogs(500))
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.logs.items,
|
||||
expected_logs
|
||||
mock.assert_async().await;
|
||||
assert_eq!(app.lock().await.data.radarr_data.logs.items, expected_logs);
|
||||
assert!(
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.logs
|
||||
.current_selection()
|
||||
.text
|
||||
.contains("INFO")
|
||||
);
|
||||
assert!(app_arc
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.radarr_data
|
||||
.logs
|
||||
.current_selection()
|
||||
.text
|
||||
.contains("INFO"));
|
||||
assert_eq!(logs, response);
|
||||
}
|
||||
}
|
||||
@@ -191,26 +170,20 @@ mod tests {
|
||||
trigger: "scheduled".to_owned(),
|
||||
};
|
||||
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(queued_events_json),
|
||||
None,
|
||||
RadarrEvent::GetQueuedEvents,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(queued_events_json)
|
||||
.build_for(RadarrEvent::GetQueuedEvents)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::QueueEvents(events) = network
|
||||
.handle_radarr_event(RadarrEvent::GetQueuedEvents)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.queued_events.items,
|
||||
app.lock().await.data.radarr_data.queued_events.items,
|
||||
vec![expected_event]
|
||||
);
|
||||
assert_eq!(events, response);
|
||||
@@ -229,44 +202,32 @@ mod tests {
|
||||
});
|
||||
let response: SecurityConfig =
|
||||
serde_json::from_value(security_config_response.clone()).unwrap();
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(security_config_response),
|
||||
None,
|
||||
RadarrEvent::GetSecurityConfig,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(security_config_response)
|
||||
.build_for(RadarrEvent::GetSecurityConfig)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::SecurityConfig(security_config) = network
|
||||
.handle_radarr_event(RadarrEvent::GetSecurityConfig)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(security_config, response);
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_get_radarr_status_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(json!({
|
||||
let (async_server, app, _server) = MockServarrApi::get()
|
||||
.returns(json!({
|
||||
"version": "v1",
|
||||
"startTime": "2023-02-25T20:16:43Z"
|
||||
})),
|
||||
None,
|
||||
RadarrEvent::GetStatus,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
}))
|
||||
.build_for(RadarrEvent::GetStatus)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
let date_time = DateTime::from(DateTime::parse_from_rfc3339("2023-02-25T20:16:43Z").unwrap());
|
||||
|
||||
if let RadarrSerdeable::SystemStatus(status) = network
|
||||
@@ -275,8 +236,8 @@ mod tests {
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_str_eq!(app_arc.lock().await.data.radarr_data.version, "v1");
|
||||
assert_eq!(app_arc.lock().await.data.radarr_data.start_time, date_time);
|
||||
assert_str_eq!(app.lock().await.data.radarr_data.version, "v1");
|
||||
assert_eq!(app.lock().await.data.radarr_data.start_time, date_time);
|
||||
assert_eq!(
|
||||
status,
|
||||
SystemStatus {
|
||||
@@ -356,17 +317,11 @@ mod tests {
|
||||
* Killed bug 1
|
||||
* Fixed bug 2"
|
||||
));
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(updates_json),
|
||||
None,
|
||||
RadarrEvent::GetUpdates,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (async_server, app, _server) = MockServarrApi::get()
|
||||
.returns(updates_json)
|
||||
.build_for(RadarrEvent::GetUpdates)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::Updates(updates) = network
|
||||
.handle_radarr_event(RadarrEvent::GetUpdates)
|
||||
@@ -375,7 +330,7 @@ mod tests {
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_str_eq!(
|
||||
app_arc.lock().await.data.radarr_data.updates.get_text(),
|
||||
app.lock().await.data.radarr_data.updates.get_text(),
|
||||
expected_text.get_text()
|
||||
);
|
||||
assert_eq!(updates, response);
|
||||
@@ -420,17 +375,11 @@ mod tests {
|
||||
last_duration: "00:00:00.5111547".to_owned(),
|
||||
},
|
||||
];
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(tasks_json),
|
||||
None,
|
||||
RadarrEvent::GetTasks,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (async_server, app, _server) = MockServarrApi::get()
|
||||
.returns(tasks_json)
|
||||
.build_for(RadarrEvent::GetTasks)
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::Tasks(tasks) = network
|
||||
.handle_radarr_event(RadarrEvent::GetTasks)
|
||||
@@ -439,7 +388,7 @@ mod tests {
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.radarr_data.tasks.items,
|
||||
app.lock().await.data.radarr_data.tasks.items,
|
||||
expected_tasks
|
||||
);
|
||||
assert_eq!(tasks, response);
|
||||
@@ -449,19 +398,16 @@ mod tests {
|
||||
#[tokio::test]
|
||||
async fn test_handle_start_radarr_task_event() {
|
||||
let response = json!({ "test": "test"});
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Post,
|
||||
Some(json!({
|
||||
let (async_server, app, _server) = MockServarrApi::post()
|
||||
.with_request_body(json!({
|
||||
"name": "ApplicationCheckUpdate"
|
||||
})),
|
||||
Some(response.clone()),
|
||||
None,
|
||||
RadarrEvent::StartTask(RadarrTaskName::ApplicationCheckUpdate),
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
}))
|
||||
.returns(response.clone())
|
||||
.build_for(RadarrEvent::StartTask(
|
||||
RadarrTaskName::ApplicationCheckUpdate,
|
||||
))
|
||||
.await;
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let RadarrSerdeable::Value(value) = network
|
||||
.handle_radarr_event(RadarrEvent::StartTask(
|
||||
|
||||
Reference in New Issue
Block a user