style: Applied uniform formatting across all new UI test files

This commit is contained in:
2025-12-15 20:18:28 -07:00
parent aadd6c8abf
commit c072c57bbb
23 changed files with 337 additions and 140 deletions
+10 -6
View File
@@ -30,11 +30,11 @@ use {
crate::models::servarr_data::radarr::modals::{
EditCollectionModal, EditMovieModal, MovieDetailsModal,
},
crate::models::stateful_table::SortOption,
crate::network::radarr_network::radarr_network_test_utils::test_utils::*,
chrono::DateTime,
strum::IntoEnumIterator,
std::fmt::Debug,
crate::models::stateful_table::SortOption
strum::IntoEnumIterator,
};
#[cfg(test)]
@@ -50,9 +50,9 @@ macro_rules! sort_option {
($field:ident) => {
SortOption {
name: "Something",
cmp_fn: Some(|a, b| a.$field.cmp(&b.$field))
cmp_fn: Some(|a, b| a.$field.cmp(&b.$field)),
}
}
};
}
pub struct App<'a> {
@@ -386,7 +386,9 @@ impl App<'_> {
movie_details_modal
.movie_releases
.set_items(vec![torrent_release(), usenet_release()]);
movie_details_modal.movie_releases.sorting(vec![sort_option!(indexer_id)]);
movie_details_modal
.movie_releases
.sorting(vec![sort_option!(indexer_id)]);
let mut radarr_data = RadarrData {
disk_space_vec: vec![diskspace()],
@@ -418,7 +420,9 @@ impl App<'_> {
radarr_data.collections.sorting(vec![sort_option!(id)]);
radarr_data.collections.search = Some("Something".into());
radarr_data.collections.filter = Some("Something".into());
radarr_data.collection_movies.set_items(vec![collection_movie()]);
radarr_data
.collection_movies
.set_items(vec![collection_movie()]);
radarr_data.downloads.set_items(vec![download_record()]);
radarr_data.blocklist.set_items(vec![blocklist_item()]);
radarr_data.blocklist.sorting(vec![sort_option!(id)]);
@@ -162,9 +162,7 @@ pub mod test_utils {
}
pub fn percentage_rating() -> Rating {
Rating {
value: 99.into(),
}
Rating { value: 99.into() }
}
pub fn ratings_list() -> RatingsList {
@@ -20,8 +20,8 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use crate::ui::ui_test_utils::test_utils::TerminalSize;
use rstest::rstest;
use super::*;
@@ -53,11 +53,12 @@ mod tests {
#[rstest]
fn test_blocklist_ui_renders_blocklist_tab(
#[values(
ActiveRadarrBlock::Blocklist,
ActiveRadarrBlock::BlocklistSortPrompt,
ActiveRadarrBlock::DeleteBlocklistItemPrompt,
ActiveRadarrBlock::BlocklistClearAllItemsPrompt,
)] active_radarr_block: ActiveRadarrBlock
ActiveRadarrBlock::Blocklist,
ActiveRadarrBlock::BlocklistSortPrompt,
ActiveRadarrBlock::DeleteBlocklistItemPrompt,
ActiveRadarrBlock::BlocklistClearAllItemsPrompt
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(active_radarr_block.into());
@@ -37,16 +37,17 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use crate::models::stateful_table::StatefulTable;
use super::*;
use crate::models::stateful_table::StatefulTable;
use rstest::rstest;
#[rstest]
fn test_collection_details_ui_renders_collection_details(
#[values(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::ViewMovieOverview
)] active_radarr_block: ActiveRadarrBlock
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::ViewMovieOverview
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(active_radarr_block.into());
@@ -30,9 +30,9 @@ mod tests {
mod snapshot_tests {
use super::*;
use rstest::rstest;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::radarr::radarr_data::EDIT_COLLECTION_SELECTION_BLOCKS;
use rstest::rstest;
#[rstest]
#[case(true, false, false)]
@@ -70,8 +70,10 @@ mod tests {
ActiveRadarrBlock::FilterCollectionsError,
ActiveRadarrBlock::SearchCollection,
ActiveRadarrBlock::SearchCollectionError,
ActiveRadarrBlock::UpdateAllCollectionsPrompt,
)] active_radarr_block: ActiveRadarrBlock) {
ActiveRadarrBlock::UpdateAllCollectionsPrompt
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(active_radarr_block.into());
@@ -96,13 +98,34 @@ mod tests {
}
#[rstest]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionPrompt)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionConfirmPrompt)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionRootFolderPathInput)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionSelectMinimumAvailability)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionSelectQualityProfile)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionToggleSearchOnAdd)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionToggleMonitored)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionPrompt
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionConfirmPrompt
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionRootFolderPathInput
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionSelectQualityProfile
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionToggleSearchOnAdd
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionToggleMonitored
)]
fn test_edit_collection_ui_renders_edit_collection_modal(
#[case] context_block: ActiveRadarrBlock,
#[case] active_radarr_block: ActiveRadarrBlock,
@@ -116,7 +139,14 @@ mod tests {
CollectionsUi::draw(f, app, f.area());
});
insta::assert_snapshot!(format!("{}_{}", active_radarr_block.to_string(), context_block.to_string()), output);
insta::assert_snapshot!(
format!(
"{}_{}",
active_radarr_block.to_string(),
context_block.to_string()
),
output
);
}
}
}
@@ -31,24 +31,66 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use super::*;
use rstest::rstest;
#[rstest]
#[case(ActiveRadarrBlock::Collections, ActiveRadarrBlock::EditCollectionPrompt)]
#[case(ActiveRadarrBlock::Collections, ActiveRadarrBlock::EditCollectionConfirmPrompt)]
#[case(ActiveRadarrBlock::Collections, ActiveRadarrBlock::EditCollectionRootFolderPathInput)]
#[case(ActiveRadarrBlock::Collections, ActiveRadarrBlock::EditCollectionSelectMinimumAvailability)]
#[case(ActiveRadarrBlock::Collections, ActiveRadarrBlock::EditCollectionSelectQualityProfile)]
#[case(ActiveRadarrBlock::Collections, ActiveRadarrBlock::EditCollectionToggleSearchOnAdd)]
#[case(ActiveRadarrBlock::Collections, ActiveRadarrBlock::EditCollectionToggleMonitored)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionPrompt)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionConfirmPrompt)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionRootFolderPathInput)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionSelectMinimumAvailability)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionSelectQualityProfile)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionToggleSearchOnAdd)]
#[case(ActiveRadarrBlock::CollectionDetails, ActiveRadarrBlock::EditCollectionToggleMonitored)]
#[case(
ActiveRadarrBlock::Collections,
ActiveRadarrBlock::EditCollectionPrompt
)]
#[case(
ActiveRadarrBlock::Collections,
ActiveRadarrBlock::EditCollectionConfirmPrompt
)]
#[case(
ActiveRadarrBlock::Collections,
ActiveRadarrBlock::EditCollectionRootFolderPathInput
)]
#[case(
ActiveRadarrBlock::Collections,
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability
)]
#[case(
ActiveRadarrBlock::Collections,
ActiveRadarrBlock::EditCollectionSelectQualityProfile
)]
#[case(
ActiveRadarrBlock::Collections,
ActiveRadarrBlock::EditCollectionToggleSearchOnAdd
)]
#[case(
ActiveRadarrBlock::Collections,
ActiveRadarrBlock::EditCollectionToggleMonitored
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionPrompt
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionConfirmPrompt
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionRootFolderPathInput
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionSelectMinimumAvailability
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionSelectQualityProfile
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionToggleSearchOnAdd
)]
#[case(
ActiveRadarrBlock::CollectionDetails,
ActiveRadarrBlock::EditCollectionToggleMonitored
)]
fn test_edit_collection_ui_renders_edit_collection_modal(
#[case] active_radarr_block: ActiveRadarrBlock,
#[case] context_block: ActiveRadarrBlock,
@@ -62,7 +104,14 @@ mod tests {
EditCollectionUi::draw(f, app, f.area());
});
insta::assert_snapshot!(format!("{}_{}", active_radarr_block.to_string(), context_block.to_string()), output);
insta::assert_snapshot!(
format!(
"{}_{}",
active_radarr_block.to_string(),
context_block.to_string()
),
output
);
}
}
}
+2 -2
View File
@@ -98,7 +98,7 @@ pub(super) fn draw_collections(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect)
Cell::from(search_on_add),
Cell::from(monitored),
])
.primary()
.primary()
};
let collections_table = ManagarrTable::new(content, collection_row_mapping)
.loading(
@@ -137,7 +137,7 @@ pub(super) fn draw_collections(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect)
ActiveRadarrBlock::SearchCollection,
ActiveRadarrBlock::FilterCollections,
]
.contains(&active_radarr_block)
.contains(&active_radarr_block)
{
collections_table.show_cursor(f, area);
}
@@ -20,8 +20,8 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use super::*;
use rstest::rstest;
#[test]
fn test_radarr_ui_renders_downloads_tab_loading() {
@@ -41,8 +41,9 @@ mod tests {
#[values(
ActiveRadarrBlock::Downloads,
ActiveRadarrBlock::DeleteDownloadPrompt,
ActiveRadarrBlock::UpdateDownloadsPrompt,
)] active_radarr_block: ActiveRadarrBlock
ActiveRadarrBlock::UpdateDownloadsPrompt
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(active_radarr_block.into());
@@ -7,7 +7,7 @@ mod tests {
use crate::models::servarr_data::radarr::radarr_data::{
ActiveRadarrBlock, EDIT_INDEXER_BLOCKS, EDIT_INDEXER_TORRENT_SELECTION_BLOCKS,
};
use crate::models::servarr_models::{Indexer};
use crate::models::servarr_models::Indexer;
use crate::ui::DrawUi;
use crate::ui::radarr_ui::indexers::edit_indexer_ui::EditIndexerUi;
use crate::ui::ui_test_utils::test_utils::{TerminalSize, render_to_string_with_app};
@@ -24,9 +24,9 @@ mod tests {
}
mod snapshot_tests {
use super::*;
use crate::models::servarr_data::radarr::radarr_data::EDIT_INDEXER_NZB_SELECTION_BLOCKS;
use crate::network::radarr_network::radarr_network_test_utils::test_utils::indexer;
use super::*;
#[test]
fn test_edit_indexer_ui_renders_edit_indexer_modal_torrent() {
@@ -29,7 +29,8 @@ mod tests {
fn test_indexer_settings_ui_renders_indexer_settings() {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(ActiveRadarrBlock::IndexerSettingsMinimumAgeInput.into());
app.data.radarr_data.selected_block = BlockSelectionState::new(INDEXER_SETTINGS_SELECTION_BLOCKS);
app.data.radarr_data.selected_block =
BlockSelectionState::new(INDEXER_SETTINGS_SELECTION_BLOCKS);
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
IndexerSettingsUi::draw(f, app, f.area());
+35 -10
View File
@@ -20,10 +20,10 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use super::*;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::radarr::radarr_data::ADD_MOVIE_SELECTION_BLOCKS;
use super::*;
use rstest::rstest;
#[test]
fn test_add_movie_ui_renders_loading_for_search() {
@@ -49,15 +49,33 @@ mod tests {
#[case(ActiveRadarrBlock::AddMovieSelectRootFolder, None)]
#[case(ActiveRadarrBlock::AddMovieAlreadyInLibrary, None)]
#[case(ActiveRadarrBlock::AddMovieTagsInput, None)]
#[case(ActiveRadarrBlock::AddMoviePrompt, Some(ActiveRadarrBlock::CollectionDetails))]
#[case(ActiveRadarrBlock::AddMovieSelectMinimumAvailability, Some(ActiveRadarrBlock::CollectionDetails))]
#[case(ActiveRadarrBlock::AddMovieSelectMonitor, Some(ActiveRadarrBlock::CollectionDetails))]
#[case(ActiveRadarrBlock::AddMovieSelectQualityProfile, Some(ActiveRadarrBlock::CollectionDetails))]
#[case(ActiveRadarrBlock::AddMovieSelectRootFolder, Some(ActiveRadarrBlock::CollectionDetails))]
#[case(ActiveRadarrBlock::AddMovieTagsInput, Some(ActiveRadarrBlock::CollectionDetails))]
#[case(
ActiveRadarrBlock::AddMoviePrompt,
Some(ActiveRadarrBlock::CollectionDetails)
)]
#[case(
ActiveRadarrBlock::AddMovieSelectMinimumAvailability,
Some(ActiveRadarrBlock::CollectionDetails)
)]
#[case(
ActiveRadarrBlock::AddMovieSelectMonitor,
Some(ActiveRadarrBlock::CollectionDetails)
)]
#[case(
ActiveRadarrBlock::AddMovieSelectQualityProfile,
Some(ActiveRadarrBlock::CollectionDetails)
)]
#[case(
ActiveRadarrBlock::AddMovieSelectRootFolder,
Some(ActiveRadarrBlock::CollectionDetails)
)]
#[case(
ActiveRadarrBlock::AddMovieTagsInput,
Some(ActiveRadarrBlock::CollectionDetails)
)]
fn test_add_movie_ui_renders(
#[case] active_radarr_block: ActiveRadarrBlock,
#[case] context: Option<ActiveRadarrBlock>
#[case] context: Option<ActiveRadarrBlock>,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack((active_radarr_block, context).into());
@@ -68,7 +86,14 @@ mod tests {
});
if let Some(context) = context {
insta::assert_snapshot!(format!("{}_{}", active_radarr_block.to_string(), context.to_string()), output);
insta::assert_snapshot!(
format!(
"{}_{}",
active_radarr_block.to_string(),
context.to_string()
),
output
);
} else {
insta::assert_snapshot!(active_radarr_block.to_string(), output);
}
@@ -23,17 +23,33 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use super::*;
use rstest::rstest;
#[rstest]
#[case(ActiveRadarrBlock::EditMoviePrompt, None, 0)]
#[case(ActiveRadarrBlock::EditMoviePrompt, Some(ActiveRadarrBlock::MovieDetails), 0)]
#[case(ActiveRadarrBlock::EditMoviePrompt, Some(ActiveRadarrBlock::MovieHistory), 1)]
#[case(ActiveRadarrBlock::EditMoviePrompt, Some(ActiveRadarrBlock::FileInfo), 2)]
#[case(
ActiveRadarrBlock::EditMoviePrompt,
Some(ActiveRadarrBlock::MovieDetails),
0
)]
#[case(
ActiveRadarrBlock::EditMoviePrompt,
Some(ActiveRadarrBlock::MovieHistory),
1
)]
#[case(
ActiveRadarrBlock::EditMoviePrompt,
Some(ActiveRadarrBlock::FileInfo),
2
)]
#[case(ActiveRadarrBlock::EditMoviePrompt, Some(ActiveRadarrBlock::Cast), 3)]
#[case(ActiveRadarrBlock::EditMoviePrompt, Some(ActiveRadarrBlock::Crew), 4)]
#[case(ActiveRadarrBlock::EditMoviePrompt, Some(ActiveRadarrBlock::ManualSearch), 5)]
#[case(
ActiveRadarrBlock::EditMoviePrompt,
Some(ActiveRadarrBlock::ManualSearch),
5
)]
fn test_edit_movie_ui_renders_edit_movie_modal(
#[case] active_radarr_block: ActiveRadarrBlock,
#[case] context: Option<ActiveRadarrBlock>,
@@ -51,7 +67,14 @@ mod tests {
});
if let Some(context) = context {
insta::assert_snapshot!(format!("{}_{}", active_radarr_block.to_string(), context.to_string()), output);
insta::assert_snapshot!(
format!(
"{}_{}",
active_radarr_block.to_string(),
context.to_string()
),
output
);
} else {
insta::assert_snapshot!(active_radarr_block.to_string(), output);
}
+22 -18
View File
@@ -30,10 +30,12 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::radarr::radarr_data::{ADD_MOVIE_SELECTION_BLOCKS, EDIT_MOVIE_SELECTION_BLOCKS};
use super::*;
use crate::models::BlockSelectionState;
use crate::models::servarr_data::radarr::radarr_data::{
ADD_MOVIE_SELECTION_BLOCKS, EDIT_MOVIE_SELECTION_BLOCKS,
};
use rstest::rstest;
#[test]
fn test_library_ui_renders_library_tab_loading() {
@@ -69,8 +71,9 @@ mod tests {
ActiveRadarrBlock::SearchMovieError,
ActiveRadarrBlock::FilterMovies,
ActiveRadarrBlock::FilterMoviesError,
ActiveRadarrBlock::UpdateAllMoviesPrompt,
)] active_radarr_block: ActiveRadarrBlock,
ActiveRadarrBlock::UpdateAllMoviesPrompt
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(active_radarr_block.into());
@@ -85,17 +88,18 @@ mod tests {
#[rstest]
fn test_library_movie_ui_renders_add_movie_ui(
#[values(
ActiveRadarrBlock::AddMovieSearchInput,
ActiveRadarrBlock::AddMovieSearchResults,
ActiveRadarrBlock::AddMovieEmptySearchResults,
ActiveRadarrBlock::AddMoviePrompt,
ActiveRadarrBlock::AddMovieSelectMinimumAvailability,
ActiveRadarrBlock::AddMovieSelectMonitor,
ActiveRadarrBlock::AddMovieSelectQualityProfile,
ActiveRadarrBlock::AddMovieSelectRootFolder,
ActiveRadarrBlock::AddMovieAlreadyInLibrary,
ActiveRadarrBlock::AddMovieTagsInput,
)] active_radarr_block: ActiveRadarrBlock,
ActiveRadarrBlock::AddMovieSearchInput,
ActiveRadarrBlock::AddMovieSearchResults,
ActiveRadarrBlock::AddMovieEmptySearchResults,
ActiveRadarrBlock::AddMoviePrompt,
ActiveRadarrBlock::AddMovieSelectMinimumAvailability,
ActiveRadarrBlock::AddMovieSelectMonitor,
ActiveRadarrBlock::AddMovieSelectQualityProfile,
ActiveRadarrBlock::AddMovieSelectRootFolder,
ActiveRadarrBlock::AddMovieAlreadyInLibrary,
ActiveRadarrBlock::AddMovieTagsInput
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(active_radarr_block.into());
@@ -105,7 +109,7 @@ mod tests {
LibraryUi::draw(f, app, f.area());
});
insta::assert_snapshot!(active_radarr_block.to_string(), output);
insta::assert_snapshot!(active_radarr_block.to_string(), output);
}
#[test]
@@ -118,7 +122,7 @@ mod tests {
LibraryUi::draw(f, app, f.area());
});
insta::assert_snapshot!(output);
insta::assert_snapshot!(output);
}
}
}
@@ -50,29 +50,77 @@ mod tests {
#[rstest]
#[case(ActiveRadarrBlock::MovieDetails, None, 0)]
#[case(ActiveRadarrBlock::MovieDetails, Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt), 0)]
#[case(ActiveRadarrBlock::MovieDetails, Some(ActiveRadarrBlock::UpdateAndScanPrompt), 0)]
#[case(
ActiveRadarrBlock::MovieDetails,
Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt),
0
)]
#[case(
ActiveRadarrBlock::MovieDetails,
Some(ActiveRadarrBlock::UpdateAndScanPrompt),
0
)]
#[case(ActiveRadarrBlock::MovieHistory, None, 1)]
#[case(ActiveRadarrBlock::MovieHistory, Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt), 1)]
#[case(ActiveRadarrBlock::MovieHistory, Some(ActiveRadarrBlock::UpdateAndScanPrompt), 1)]
#[case(
ActiveRadarrBlock::MovieHistory,
Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt),
1
)]
#[case(
ActiveRadarrBlock::MovieHistory,
Some(ActiveRadarrBlock::UpdateAndScanPrompt),
1
)]
#[case(ActiveRadarrBlock::FileInfo, None, 2)]
#[case(ActiveRadarrBlock::FileInfo, Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt), 2)]
#[case(ActiveRadarrBlock::FileInfo, Some(ActiveRadarrBlock::UpdateAndScanPrompt), 2)]
#[case(
ActiveRadarrBlock::FileInfo,
Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt),
2
)]
#[case(
ActiveRadarrBlock::FileInfo,
Some(ActiveRadarrBlock::UpdateAndScanPrompt),
2
)]
#[case(ActiveRadarrBlock::Cast, None, 3)]
#[case(ActiveRadarrBlock::Cast, Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt), 3)]
#[case(ActiveRadarrBlock::Cast, Some(ActiveRadarrBlock::UpdateAndScanPrompt), 3)]
#[case(
ActiveRadarrBlock::Cast,
Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt),
3
)]
#[case(
ActiveRadarrBlock::Cast,
Some(ActiveRadarrBlock::UpdateAndScanPrompt),
3
)]
#[case(ActiveRadarrBlock::Crew, None, 4)]
#[case(ActiveRadarrBlock::Crew, Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt), 4)]
#[case(ActiveRadarrBlock::Crew, Some(ActiveRadarrBlock::UpdateAndScanPrompt), 4)]
#[case(
ActiveRadarrBlock::Crew,
Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt),
4
)]
#[case(
ActiveRadarrBlock::Crew,
Some(ActiveRadarrBlock::UpdateAndScanPrompt),
4
)]
#[case(ActiveRadarrBlock::ManualSearch, None, 5)]
#[case(ActiveRadarrBlock::ManualSearch, Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt), 5)]
#[case(ActiveRadarrBlock::ManualSearch, Some(ActiveRadarrBlock::UpdateAndScanPrompt), 5)]
#[case(
ActiveRadarrBlock::ManualSearch,
Some(ActiveRadarrBlock::AutomaticallySearchMoviePrompt),
5
)]
#[case(
ActiveRadarrBlock::ManualSearch,
Some(ActiveRadarrBlock::UpdateAndScanPrompt),
5
)]
#[case(ActiveRadarrBlock::ManualSearchSortPrompt, None, 5)]
#[case(ActiveRadarrBlock::ManualSearchConfirmPrompt, None, 5)]
fn test_movie_details_ui_renders_movie_details_tab(
#[case] active_radarr_block: ActiveRadarrBlock,
#[case] context: Option<ActiveRadarrBlock>,
#[case] index: usize
#[case] index: usize,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack((active_radarr_block, context).into());
@@ -83,9 +131,15 @@ mod tests {
});
if let Some(context) = context {
insta::assert_snapshot!(format!("movie_details_render_{active_radarr_block}_{context}"), output);
insta::assert_snapshot!(
format!("movie_details_render_{active_radarr_block}_{context}"),
output
);
} else {
insta::assert_snapshot!(format!("movie_details_render_{active_radarr_block}"), output);
insta::assert_snapshot!(
format!("movie_details_render_{active_radarr_block}"),
output
);
}
}
@@ -97,8 +151,9 @@ mod tests {
ActiveRadarrBlock::FileInfo,
ActiveRadarrBlock::Cast,
ActiveRadarrBlock::Crew,
ActiveRadarrBlock::ManualSearch,
)] active_radarr_block: ActiveRadarrBlock
ActiveRadarrBlock::ManualSearch
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default();
app.is_loading = true;
@@ -108,7 +163,10 @@ mod tests {
MovieDetailsUi::draw(f, app, f.area());
});
insta::assert_snapshot!(format!("movie_details_loading_{active_radarr_block}"), output);
insta::assert_snapshot!(
format!("movie_details_loading_{active_radarr_block}"),
output
);
}
}
}
+2 -2
View File
@@ -1,14 +1,14 @@
use std::{cmp, iter};
#[cfg(test)]
use crate::ui::ui_test_utils::test_utils::Utc;
use chrono::Duration;
#[cfg(not(test))]
use chrono::Utc;
use chrono::{Duration};
use ratatui::Frame;
use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::prelude::Stylize;
use ratatui::text::Text;
use ratatui::widgets::{Paragraph, Row};
use std::{cmp, iter};
use crate::app::App;
use crate::logos::RADARR_LOGO;
+1 -1
View File
@@ -22,7 +22,7 @@ mod tests {
mod snapshot_tests {
use super::*;
use crate::ui::ui_test_utils::test_utils::{TerminalSize};
use crate::ui::ui_test_utils::test_utils::TerminalSize;
#[rstest]
#[case(ActiveRadarrBlock::Movies, 0)]
@@ -21,8 +21,8 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use super::*;
use rstest::rstest;
#[test]
fn test_root_folders_ui_renders_loading() {
@@ -55,8 +55,9 @@ mod tests {
#[values(
ActiveRadarrBlock::RootFolders,
ActiveRadarrBlock::AddRootFolderPrompt,
ActiveRadarrBlock::DeleteRootFolderPrompt,
)] active_radarr_block: ActiveRadarrBlock
ActiveRadarrBlock::DeleteRootFolderPrompt
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(active_radarr_block.into());
+2 -2
View File
@@ -1,9 +1,9 @@
use std::ops::Sub;
#[cfg(not(test))]
use chrono::Utc;
#[cfg(test)]
use crate::ui::ui_test_utils::test_utils::Utc;
#[cfg(not(test))]
use chrono::Utc;
use ratatui::layout::Layout;
use ratatui::style::Style;
use ratatui::text::{Span, Text};
@@ -23,8 +23,8 @@ mod tests {
}
mod snapshot_tests {
use rstest::rstest;
use super::*;
use rstest::rstest;
#[rstest]
fn test_system_details_ui_renders_tasks(
@@ -33,8 +33,9 @@ mod tests {
ActiveRadarrBlock::SystemQueuedEvents,
ActiveRadarrBlock::SystemTasks,
ActiveRadarrBlock::SystemTaskStartConfirmPrompt,
ActiveRadarrBlock::SystemUpdates,
)] active_radarr_block: ActiveRadarrBlock
ActiveRadarrBlock::SystemUpdates
)]
active_radarr_block: ActiveRadarrBlock,
) {
let mut app = App::test_default_fully_populated();
app.push_navigation_stack(active_radarr_block.into());
@@ -75,7 +76,7 @@ mod tests {
#[test]
fn test_system_details_ui_renders_logs_loading() {
let mut app = App::test_default_fully_populated();
app.is_loading = true;
app.is_loading = true;
app.push_navigation_stack(ActiveRadarrBlock::SystemLogs.into());
let output = render_to_string_with_app(TerminalSize::Large, &mut app, |f, app| {
+7 -9
View File
@@ -1,12 +1,12 @@
#[cfg(test)]
#[allow(dead_code)]
pub mod test_utils {
use std::cell::Cell;
use chrono::DateTime;
use ratatui::Frame;
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use std::cell::Cell;
use crate::app::App;
@@ -18,14 +18,12 @@ pub mod test_utils {
impl Utc {
pub fn now() -> DateTime<chrono::Utc> {
TIMESTAMP.with(|timestamp| {
let ts = timestamp.get();
DateTime::<chrono::Utc>::from_timestamp(
if ts != 0 { ts } else { 1684618200 },
0,
)}
).expect("a valid timestamp set")
TIMESTAMP
.with(|timestamp| {
let ts = timestamp.get();
DateTime::<chrono::Utc>::from_timestamp(if ts != 0 { ts } else { 1684618200 }, 0)
})
.expect("a valid timestamp set")
}
}
+3 -1
View File
@@ -122,7 +122,9 @@ where
};
let loading_block = LoadingBlock::new(self.is_loading, self.block.clone());
if let Some(content) = self.content && !self.is_loading {
if let Some(content) = self.content
&& !self.is_loading
{
let (table_contents, table_state) = if content.filtered_items.is_some() {
(
content.filtered_items.as_ref().unwrap(),