summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-10-19 20:25:32 +0300
committerLars Wirzenius <liw@liw.fi>2018-10-19 20:27:00 +0300
commitf38fb52b956762c80e27a0054b370391e943eeab (patch)
tree20bd00aa208783d28bcdde911b3bb37bf5b1637b
parent479a267173a93be604102746be94b9a64fcb7330 (diff)
downloadmuck-poc-f38fb52b956762c80e27a0054b370391e943eeab.tar.gz
Add: create_change_from_log_entry
-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'])