diff --git a/src/models/stateful_table.rs b/src/models/stateful_table.rs index 36488197..6ad579c5 100644 --- a/src/models/stateful_table.rs +++ b/src/models/stateful_table.rs @@ -100,7 +100,7 @@ where { fn page_down(&mut self) { let items_len = self.active_items().len(); - if items_len == 0 { + if items_len <= 1 { return; } @@ -113,7 +113,7 @@ where fn page_up(&mut self) { let items_len = self.active_items().len(); - if items_len == 0 { + if items_len <= 1 { return; } diff --git a/src/models/stateful_table_tests.rs b/src/models/stateful_table_tests.rs index 5e0311d0..c1851e69 100644 --- a/src/models/stateful_table_tests.rs +++ b/src/models/stateful_table_tests.rs @@ -239,6 +239,59 @@ mod tests { ); } + #[test] + fn test_stateful_table_pagination_on_single_item_table_performs_no_op() { + let mut stateful_table: StatefulTable = StatefulTable::default(); + stateful_table.set_items(vec!["Test 1".to_owned()]); + + assert_some_eq_x!(stateful_table.state.selected(), 0); + + stateful_table.page_down(); + + assert_some_eq_x!(stateful_table.state.selected(), 0); + + stateful_table.page_up(); + + assert_some_eq_x!(stateful_table.state.selected(), 0); + } + + #[test] + fn test_stateful_table_filtered_pagination_on_single_item_table_performs_no_op() { + let mut filtered_stateful_table: StatefulTable = StatefulTable::default(); + filtered_stateful_table.set_filtered_items(vec!["Test 1".to_owned()]); + + assert_some_eq_x!( + filtered_stateful_table + .filtered_state + .as_ref() + .unwrap() + .selected(), + 0 + ); + + filtered_stateful_table.page_down(); + + assert_some_eq_x!( + filtered_stateful_table + .filtered_state + .as_ref() + .unwrap() + .selected(), + 0 + ); + + filtered_stateful_table.page_up(); + + assert_some_eq_x!( + filtered_stateful_table + .filtered_state + .as_ref() + .unwrap() + .selected(), + 0 + ); + } + #[test] fn test_stateful_table_pagination() { let mut stateful_table = StatefulTable::default();