test: Updated Rust edition to 2024 and refactored network module tests to be more idiomatic
This commit is contained in:
1 parent
c4e8d64710
commit
ad58912baf
257 files changed
+4033
-4380
No files matched your search
@@ -5,15 +5,12 @@ mod tests {
|
||||
};
|
||||
use crate::models::sonarr_models::{SonarrSerdeable, SonarrTask, SonarrTaskName, SystemStatus};
|
||||
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::sonarr_network::SonarrEvent;
|
||||
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_sonarr_host_config_event() {
|
||||
@@ -29,25 +26,19 @@ 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,
|
||||
SonarrEvent::GetHostConfig,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(host_config_response)
|
||||
.build_for(SonarrEvent::GetHostConfig)
|
||||
.await;
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let SonarrSerdeable::HostConfig(host_config) = network
|
||||
.handle_sonarr_event(SonarrEvent::GetHostConfig)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(host_config, response);
|
||||
}
|
||||
}
|
||||
@@ -85,48 +76,40 @@ 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,
|
||||
SonarrEvent::GetLogs(500),
|
||||
None,
|
||||
Some("pageSize=500&sortDirection=descending&sortKey=time"),
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
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(SonarrEvent::GetLogs(500))
|
||||
.await;
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let SonarrSerdeable::LogResponse(logs) = network
|
||||
.handle_sonarr_event(SonarrEvent::GetLogs(500))
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.sonarr_data.logs.items,
|
||||
expected_logs
|
||||
mock.assert_async().await;
|
||||
assert_eq!(app.lock().await.data.sonarr_data.logs.items, expected_logs);
|
||||
assert!(
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.sonarr_data
|
||||
.logs
|
||||
.current_selection()
|
||||
.text
|
||||
.contains("INFO")
|
||||
);
|
||||
assert!(app_arc
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
.sonarr_data
|
||||
.logs
|
||||
.current_selection()
|
||||
.text
|
||||
.contains("INFO"));
|
||||
assert_eq!(logs, response);
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_get_sonarr_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,
|
||||
@@ -135,15 +118,11 @@ mod tests {
|
||||
"freeSpace": 3333,
|
||||
"totalSpace": 4444
|
||||
}
|
||||
])),
|
||||
None,
|
||||
SonarrEvent::GetDiskSpace,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
]))
|
||||
.build_for(SonarrEvent::GetDiskSpace)
|
||||
.await;
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
let disk_space_vec = vec![
|
||||
DiskSpace {
|
||||
free_space: 1111,
|
||||
@@ -160,9 +139,9 @@ mod tests {
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.sonarr_data.disk_space_vec,
|
||||
app.lock().await.data.sonarr_data.disk_space_vec,
|
||||
disk_space_vec
|
||||
);
|
||||
assert_eq!(disk_space, disk_space_vec);
|
||||
@@ -194,27 +173,21 @@ mod tests {
|
||||
trigger: "scheduled".to_owned(),
|
||||
};
|
||||
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(queued_events_json),
|
||||
None,
|
||||
SonarrEvent::GetQueuedEvents,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(queued_events_json)
|
||||
.build_for(SonarrEvent::GetQueuedEvents)
|
||||
.await;
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let SonarrSerdeable::QueueEvents(events) = network
|
||||
.handle_sonarr_event(SonarrEvent::GetQueuedEvents)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.sonarr_data.queued_events.items,
|
||||
app.lock().await.data.sonarr_data.queued_events.items,
|
||||
vec![expected_event]
|
||||
);
|
||||
assert_eq!(events, response);
|
||||
@@ -233,46 +206,34 @@ 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,
|
||||
SonarrEvent::GetSecurityConfig,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(security_config_response)
|
||||
.build_for(SonarrEvent::GetSecurityConfig)
|
||||
.await;
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let SonarrSerdeable::SecurityConfig(security_config) = network
|
||||
.handle_sonarr_event(SonarrEvent::GetSecurityConfig)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(security_config, response);
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_handle_get_status_event() {
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(json!({
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(json!({
|
||||
"version": "v1",
|
||||
"startTime": "2023-02-25T20:16:43Z"
|
||||
})),
|
||||
None,
|
||||
SonarrEvent::GetStatus,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
}))
|
||||
.build_for(SonarrEvent::GetStatus)
|
||||
.await;
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
let date_time = DateTime::from(DateTime::parse_from_rfc3339("2023-02-25T20:16:43Z").unwrap());
|
||||
|
||||
if let SonarrSerdeable::SystemStatus(status) = network
|
||||
@@ -280,9 +241,9 @@ mod tests {
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_str_eq!(app_arc.lock().await.data.sonarr_data.version, "v1");
|
||||
assert_eq!(app_arc.lock().await.data.sonarr_data.start_time, date_time);
|
||||
mock.assert_async().await;
|
||||
assert_str_eq!(app.lock().await.data.sonarr_data.version, "v1");
|
||||
assert_eq!(app.lock().await.data.sonarr_data.start_time, date_time);
|
||||
assert_eq!(
|
||||
status,
|
||||
SystemStatus {
|
||||
@@ -327,27 +288,21 @@ mod tests {
|
||||
next_execution: timestamp,
|
||||
},
|
||||
];
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(tasks_json),
|
||||
None,
|
||||
SonarrEvent::GetTasks,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(tasks_json)
|
||||
.build_for(SonarrEvent::GetTasks)
|
||||
.await;
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let SonarrSerdeable::Tasks(tasks) = network
|
||||
.handle_sonarr_event(SonarrEvent::GetTasks)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(
|
||||
app_arc.lock().await.data.sonarr_data.tasks.items,
|
||||
app.lock().await.data.sonarr_data.tasks.items,
|
||||
expected_tasks
|
||||
);
|
||||
assert_eq!(tasks, response);
|
||||
@@ -408,43 +363,44 @@ mod tests {
|
||||
* 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
|
||||
|
||||
|
||||
2.1.0 - 2023-04-15 02:02:53 UTC
|
||||
{line_break}
|
||||
Fixed:
|
||||
* Killed bug 1
|
||||
* Fixed bug 2"
|
||||
));
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Get,
|
||||
None,
|
||||
Some(updates_json),
|
||||
None,
|
||||
SonarrEvent::GetUpdates,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
let (mock, app, _server) = MockServarrApi::get()
|
||||
.returns(updates_json)
|
||||
.build_for(SonarrEvent::GetUpdates)
|
||||
.await;
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let SonarrSerdeable::Updates(updates) = network
|
||||
.handle_sonarr_event(SonarrEvent::GetUpdates)
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
assert_str_eq!(
|
||||
app_arc.lock().await.data.sonarr_data.updates.get_text(),
|
||||
expected_text.get_text()
|
||||
mock.assert_async().await;
|
||||
let actual_text = app.lock().await.data.sonarr_data.updates.get_text();
|
||||
let expected = expected_text.get_text();
|
||||
|
||||
// Trim trailing whitespace from each line for comparison
|
||||
let actual_trimmed: Vec<&str> = actual_text.lines().map(|l| l.trim_end()).collect();
|
||||
let expected_trimmed: Vec<&str> = expected.lines().map(|l| l.trim_end()).collect();
|
||||
|
||||
assert_eq!(
|
||||
actual_trimmed, expected_trimmed,
|
||||
"Updates text mismatch (after trimming trailing whitespace)"
|
||||
);
|
||||
assert_eq!(updates, response);
|
||||
}
|
||||
@@ -453,19 +409,16 @@ mod tests {
|
||||
#[tokio::test]
|
||||
async fn test_handle_start_sonarr_task_event() {
|
||||
let response = json!({ "test": "test"});
|
||||
let (async_server, app_arc, _server) = mock_servarr_api(
|
||||
RequestMethod::Post,
|
||||
Some(json!({
|
||||
let (mock, app, _server) = MockServarrApi::post()
|
||||
.with_request_body(json!({
|
||||
"name": "ApplicationUpdateCheck"
|
||||
})),
|
||||
Some(response.clone()),
|
||||
None,
|
||||
SonarrEvent::StartTask(SonarrTaskName::ApplicationUpdateCheck),
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
app_arc
|
||||
}))
|
||||
.returns(response.clone())
|
||||
.build_for(SonarrEvent::StartTask(
|
||||
SonarrTaskName::ApplicationUpdateCheck,
|
||||
))
|
||||
.await;
|
||||
app
|
||||
.lock()
|
||||
.await
|
||||
.data
|
||||
@@ -475,8 +428,8 @@ mod tests {
|
||||
task_name: SonarrTaskName::default(),
|
||||
..SonarrTask::default()
|
||||
}]);
|
||||
app_arc.lock().await.server_tabs.next();
|
||||
let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new());
|
||||
app.lock().await.server_tabs.next();
|
||||
let mut network = test_network(&app);
|
||||
|
||||
if let SonarrSerdeable::Value(value) = network
|
||||
.handle_sonarr_event(SonarrEvent::StartTask(
|
||||
@@ -485,7 +438,7 @@ mod tests {
|
||||
.await
|
||||
.unwrap()
|
||||
{
|
||||
async_server.assert_async().await;
|
||||
mock.assert_async().await;
|
||||
assert_eq!(value, response);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user