feat(ui): Sonarr support for the series details popup
This commit is contained in:
@@ -3,7 +3,6 @@ mod tests {
|
||||
use crate::models::stateful_list::StatefulList;
|
||||
use crate::models::stateful_table::{SortOption, StatefulTable};
|
||||
use crate::models::{HorizontallyScrollableText, Scrollable};
|
||||
use crate::ui::utils::layout_block;
|
||||
use crate::ui::widgets::managarr_table::ManagarrTable;
|
||||
use pretty_assertions::assert_eq;
|
||||
use ratatui::layout::{Alignment, Constraint};
|
||||
@@ -180,358 +179,6 @@ mod tests {
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_footer() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
let footer = "footer".to_owned();
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.footer(Some(footer.clone()));
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert_eq!(managarr_table.footer, Some(footer));
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_footer_alignment() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.footer_alignment(Alignment::Center);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Center);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_block() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.block(layout_block());
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert_eq!(managarr_table.block, layout_block());
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_margin() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)])).margin(1);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert_eq!(managarr_table.margin, 1);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_loading() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.loading(true);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert!(managarr_table.is_loading);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_highlight_rows() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.highlight_rows(false);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert!(!managarr_table.highlight_rows);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_sorting() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.sorting(true);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert!(managarr_table.is_sorting);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_is_searching() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.searching(true);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert!(managarr_table.is_searching);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_search_produced_empty_results() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.search_produced_empty_results(true);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert!(managarr_table.search_produced_empty_results);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_is_filtering() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.filtering(true);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert!(managarr_table.is_filtering);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_filter_produced_empty_results() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
let mut stateful_table = StatefulTable::default();
|
||||
stateful_table.set_items(items.clone());
|
||||
|
||||
let managarr_table =
|
||||
ManagarrTable::new(Some(&mut stateful_table), |&s| Row::new(vec![Cell::new(s)]))
|
||||
.filter_produced_empty_results(true);
|
||||
|
||||
let row_mapper = managarr_table.row_mapper;
|
||||
assert!(managarr_table.filter_produced_empty_results);
|
||||
assert_eq!(managarr_table.content.unwrap().items, items);
|
||||
assert_eq!(row_mapper(&"item1"), Row::new(vec![Cell::new("item1")]));
|
||||
assert_eq!(managarr_table.table_headers, Vec::<String>::new());
|
||||
assert_eq!(managarr_table.constraints, Vec::new());
|
||||
assert_eq!(managarr_table.footer, None);
|
||||
assert_eq!(managarr_table.footer_alignment, Alignment::Left);
|
||||
assert_eq!(managarr_table.block, Block::new());
|
||||
assert_eq!(managarr_table.margin, 0);
|
||||
assert!(!managarr_table.is_loading);
|
||||
assert!(managarr_table.highlight_rows);
|
||||
assert!(!managarr_table.is_sorting);
|
||||
assert!(!managarr_table.is_searching);
|
||||
assert!(!managarr_table.search_produced_empty_results);
|
||||
assert!(!managarr_table.is_filtering);
|
||||
assert_eq!(managarr_table.search_box_content_length, 0);
|
||||
assert_eq!(managarr_table.search_box_offset, 0);
|
||||
assert_eq!(managarr_table.filter_box_content_length, 0);
|
||||
assert_eq!(managarr_table.filter_box_offset, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_managarr_table_parse_headers() {
|
||||
let items = vec!["item1", "item2", "item3"];
|
||||
|
||||
Reference in New Issue
Block a user