mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-22 11:13:09 +02:00
add test for syncing deletes and creates
This commit is contained in:
parent
41acb1fa1e
commit
04f6b1d421
2 changed files with 54 additions and 1 deletions
2
TODO.txt
2
TODO.txt
|
@ -12,4 +12,4 @@
|
|||
- need to be sure that create / delete operations don't get reversed
|
||||
* cli tools
|
||||
* prop testing for DB modifications
|
||||
- 'strict' mode to fail on application of any nonsense operations
|
||||
- generate a non-failing sequence of operations with syncs interspersed
|
||||
|
|
|
@ -61,3 +61,56 @@ fn test_sync() {
|
|||
db1.sync("me", &mut server);
|
||||
assert_eq!(db1.tasks(), db2.tasks());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_sync_create_delete() {
|
||||
let mut server = Server::new();
|
||||
|
||||
let mut db1 = DB::new();
|
||||
db1.sync("me", &mut server);
|
||||
|
||||
let mut db2 = DB::new();
|
||||
db2.sync("me", &mut server);
|
||||
|
||||
// create and update a task..
|
||||
let uuid = Uuid::new_v4();
|
||||
db1.apply(Operation::Create { uuid }).unwrap();
|
||||
db1.apply(Operation::Update {
|
||||
uuid: uuid,
|
||||
property: "title".into(),
|
||||
value: Some("my first task".into()),
|
||||
timestamp: Utc::now(),
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
// and synchronize those around
|
||||
db1.sync("me", &mut server);
|
||||
db2.sync("me", &mut server);
|
||||
db1.sync("me", &mut server);
|
||||
assert_eq!(db1.tasks(), db2.tasks());
|
||||
|
||||
// delete and re-create the task on db1
|
||||
db1.apply(Operation::Delete { uuid }).unwrap();
|
||||
db1.apply(Operation::Create { uuid }).unwrap();
|
||||
db1.apply(Operation::Update {
|
||||
uuid: uuid,
|
||||
property: "title".into(),
|
||||
value: Some("my second task".into()),
|
||||
timestamp: Utc::now(),
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
// and on db2, update a property of the task
|
||||
db2.apply(Operation::Update {
|
||||
uuid: uuid,
|
||||
property: "project".into(),
|
||||
value: Some("personal".into()),
|
||||
timestamp: Utc::now(),
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
db1.sync("me", &mut server);
|
||||
db2.sync("me", &mut server);
|
||||
db1.sync("me", &mut server);
|
||||
assert_eq!(db1.tasks(), db2.tasks());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue