Skip to content

Commit 579451a

Browse files
committed
tests: split YAML navigation tests by operation
1 parent 50ccf28 commit 579451a

6 files changed

Lines changed: 98 additions & 61 deletions

File tree

‎promkit-widgets/tests/tests.rs‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ mod jsonz {
1313
}
1414

1515
mod yamlz {
16+
mod down;
1617
mod extract;
18+
mod head;
1719
mod multi_documents;
18-
mod navigation;
20+
mod tail;
21+
mod toggle;
22+
mod up;
1923
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use promkit_widgets::yaml::yamlz::{Row, RowOperation, create_rows};
2+
3+
fn sequence_mapping_rows() -> Vec<Row> {
4+
let input = serde_yaml::from_str::<serde_yaml::Value>(
5+
r#"
6+
- name: alice
7+
age: 20
8+
- tail
9+
"#,
10+
)
11+
.unwrap();
12+
13+
create_rows([&input])
14+
}
15+
16+
#[test]
17+
fn down_skips_a_mapping_key_merged_into_its_sequence_item() {
18+
let rows = sequence_mapping_rows();
19+
20+
// Row 1 and row 2 render together as "- name: alice", so moving down
21+
// from that line should select "age: 20" at row 3.
22+
assert_eq!(rows.down(1), 3);
23+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use promkit_widgets::yaml::{
2+
Document,
3+
yamlz::{RowOperation, create_rows},
4+
};
5+
6+
#[test]
7+
fn document_starts_on_the_first_visible_root_mapping_key() {
8+
let input = serde_yaml::from_str::<serde_yaml::Value>("apiVersion: v1\nkind: Pod\n").unwrap();
9+
let document = Document::new([&input]);
10+
11+
let extracted = document.extract_rows_from_current(1);
12+
13+
assert_eq!(extracted[0].key.as_deref(), Some("apiVersion"));
14+
}
15+
16+
#[test]
17+
fn a_collapsed_root_container_remains_navigable() {
18+
let input = serde_yaml::from_str::<serde_yaml::Value>("apiVersion: v1\nkind: Pod\n").unwrap();
19+
let mut rows = create_rows([&input]);
20+
21+
rows.toggle(0);
22+
23+
assert_eq!(rows.head(), 0);
24+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
use promkit_widgets::yaml::yamlz::{RowOperation, create_rows};
2+
3+
#[test]
4+
fn tail_does_not_stop_on_a_merged_mapping_key() {
5+
let input = serde_yaml::from_str::<serde_yaml::Value>(
6+
r#"
7+
- name: alice
8+
"#,
9+
)
10+
.unwrap();
11+
let rows = create_rows([&input]);
12+
13+
assert_eq!(rows.tail(), 1);
14+
}
Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,6 @@ fn sequence_mapping_rows() -> Vec<Row> {
1717
create_rows([&input])
1818
}
1919

20-
#[test]
21-
fn down_skips_a_mapping_key_merged_into_its_sequence_item() {
22-
let rows = sequence_mapping_rows();
23-
24-
// Row 1 and row 2 render together as "- name: alice", so moving down
25-
// from that line should select "age: 20" at row 3.
26-
assert_eq!(rows.down(1), 3);
27-
}
28-
29-
#[test]
30-
fn up_skips_a_mapping_key_merged_into_its_sequence_item() {
31-
let rows = sequence_mapping_rows();
32-
33-
// Moving up from "age: 20" should select the combined
34-
// "- name: alice" line at row 1, not its key row at row 2.
35-
assert_eq!(rows.up(3), 1);
36-
}
37-
3820
#[test]
3921
fn toggle_on_a_scalar_sequence_item_key_is_a_no_op() {
4022
let mut rows = sequence_mapping_rows();
@@ -69,48 +51,6 @@ fn toggle_from_a_merged_scalar_key_is_a_no_op() {
6951
assert_eq!(rendered, vec!["- name: alice"]);
7052
}
7153

72-
#[test]
73-
fn tail_does_not_stop_on_a_merged_mapping_key() {
74-
let input = serde_yaml::from_str::<serde_yaml::Value>(
75-
r#"
76-
- name: alice
77-
"#,
78-
)
79-
.unwrap();
80-
let rows = create_rows([&input]);
81-
82-
assert_eq!(rows.tail(), 1);
83-
}
84-
85-
#[test]
86-
fn document_starts_on_the_first_visible_root_mapping_key() {
87-
let input = serde_yaml::from_str::<serde_yaml::Value>("apiVersion: v1\nkind: Pod\n").unwrap();
88-
let document = Document::new([&input]);
89-
90-
let extracted = document.extract_rows_from_current(1);
91-
92-
assert_eq!(extracted[0].key.as_deref(), Some("apiVersion"));
93-
}
94-
95-
#[test]
96-
fn up_from_the_first_root_mapping_key_does_not_select_the_invisible_root() {
97-
let input = serde_yaml::from_str::<serde_yaml::Value>("apiVersion: v1\nkind: Pod\n").unwrap();
98-
let rows = create_rows([&input]);
99-
100-
assert_eq!(rows.head(), 1);
101-
assert_eq!(rows.up(1), 1);
102-
}
103-
104-
#[test]
105-
fn a_collapsed_root_container_remains_navigable() {
106-
let input = serde_yaml::from_str::<serde_yaml::Value>("apiVersion: v1\nkind: Pod\n").unwrap();
107-
let mut rows = create_rows([&input]);
108-
109-
rows.toggle(0);
110-
111-
assert_eq!(rows.head(), 0);
112-
}
113-
11454
#[test]
11555
fn toggle_on_the_first_root_scalar_key_is_a_no_op() {
11656
let input = serde_yaml::from_str::<serde_yaml::Value>("apiVersion: v1\nkind: Pod\n").unwrap();

‎promkit-widgets/tests/yamlz/up.rs‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
use promkit_widgets::yaml::yamlz::{Row, RowOperation, create_rows};
2+
3+
fn sequence_mapping_rows() -> Vec<Row> {
4+
let input = serde_yaml::from_str::<serde_yaml::Value>(
5+
r#"
6+
- name: alice
7+
age: 20
8+
- tail
9+
"#,
10+
)
11+
.unwrap();
12+
13+
create_rows([&input])
14+
}
15+
16+
#[test]
17+
fn up_skips_a_mapping_key_merged_into_its_sequence_item() {
18+
let rows = sequence_mapping_rows();
19+
20+
// Moving up from "age: 20" should select the combined
21+
// "- name: alice" line at row 1, not its key row at row 2.
22+
assert_eq!(rows.up(3), 1);
23+
}
24+
25+
#[test]
26+
fn up_from_the_first_root_mapping_key_does_not_select_the_invisible_root() {
27+
let input = serde_yaml::from_str::<serde_yaml::Value>("apiVersion: v1\nkind: Pod\n").unwrap();
28+
let rows = create_rows([&input]);
29+
30+
assert_eq!(rows.head(), 1);
31+
assert_eq!(rows.up(1), 1);
32+
}

0 commit comments

Comments
 (0)