Skip to content

Commit ef185cd

Browse files
committed
refactor: add at_path suffix to transaction builder
1 parent 1801a47 commit ef185cd

File tree

2 files changed

+54
-27
lines changed

2 files changed

+54
-27
lines changed

shared-lib/lib-ot/src/core/document/transaction.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ impl<'a> TransactionBuilder<'a> {
2727
}
2828
}
2929

30-
pub fn insert_nodes(&mut self, path: &Position, nodes: &[NodeData]) {
30+
pub fn insert_nodes_at_path(&mut self, path: &Position, nodes: &[NodeData]) {
3131
self.push(DocumentOperation::Insert(InsertOperation {
3232
path: path.clone(),
3333
nodes: nodes.to_vec(),
3434
}));
3535
}
3636

37-
pub fn update_attributes(&mut self, path: &Position, attributes: HashMap<String, Option<String>>) {
37+
pub fn update_attributes_at_path(&mut self, path: &Position, attributes: HashMap<String, Option<String>>) {
3838
let mut old_attributes: HashMap<String, Option<String>> = HashMap::new();
3939
let node = self.document.node_at_path(path).unwrap();
4040
let node_data = self.document.arena.get(node).unwrap().get();
@@ -55,11 +55,11 @@ impl<'a> TransactionBuilder<'a> {
5555
}))
5656
}
5757

58-
pub fn delete_node(&mut self, path: &Position) {
59-
self.delete_nodes(path, 1);
58+
pub fn delete_node_at_path(&mut self, path: &Position) {
59+
self.delete_nodes_at_path(path, 1);
6060
}
6161

62-
pub fn delete_nodes(&mut self, path: &Position, length: usize) {
62+
pub fn delete_nodes_at_path(&mut self, path: &Position, length: usize) {
6363
let mut node = self.document.node_at_path(path).unwrap();
6464
let mut deleted_nodes: Vec<NodeData> = Vec::new();
6565

shared-lib/lib-ot/tests/main.rs

Lines changed: 49 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,33 @@ fn main() {
1010
#[test]
1111
fn test_documents() {
1212
let mut document = DocumentTree::new();
13-
let mut tb = TransactionBuilder::new(&document);
14-
tb.insert_nodes(&vec![0].into(), &vec![NodeData::new("text")]);
15-
let transaction = tb.finalize();
13+
let transaction = {
14+
let mut tb = TransactionBuilder::new(&document);
15+
tb.insert_nodes_at_path(&vec![0].into(), &vec![NodeData::new("text")]);
16+
tb.finalize()
17+
};
1618
document.apply(transaction);
1719

1820
assert!(document.node_at_path(&vec![0].into()).is_some());
1921
let node = document.node_at_path(&vec![0].into()).unwrap();
2022
let node_data = document.arena.get(node).unwrap().get();
2123
assert_eq!(node_data.node_type, "text");
2224

23-
let mut tb = TransactionBuilder::new(&document);
24-
tb.update_attributes(
25-
&vec![0].into(),
26-
HashMap::from([("subtype".into(), Some("bullet-list".into()))]),
27-
);
28-
let transaction = tb.finalize();
25+
let transaction = {
26+
let mut tb = TransactionBuilder::new(&document);
27+
tb.update_attributes_at_path(
28+
&vec![0].into(),
29+
HashMap::from([("subtype".into(), Some("bullet-list".into()))]),
30+
);
31+
tb.finalize()
32+
};
2933
document.apply(transaction);
3034

31-
let mut tb = TransactionBuilder::new(&document);
32-
tb.delete_node(&vec![0].into());
33-
let transaction = tb.finalize();
35+
let transaction = {
36+
let mut tb = TransactionBuilder::new(&document);
37+
tb.delete_node_at_path(&vec![0].into());
38+
tb.finalize()
39+
};
3440
document.apply(transaction);
3541
assert!(document.node_at_path(&vec![0].into()).is_none());
3642
}
@@ -40,16 +46,16 @@ fn test_inserts_nodes() {
4046
let mut document = DocumentTree::new();
4147
let transaction = {
4248
let mut tb = TransactionBuilder::new(&document);
43-
tb.insert_nodes(&vec![0].into(), &vec![NodeData::new("text")]);
44-
tb.insert_nodes(&vec![1].into(), &vec![NodeData::new("text")]);
45-
tb.insert_nodes(&vec![2].into(), &vec![NodeData::new("text")]);
49+
tb.insert_nodes_at_path(&vec![0].into(), &vec![NodeData::new("text")]);
50+
tb.insert_nodes_at_path(&vec![1].into(), &vec![NodeData::new("text")]);
51+
tb.insert_nodes_at_path(&vec![2].into(), &vec![NodeData::new("text")]);
4652
tb.finalize()
4753
};
4854
document.apply(transaction);
4955

5056
let transaction = {
5157
let mut tb = TransactionBuilder::new(&document);
52-
tb.insert_nodes(&vec![1].into(), &vec![NodeData::new("text")]);
58+
tb.insert_nodes_at_path(&vec![1].into(), &vec![NodeData::new("text")]);
5359
tb.finalize()
5460
};
5561
document.apply(transaction);
@@ -60,18 +66,16 @@ fn test_update_nodes() {
6066
let mut document = DocumentTree::new();
6167
let transaction = {
6268
let mut tb = TransactionBuilder::new(&document);
63-
tb.insert_nodes(&vec![0].into(), &vec![NodeData::new("text")]);
64-
tb.insert_nodes(&vec![1].into(), &vec![NodeData::new("text")]);
65-
tb.insert_nodes(&vec![2].into(), &vec![NodeData::new("text")]);
69+
tb.insert_nodes_at_path(&vec![0].into(), &vec![NodeData::new("text")]);
70+
tb.insert_nodes_at_path(&vec![1].into(), &vec![NodeData::new("text")]);
71+
tb.insert_nodes_at_path(&vec![2].into(), &vec![NodeData::new("text")]);
6672
tb.finalize()
6773
};
6874
document.apply(transaction);
6975

7076
let transaction = {
7177
let mut tb = TransactionBuilder::new(&document);
72-
tb.update_attributes(&vec![1].into(), HashMap::from([
73-
("bolded".into(), Some("true".into())),
74-
]));
78+
tb.update_attributes_at_path(&vec![1].into(), HashMap::from([("bolded".into(), Some("true".into()))]));
7579
tb.finalize()
7680
};
7781
document.apply(transaction);
@@ -81,3 +85,26 @@ fn test_update_nodes() {
8185
let is_bold = node_data.attributes.borrow().0.get("bolded").unwrap().clone();
8286
assert_eq!(is_bold.unwrap(), "true");
8387
}
88+
89+
#[test]
90+
fn test_delete_nodes() {
91+
let mut document = DocumentTree::new();
92+
let transaction = {
93+
let mut tb = TransactionBuilder::new(&document);
94+
tb.insert_nodes_at_path(&vec![0].into(), &vec![NodeData::new("text")]);
95+
tb.insert_nodes_at_path(&vec![1].into(), &vec![NodeData::new("text")]);
96+
tb.insert_nodes_at_path(&vec![2].into(), &vec![NodeData::new("text")]);
97+
tb.finalize()
98+
};
99+
document.apply(transaction);
100+
101+
let transaction = {
102+
let mut tb = TransactionBuilder::new(&document);
103+
tb.delete_node_at_path(&Position(vec![1]));
104+
tb.finalize()
105+
};
106+
document.apply(transaction);
107+
108+
let len = document.root.children(&document.arena).fold(0, |count, _| count + 1);
109+
assert_eq!(len, 2);
110+
}

0 commit comments

Comments
 (0)