aboutsummaryrefslogtreecommitdiffstats
path: root/src/document/testing.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-31 19:53:27 +0100
committertv <tv@krebsco.de>2026-10-31 19:53:27 +0100
commit6105507200231e67ba544c12aa10b988e1c23826 (patch)
tree880530b7401cb5d43f52e06a68b4d704326aa272 /src/document/testing.rs
parent8d7adfbdb7798cca9d9783761f290e3bd85d9a3a (diff)
use Automerge as Document instead of AutoCommit
This allows a lot of operations to drop mut.
Diffstat (limited to 'src/document/testing.rs')
-rw-r--r--src/document/testing.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/document/testing.rs b/src/document/testing.rs
index b34d85f..7b75a96 100644
--- a/src/document/testing.rs
+++ b/src/document/testing.rs
@@ -1,12 +1,13 @@
//! For tests: writing to documents the way the node does, one change at a time, so
//! that tests don't depend on how the engine groups writes into changes.
-use super::Document;
+use super::{Document, Transaction};
/// The writes `f` makes to `doc`, as one change; what `f` returns.
-pub(crate) fn change<T>(doc: &mut Document, f: impl FnOnce(&mut Document) -> T) -> T {
- let out = f(doc);
- doc.commit();
+pub(crate) fn change<T>(doc: &mut Document, f: impl FnOnce(&mut Transaction<'_>) -> T) -> T {
+ let mut transaction = doc.transaction();
+ let out = f(&mut transaction);
+ transaction.commit();
out
}
@@ -14,15 +15,16 @@ pub(crate) fn change<T>(doc: &mut Document, f: impl FnOnce(&mut Document) -> T)
/// `f` returns. Committed at time 0: the same writes make the same change.
pub(crate) fn try_change<T, E>(
doc: &mut Document,
- f: impl FnOnce(&mut Document) -> Result<T, E>,
+ f: impl FnOnce(&mut Transaction<'_>) -> Result<T, E>,
) -> Result<T, E> {
- let out = f(doc);
+ let mut transaction = doc.transaction();
+ let out = f(&mut transaction);
match &out {
Ok(_) => {
- doc.commit_with(automerge::transaction::CommitOptions::default().with_time(0));
+ transaction.commit_with(automerge::transaction::CommitOptions::default().with_time(0));
}
Err(_) => {
- doc.rollback();
+ transaction.rollback();
}
}
out