Fix fake SDL database backend to support multiple set calls 02/2202/1
authorTimo Tietavainen <timo.tietavainen@nokia.com>
Mon, 13 Jan 2020 16:32:29 +0000 (18:32 +0200)
committerTimo Tietavainen <timo.tietavainen@nokia.com>
Mon, 13 Jan 2020 16:32:29 +0000 (18:32 +0200)
Old fake SDL database backend implementation overwrote the whole fake
database (dictionary) with new key-values what were given in set() API
call. Fixed this to append received key-values in a set() API call to
the old values in the dictionary.

Signed-off-by: Timo Tietavainen <timo.tietavainen@nokia.com>
Change-Id: I8000ed86a1976951270c40d4d2358077ecc3785b

docs/release-notes.rst
ricsdl-package/ricsdl/backend/fake_dict_db.py
ricsdl-package/tests/backend/test_fake_dict_db.py

index 8951370..c7b927d 100644 (file)
@@ -33,7 +33,7 @@ This document provides the release notes of the ricsdl library.
 Version history
 ---------------
 
-[2.0.1] - 2020-01-08
+[2.0.1] - 2020-01-13
 
 * Add a fake database backend implementation to be used only for testing
   purposes when the real DBAAS database service is not available.
index 76e4dd9..51e6c18 100644 (file)
@@ -55,7 +55,7 @@ class FakeDictBackend(DbBackendAbc):
         pass
 
     def set(self, ns: str, data_map: Dict[str, bytes]) -> None:
-        self._db = data_map.copy()
+        self._db.update(data_map.copy())
 
     def set_if(self, ns: str, key: str, old_data: bytes, new_data: bytes) -> bool:
         if key not in self._db:
index 835514c..45b0f0f 100644 (file)
@@ -31,9 +31,11 @@ def fake_dict_backend_fixture(request):
     request.cls.ns = 'some-ns'
     request.cls.dm = {'abc': b'1', 'bcd': b'2'}
     request.cls.new_dm = {'abc': b'3', 'bcd': b'2'}
+    request.cls.dm2 = {'cdf': b'4'}
     request.cls.remove_dm = {'bcd': b'2'}
     request.cls.key = 'abc'
     request.cls.keys = ['abc', 'bcd']
+    request.cls.key2 = ['cdf']
     request.cls.old_data = b'1'
     request.cls.new_data = b'3'
     request.cls.keypattern = r'*bc*'
@@ -57,8 +59,11 @@ def fake_dict_backend_fixture(request):
 class TestFakeDictBackend:
     def test_set_function_success(self):
         self.db.set(self.ns, self.dm)
+        self.db.set(self.ns, self.dm2)
         ret = self.db.get(self.ns, self.keys)
         assert ret == self.dm
+        ret = self.db.get(self.ns, self.key2)
+        assert ret == self.dm2
 
     def test_set_if_function_success(self):
         self.db.set(self.ns, self.dm)