test: wire the handler property tests and make the proptest recipe run them
handler_proptest.rs was committed without ever being declared as a module, and it imported a list_size strategy that did not exist, so it never compiled. The proptest recipe filtered on a test name substring that matched no test. Declare the module, add the two strategies it needs, and pass both property test filters to libtest so the recipe runs the ui and handler property tests.
This commit is contained in:
4 files changed
+54
-32
No files matched your search
@@ -49,7 +49,7 @@ doctest:
|
|||||||
# Run all proptests
|
# Run all proptests
|
||||||
[group: 'test']
|
[group: 'test']
|
||||||
proptest:
|
proptest:
|
||||||
@cargo test proptest
|
@cargo test -- property_tests proptest
|
||||||
|
|
||||||
alias test-snapshots := snapshot-tests
|
alias test-snapshots := snapshot-tests
|
||||||
# Run all snapshot tests
|
# Run all snapshot tests
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ mod property_tests {
|
|||||||
use proptest::prelude::*;
|
use proptest::prelude::*;
|
||||||
|
|
||||||
use crate::app::App;
|
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::radarr_models::Movie;
|
||||||
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
|
||||||
use crate::models::stateful_table::StatefulTable;
|
use crate::models::stateful_table::StatefulTable;
|
||||||
@@ -16,11 +18,12 @@ mod property_tests {
|
|||||||
index in 0usize..1000
|
index in 0usize..1000
|
||||||
) {
|
) {
|
||||||
let mut table = StatefulTable::<Movie>::default();
|
let mut table = StatefulTable::<Movie>::default();
|
||||||
let movies: Vec<Movie> = (0..list_size).map(|i| {
|
let movies: Vec<Movie> = (0..list_size)
|
||||||
let mut movie = Movie::default();
|
.map(|i| Movie {
|
||||||
movie.id = i as i64;
|
id: i as i64,
|
||||||
movie
|
..Movie::default()
|
||||||
}).collect();
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
table.set_items(movies);
|
table.set_items(movies);
|
||||||
|
|
||||||
@@ -39,11 +42,12 @@ mod property_tests {
|
|||||||
scroll_amount in 0usize..20
|
scroll_amount in 0usize..20
|
||||||
) {
|
) {
|
||||||
let mut table = StatefulTable::<Movie>::default();
|
let mut table = StatefulTable::<Movie>::default();
|
||||||
let movies: Vec<Movie> = (0..list_size).map(|i| {
|
let movies: Vec<Movie> = (0..list_size)
|
||||||
let mut movie = Movie::default();
|
.map(|i| Movie {
|
||||||
movie.id = i as i64;
|
id: i as i64,
|
||||||
movie
|
..Movie::default()
|
||||||
}).collect();
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
table.set_items(movies);
|
table.set_items(movies);
|
||||||
let initial_id = table.current_selection().id;
|
let initial_id = table.current_selection().id;
|
||||||
@@ -76,7 +80,7 @@ mod property_tests {
|
|||||||
let mut app = App::test_default();
|
let mut app = App::test_default();
|
||||||
let initial_route = app.get_current_route();
|
let initial_route = app.get_current_route();
|
||||||
|
|
||||||
let routes = vec![
|
let routes = [
|
||||||
ActiveRadarrBlock::Movies,
|
ActiveRadarrBlock::Movies,
|
||||||
ActiveRadarrBlock::Collections,
|
ActiveRadarrBlock::Collections,
|
||||||
ActiveRadarrBlock::Downloads,
|
ActiveRadarrBlock::Downloads,
|
||||||
@@ -111,15 +115,16 @@ mod property_tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_table_data_integrity(
|
fn test_table_data_integrity(
|
||||||
list_size in 1usize..100
|
list_size in list_size()
|
||||||
) {
|
) {
|
||||||
let mut table = StatefulTable::<Movie>::default();
|
let mut table = StatefulTable::<Movie>::default();
|
||||||
let movies: Vec<Movie> = (0..list_size).map(|i| {
|
let movies: Vec<Movie> = (0..list_size)
|
||||||
let mut movie = Movie::default();
|
.map(|i| Movie {
|
||||||
movie.id = i as i64;
|
id: i as i64,
|
||||||
movie.title = format!("Movie {}", i).into();
|
title: format!("Movie {i}").into(),
|
||||||
movie
|
..Movie::default()
|
||||||
}).collect();
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
table.set_items(movies.clone());
|
table.set_items(movies.clone());
|
||||||
let original_count = table.items.len();
|
let original_count = table.items.len();
|
||||||
@@ -137,11 +142,12 @@ mod property_tests {
|
|||||||
page_ops in 0usize..10
|
page_ops in 0usize..10
|
||||||
) {
|
) {
|
||||||
let mut table = StatefulTable::<Movie>::default();
|
let mut table = StatefulTable::<Movie>::default();
|
||||||
let movies: Vec<Movie> = (0..list_size).map(|i| {
|
let movies: Vec<Movie> = (0..list_size)
|
||||||
let mut movie = Movie::default();
|
.map(|i| Movie {
|
||||||
movie.id = i as i64;
|
id: i as i64,
|
||||||
movie
|
..Movie::default()
|
||||||
}).collect();
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
table.set_items(movies);
|
table.set_items(movies);
|
||||||
|
|
||||||
@@ -164,12 +170,13 @@ mod property_tests {
|
|||||||
filter_term in text_input_string()
|
filter_term in text_input_string()
|
||||||
) {
|
) {
|
||||||
let mut table = StatefulTable::<Movie>::default();
|
let mut table = StatefulTable::<Movie>::default();
|
||||||
let movies: Vec<Movie> = (0..list_size).map(|i| {
|
let movies: Vec<Movie> = (0..list_size)
|
||||||
let mut movie = Movie::default();
|
.map(|i| Movie {
|
||||||
movie.id = i as i64;
|
id: i as i64,
|
||||||
movie.title = format!("Test Movie {}", i % 10).into();
|
title: format!("Test Movie {}", i % 10).into(),
|
||||||
movie
|
..Movie::default()
|
||||||
}).collect();
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
table.set_items(movies.clone());
|
table.set_items(movies.clone());
|
||||||
let original_size = table.items.len();
|
let original_size = table.items.len();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
mod test_utils {
|
pub mod test_utils {
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! simple_stateful_iterable_vec {
|
macro_rules! simple_stateful_iterable_vec {
|
||||||
($name:ident) => {
|
($name:ident) => {
|
||||||
@@ -411,4 +411,16 @@ mod test_utils {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub mod proptest_helpers {
|
||||||
|
use proptest::prelude::*;
|
||||||
|
|
||||||
|
pub fn list_size() -> impl Strategy<Value = usize> {
|
||||||
|
1usize..100
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn text_input_string() -> impl Strategy<Value = String> {
|
||||||
|
"\\PC{0,50}"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,9 @@ mod sonarr_handlers;
|
|||||||
#[path = "handlers_tests.rs"]
|
#[path = "handlers_tests.rs"]
|
||||||
mod handlers_tests;
|
mod handlers_tests;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod handler_proptest;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
#[path = "handler_test_utils.rs"]
|
#[path = "handler_test_utils.rs"]
|
||||||
pub mod handler_test_utils;
|
pub mod handler_test_utils;
|
||||||
|
|||||||
Reference in new issue
Block a user