Another implementation of undo/redo
This commit is contained in:
@@ -235,3 +235,40 @@ def test_put_many_save_only_if_necessary(engine):
|
||||
|
||||
entry_content = engine.load(FAKE_USER_ID, "MyEntry")
|
||||
assert entry_content[TAG_PARENT] == [None] # Still None, nothing was save
|
||||
|
||||
|
||||
def test_i_can_retrieve_history_using_put(engine):
|
||||
engine.put(FAKE_USER_ID, FAKE_USER_EMAIL, "MyEntry", "key1", DummyObj(1, "a", False))
|
||||
engine.put(FAKE_USER_ID, FAKE_USER_EMAIL, "MyEntry", "key1", DummyObj(2, "a", False))
|
||||
engine.put(FAKE_USER_ID, FAKE_USER_EMAIL, "MyEntry", "key1", DummyObj(3, "a", False))
|
||||
|
||||
history = engine.history(FAKE_USER_ID, "MyEntry")
|
||||
assert len(history) == 3
|
||||
|
||||
v0 = engine.load(FAKE_USER_ID, "MyEntry", history[0])
|
||||
v1 = engine.load(FAKE_USER_ID, "MyEntry", history[1])
|
||||
v2 = engine.load(FAKE_USER_ID, "MyEntry", history[2])
|
||||
|
||||
assert v0["key1"] == DummyObj(3, "a", False)
|
||||
assert v1["key1"] == DummyObj(2, "a", False)
|
||||
assert v2["key1"] == DummyObj(1, "a", False)
|
||||
|
||||
assert v2[TAG_PARENT] == [None]
|
||||
|
||||
def test_i_can_retrieve_history_using_save(engine):
|
||||
engine.save(FAKE_USER_ID, FAKE_USER_EMAIL, "MyEntry", {"key1" : DummyObj(1, "a", False)})
|
||||
engine.save(FAKE_USER_ID, FAKE_USER_EMAIL, "MyEntry", {"key1" : DummyObj(2, "a", False)})
|
||||
engine.save(FAKE_USER_ID, FAKE_USER_EMAIL, "MyEntry", {"key1" : DummyObj(3, "a", False)})
|
||||
|
||||
history = engine.history(FAKE_USER_ID, "MyEntry")
|
||||
assert len(history) == 3
|
||||
|
||||
v0 = engine.load(FAKE_USER_ID, "MyEntry", history[0])
|
||||
v1 = engine.load(FAKE_USER_ID, "MyEntry", history[1])
|
||||
v2 = engine.load(FAKE_USER_ID, "MyEntry", history[2])
|
||||
|
||||
assert v0["key1"] == DummyObj(3, "a", False)
|
||||
assert v1["key1"] == DummyObj(2, "a", False)
|
||||
assert v2["key1"] == DummyObj(1, "a", False)
|
||||
|
||||
assert v2[TAG_PARENT] == [None]
|
||||
Reference in New Issue
Block a user