feat: Full CLI and TUI support for the Lidarr Indexers tab

This commit is contained in:
2026-01-14 13:30:51 -07:00
parent 8abcf44866
commit c74d5936d2
91 changed files with 9481 additions and 166 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
use crate::models::servarr_data::modals::IndexerTestResultModalItem;
use crate::models::servarr_models::IndexerSettings;
use crate::models::servarr_models::{EditIndexerParams, Indexer, IndexerTestResult};
use crate::models::sonarr_models::IndexerSettings;
use crate::models::stateful_table::StatefulTable;
use crate::network::sonarr_network::SonarrEvent;
use crate::network::{Network, RequestMethod};
@@ -6,10 +6,9 @@ mod tests {
use crate::models::sonarr_models::SonarrSerdeable;
use crate::network::NetworkResource;
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
use crate::network::servarr_test_utils::indexer_settings;
use crate::network::sonarr_network::SonarrEvent;
use crate::network::sonarr_network::sonarr_network_test_utils::test_utils::{
indexer, indexer_settings,
};
use crate::network::sonarr_network::sonarr_network_test_utils::test_utils::indexer;
use bimap::BiMap;
use mockito::Matcher;
use pretty_assertions::assert_eq;
@@ -31,11 +30,10 @@ mod tests {
app.lock().await.server_tabs.next();
let mut network = test_network(&app);
assert!(
assert_ok!(
network
.handle_sonarr_event(SonarrEvent::DeleteIndexer(1))
.await
.is_ok()
);
mock.assert_async().await;
@@ -58,11 +56,10 @@ mod tests {
app.lock().await.server_tabs.next();
let mut network = test_network(&app);
assert!(
assert_ok!(
network
.handle_sonarr_event(SonarrEvent::EditAllIndexerSettings(indexer_settings()))
.await
.is_ok()
);
mock.assert_async().await;
@@ -153,11 +150,10 @@ mod tests {
app.lock().await.server_tabs.next();
let mut network = test_network(&app);
assert!(
assert_ok!(
network
.handle_sonarr_event(SonarrEvent::EditIndexer(expected_edit_indexer_params))
.await
.is_ok()
);
mock_details_server.assert_async().await;
@@ -248,11 +244,10 @@ mod tests {
app.lock().await.server_tabs.next();
let mut network = test_network(&app);
assert!(
assert_ok!(
network
.handle_sonarr_event(SonarrEvent::EditIndexer(expected_edit_indexer_params))
.await
.is_ok()
);
mock_details_server.assert_async().await;
@@ -338,11 +333,10 @@ mod tests {
app.lock().await.server_tabs.next();
let mut network = test_network(&app);
assert!(
assert_ok!(
network
.handle_sonarr_event(SonarrEvent::EditIndexer(expected_edit_indexer_params))
.await
.is_ok()
);
mock_details_server.assert_async().await;
@@ -435,11 +429,10 @@ mod tests {
app.lock().await.server_tabs.next();
let mut network = test_network(&app);
assert!(
assert_ok!(
network
.handle_sonarr_event(SonarrEvent::EditIndexer(expected_edit_indexer_params))
.await
.is_ok()
);
mock_details_server.assert_async().await;
@@ -497,11 +490,10 @@ mod tests {
app.lock().await.server_tabs.next();
let mut network = test_network(&app);
assert!(
assert_ok!(
network
.handle_sonarr_event(SonarrEvent::EditIndexer(edit_indexer_params))
.await
.is_ok()
);
mock_details_server.assert_async().await;
@@ -584,11 +576,10 @@ mod tests {
app.lock().await.server_tabs.next();
let mut network = test_network(&app);
assert!(
assert_ok!(
network
.handle_sonarr_event(SonarrEvent::EditIndexer(edit_indexer_params))
.await
.is_ok()
);
async_details_server.assert_async().await;
@@ -642,6 +633,7 @@ mod tests {
else {
panic!("Expected Indexers")
};
async_server.assert_async().await;
assert_eq!(
app.lock().await.data.sonarr_data.indexers.items,
@@ -714,6 +706,7 @@ mod tests {
else {
panic!("Expected Value")
};
async_details_server.assert_async().await;
async_test_server.assert_async().await;
assert_eq!(
@@ -780,6 +773,7 @@ mod tests {
else {
panic!("Expected Value")
};
async_details_server.assert_async().await;
async_test_server.assert_async().await;
assert_eq!(
@@ -860,16 +854,9 @@ mod tests {
else {
panic!("Expected IndexerTestResults")
};
async_server.assert_async().await;
assert!(
app
.lock()
.await
.data
.sonarr_data
.indexer_test_all_results
.is_some()
);
assert_some!(&app.lock().await.data.sonarr_data.indexer_test_all_results);
assert_eq!(
app
.lock()
+5 -3
View File
@@ -5,10 +5,12 @@ use serde_json::{Value, json};
use super::{Network, NetworkEvent, NetworkResource};
use crate::{
models::{
servarr_models::{AddRootFolderBody, EditIndexerParams, Language, QualityProfile, Tag},
servarr_models::{
AddRootFolderBody, EditIndexerParams, IndexerSettings, Language, QualityProfile, Tag,
},
sonarr_models::{
AddSeriesBody, DeleteSeriesParams, EditSeriesParams, IndexerSettings,
SonarrReleaseDownloadBody, SonarrSerdeable, SonarrTaskName,
AddSeriesBody, DeleteSeriesParams, EditSeriesParams, SonarrReleaseDownloadBody,
SonarrSerdeable, SonarrTaskName,
},
},
network::RequestMethod,
@@ -5,10 +5,9 @@ pub mod test_utils {
};
use crate::models::sonarr_models::{
AddSeriesSearchResult, AddSeriesSearchResultStatistics, BlocklistItem, DownloadRecord,
DownloadStatus, DownloadsResponse, Episode, EpisodeFile, IndexerSettings, MediaInfo, Rating,
Season, SeasonStatistics, Series, SeriesStatistics, SeriesStatus, SeriesType,
SonarrHistoryData, SonarrHistoryEventType, SonarrHistoryItem, SonarrRelease, SonarrTask,
SonarrTaskName,
DownloadStatus, DownloadsResponse, Episode, EpisodeFile, MediaInfo, Rating, Season,
SeasonStatistics, Series, SeriesStatistics, SeriesStatus, SeriesType, SonarrHistoryData,
SonarrHistoryEventType, SonarrHistoryItem, SonarrRelease, SonarrTask, SonarrTaskName,
};
use crate::models::{HorizontallyScrollableText, ScrollableText};
use bimap::BiMap;
@@ -250,16 +249,6 @@ pub mod test_utils {
}
}
pub fn indexer_settings() -> IndexerSettings {
IndexerSettings {
id: 1,
minimum_age: 1,
retention: 1,
maximum_size: 12345,
rss_sync_interval: 60,
}
}
pub fn language() -> Language {
Language {
id: 1,
@@ -3,11 +3,9 @@ mod test {
use crate::app::App;
use crate::models::servarr_data::sonarr::modals::AddSeriesModal;
use crate::models::servarr_models::{
AddRootFolderBody, EditIndexerParams, Language, QualityProfile, Tag,
};
use crate::models::sonarr_models::{
AddSeriesBody, EditSeriesParams, IndexerSettings, SonarrTaskName,
AddRootFolderBody, EditIndexerParams, IndexerSettings, Language, QualityProfile, Tag,
};
use crate::models::sonarr_models::{AddSeriesBody, EditSeriesParams, SonarrTaskName};
use crate::models::sonarr_models::{DeleteSeriesParams, SonarrSerdeable};
use crate::network::network_tests::test_utils::{MockServarrApi, test_network};
use crate::network::sonarr_network::sonarr_network_test_utils::test_utils::tag;