diff --git a/justfile b/justfile index e59dd0c7..72333f1a 100644 --- a/justfile +++ b/justfile @@ -49,7 +49,7 @@ doctest: # Run all proptests [group: 'test'] proptest: - @cargo test proptest + @cargo test -- property_tests proptest alias test-snapshots := snapshot-tests # Run all snapshot tests diff --git a/src/handlers/handler_proptest.rs b/src/handlers/handler_proptest.rs index 1e3df759..f136f87f 100644 --- a/src/handlers/handler_proptest.rs +++ b/src/handlers/handler_proptest.rs @@ -3,7 +3,9 @@ mod property_tests { use proptest::prelude::*; use crate::app::App; - use crate::handlers::handler_test_utils::test_utils::proptest_helpers::*; + use crate::handlers::handler_test_utils::test_utils::proptest_helpers::{ + list_size, text_input_string, + }; use crate::models::radarr_models::Movie; use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock; use crate::models::stateful_table::StatefulTable; @@ -16,11 +18,12 @@ mod property_tests { index in 0usize..1000 ) { let mut table = StatefulTable::::default(); - let movies: Vec = (0..list_size).map(|i| { - let mut movie = Movie::default(); - movie.id = i as i64; - movie - }).collect(); + let movies: Vec = (0..list_size) + .map(|i| Movie { + id: i as i64, + ..Movie::default() + }) + .collect(); table.set_items(movies); @@ -39,11 +42,12 @@ mod property_tests { scroll_amount in 0usize..20 ) { let mut table = StatefulTable::::default(); - let movies: Vec = (0..list_size).map(|i| { - let mut movie = Movie::default(); - movie.id = i as i64; - movie - }).collect(); + let movies: Vec = (0..list_size) + .map(|i| Movie { + id: i as i64, + ..Movie::default() + }) + .collect(); table.set_items(movies); let initial_id = table.current_selection().id; @@ -76,7 +80,7 @@ mod property_tests { let mut app = App::test_default(); let initial_route = app.get_current_route(); - let routes = vec![ + let routes = [ ActiveRadarrBlock::Movies, ActiveRadarrBlock::Collections, ActiveRadarrBlock::Downloads, @@ -111,15 +115,16 @@ mod property_tests { #[test] fn test_table_data_integrity( - list_size in 1usize..100 + list_size in list_size() ) { let mut table = StatefulTable::::default(); - let movies: Vec = (0..list_size).map(|i| { - let mut movie = Movie::default(); - movie.id = i as i64; - movie.title = format!("Movie {}", i).into(); - movie - }).collect(); + let movies: Vec = (0..list_size) + .map(|i| Movie { + id: i as i64, + title: format!("Movie {i}").into(), + ..Movie::default() + }) + .collect(); table.set_items(movies.clone()); let original_count = table.items.len(); @@ -137,11 +142,12 @@ mod property_tests { page_ops in 0usize..10 ) { let mut table = StatefulTable::::default(); - let movies: Vec = (0..list_size).map(|i| { - let mut movie = Movie::default(); - movie.id = i as i64; - movie - }).collect(); + let movies: Vec = (0..list_size) + .map(|i| Movie { + id: i as i64, + ..Movie::default() + }) + .collect(); table.set_items(movies); @@ -164,12 +170,13 @@ mod property_tests { filter_term in text_input_string() ) { let mut table = StatefulTable::::default(); - let movies: Vec = (0..list_size).map(|i| { - let mut movie = Movie::default(); - movie.id = i as i64; - movie.title = format!("Test Movie {}", i % 10).into(); - movie - }).collect(); + let movies: Vec = (0..list_size) + .map(|i| Movie { + id: i as i64, + title: format!("Test Movie {}", i % 10).into(), + ..Movie::default() + }) + .collect(); table.set_items(movies.clone()); let original_size = table.items.len(); diff --git a/src/handlers/handler_test_utils.rs b/src/handlers/handler_test_utils.rs index 4c81d576..7a567b83 100644 --- a/src/handlers/handler_test_utils.rs +++ b/src/handlers/handler_test_utils.rs @@ -1,6 +1,6 @@ #[cfg(test)] #[macro_use] -mod test_utils { +pub mod test_utils { #[macro_export] macro_rules! simple_stateful_iterable_vec { ($name:ident) => { @@ -411,4 +411,16 @@ mod test_utils { ); }; } + + pub mod proptest_helpers { + use proptest::prelude::*; + + pub fn list_size() -> impl Strategy { + 1usize..100 + } + + pub fn text_input_string() -> impl Strategy { + "\\PC{0,50}" + } + } } diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index 7c6a3402..533e6890 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -26,6 +26,9 @@ mod sonarr_handlers; #[path = "handlers_tests.rs"] mod handlers_tests; +#[cfg(test)] +mod handler_proptest; + #[cfg(test)] #[path = "handler_test_utils.rs"] pub mod handler_test_utils;