UPDATE: Adds web app (#79)

Things missing:

* Browse mode
* Front end tests
* Storybook
This commit is contained in:
Nicolás Hatcher Andrés
2024-08-18 11:44:16 +02:00
committed by GitHub
parent 083548608e
commit dc23a7f29c
89 changed files with 11245 additions and 364 deletions

View File

@@ -0,0 +1,136 @@
#![allow(clippy::unwrap_used)]
use crate::{
constants::{
DEFAULT_COLUMN_WIDTH, DEFAULT_ROW_HEIGHT, DEFAULT_WINDOW_HEIGH, DEFAULT_WINDOW_WIDTH,
LAST_COLUMN,
},
test::util::new_empty_model,
UserModel,
};
#[test]
fn basic_navigation() {
let model = new_empty_model();
let mut model = UserModel::from_model(model);
model.on_arrow_right().unwrap();
let view = model.get_selected_view();
assert_eq!(view.range, [1, 2, 1, 2]);
assert_eq!(view.column, 2);
assert_eq!(view.row, 1);
model.on_arrow_left().unwrap();
let view = model.get_selected_view();
assert_eq!(view.range, [1, 1, 1, 1]);
assert_eq!(view.column, 1);
assert_eq!(view.row, 1);
model.on_arrow_left().unwrap();
let view = model.get_selected_view();
assert_eq!(view.range, [1, 1, 1, 1]);
assert_eq!(view.column, 1);
assert_eq!(view.row, 1);
model.on_arrow_down().unwrap();
let view = model.get_selected_view();
assert_eq!(view.range, [2, 1, 2, 1]);
assert_eq!(view.column, 1);
assert_eq!(view.row, 2);
model.on_arrow_up().unwrap();
let view = model.get_selected_view();
assert_eq!(view.range, [1, 1, 1, 1]);
assert_eq!(view.column, 1);
assert_eq!(view.row, 1);
model.on_arrow_up().unwrap();
let view = model.get_selected_view();
assert_eq!(view.range, [1, 1, 1, 1]);
assert_eq!(view.column, 1);
assert_eq!(view.row, 1);
}
#[test]
fn scroll_right() {
let window_width = DEFAULT_WINDOW_WIDTH as f64;
let column_width = DEFAULT_COLUMN_WIDTH;
let column_count = f64::floor(window_width / column_width) as i32;
let model = new_empty_model();
let mut model = UserModel::from_model(model);
model.on_arrow_right().unwrap();
model.set_selected_cell(3, column_count).unwrap();
model.on_arrow_right().unwrap();
let view = model.get_selected_view();
assert_eq!(view.left_column, 2);
model.on_arrow_right().unwrap();
let view = model.get_selected_view();
assert_eq!(view.left_column, 3);
}
#[test]
fn last_colum() {
let model = new_empty_model();
let mut model = UserModel::from_model(model);
model.set_selected_cell(3, LAST_COLUMN).unwrap();
let view = model.get_selected_view();
assert_eq!(view.column, LAST_COLUMN);
model.on_arrow_right().unwrap();
let view = model.get_selected_view();
assert_eq!(view.column, LAST_COLUMN);
}
#[test]
fn page_down() {
let model = new_empty_model();
let mut model = UserModel::from_model(model);
let window_height = DEFAULT_WINDOW_HEIGH as f64;
let row_height = DEFAULT_ROW_HEIGHT;
let row_count = f64::floor(window_height / row_height) as i32;
model.on_page_down().unwrap();
let view = model.get_selected_view();
assert_eq!(view.row, 1 + row_count);
let scroll_y = model.get_scroll_y().unwrap();
assert_eq!(scroll_y, (row_count as f64) * DEFAULT_ROW_HEIGHT);
}
// we just test that page up and page down are inverse operations
#[test]
fn page_up() {
let model = new_empty_model();
let mut model = UserModel::from_model(model);
model.on_page_down().unwrap();
let row1 = model.get_selected_view().row;
model.on_page_down().unwrap();
let row2 = model.get_selected_view().row;
model.on_page_down().unwrap();
let row3 = model.get_selected_view().row;
model.on_page_down().unwrap();
model.on_page_up().unwrap();
assert_eq!(model.get_selected_view().row, row3);
model.on_page_up().unwrap();
assert_eq!(model.get_selected_view().row, row2);
model.on_page_up().unwrap();
assert_eq!(model.get_selected_view().row, row1);
model.on_page_up().unwrap();
assert_eq!(model.get_selected_view().row, 1);
}
#[test]
fn page_up_fails_on_row1() {
let model = new_empty_model();
let mut model = UserModel::from_model(model);
model.on_arrow_up().unwrap();
assert_eq!(model.get_selected_view().row, 1);
}