summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--muck/__init__.py8
-rw-r--r--muck/change.py4
-rw-r--r--muck/change_tests.py22
3 files changed, 33 insertions, 1 deletions
diff --git a/muck/__init__.py b/muck/__init__.py
index 16bd12f..5e20126 100644
--- a/muck/__init__.py
+++ b/muck/__init__.py
@@ -14,5 +14,11 @@
from .exc import Error
-from .change import Change, CreateChange, UpdateChange, DeleteChange
+from .change import (
+ Change,
+ CreateChange,
+ UpdateChange,
+ DeleteChange,
+ create_change_from_log_entry,
+)
from .mem import MemoryStore
diff --git a/muck/change.py b/muck/change.py
index d5a3fd2..9495b14 100644
--- a/muck/change.py
+++ b/muck/change.py
@@ -57,3 +57,7 @@ class DeleteChange(Change):
def __init__(self, meta=None, res=None):
super().__init__(op='delete', meta=meta, res={})
+
+
+def create_change_from_log_entry(entry):
+ return Change(op=entry['op'], meta=entry['meta'], res=entry['res'])
diff --git a/muck/change_tests.py b/muck/change_tests.py
index 7c1fd34..5cae9ce 100644
--- a/muck/change_tests.py
+++ b/muck/change_tests.py
@@ -91,3 +91,25 @@ class ChangeTests(unittest.TestCase):
},
'res': {},
})
+
+
+class CreateChangeFromLogEntryTests(unittest.TestCase):
+
+ def test_creates_create(self):
+ entry = {
+ 'op': 'create',
+ 'meta': {
+ 'id': 'id-1',
+ 'rev': 'rev-1',
+ },
+ 'res': {
+ 'foo': 'bar',
+ },
+ }
+
+ chg = muck.create_change_from_log_entry(entry)
+
+ self.assertEqual(chg.get_op(), 'create')
+ self.assertEqual(chg.get_id(), 'id-1')
+ self.assertEqual(chg.get_rev(), 'rev-1')
+ self.assertEqual(chg.get_res(), entry['res'])