Skip to content

Commit 11248ad

Browse files
committed
RDBC-768 canModifyDictionaryWithPatch_Add
1 parent a657460 commit 11248ad

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

ravendb/documents/session/misc.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
_T_Key = TypeVar("_T_Key")
2222
_T_Value = TypeVar("_T_Value")
2323

24+
2425
class TransactionMode(Enum):
2526
SINGLE_NODE = "single_node"
2627
CLUSTER_WIDE = "cluster_wide"
@@ -233,7 +234,7 @@ def _get_next_argument_name(self) -> str:
233234
self._arg_counter += 1
234235
return f"val_{self._arg_counter - 1}_{self._suffix}"
235236

236-
def put(self, key: _T_Key, value:_T_Value) -> JavaScriptMap[_T_Key, _T_Value]:
237+
def put(self, key: _T_Key, value: _T_Value) -> JavaScriptMap[_T_Key, _T_Value]:
237238
argument_name = self._get_next_argument_name()
238239

239240
self._script_lines.append(f"this.{self._path_to_map}.{key} = args.{argument_name};")

ravendb/tests/jvm_migrated_tests/issues_tests/test_ravenDB_13452.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,36 @@
22

33
from ravendb.tests.test_base import TestBase
44

5+
56
class Item:
67
def __init__(self, values: Dict[str, str] = None):
78
self.values = values
89

10+
911
class TestRavenDB13452(TestBase):
1012
def setUp(self):
1113
super().setUp()
1214

15+
def test_can_modify_dictionary_with_patch_add(self):
16+
with self.store.open_session() as session:
17+
item = Item({"Key1": "Value1", "Key2": "Value2"})
18+
session.store(item, "items/1")
19+
session.save_changes()
20+
21+
with self.store.open_session() as session:
22+
item = session.load("items/1", Item)
23+
session.advanced.patch_object(item, "values", lambda dict_: dict_.put("Key3", "Value3"))
24+
session.save_changes()
25+
26+
with self.store.open_session() as session:
27+
item = session.load("items/1", dict)
28+
values = item.get("values", None)
29+
self.assertIsNotNone(values)
30+
self.assertEqual(3, len(values))
31+
self.assertEqual("Value1", values.get("Key1"))
32+
self.assertEqual("Value2", values.get("Key2"))
33+
self.assertEqual("Value3", values.get("Key3"))
34+
1335
def test_can_modify_dictionary_with_patch_remove(self):
1436
with self.store.open_session() as session:
1537
item = Item()
@@ -29,11 +51,9 @@ def test_can_modify_dictionary_with_patch_remove(self):
2951

3052
with self.store.open_session() as session:
3153
item = session.load("items/1", dict)
32-
values = item.get("values")
54+
values = item.get("values", None)
3355
self.assertIsNotNone(values)
3456
self.assertEqual(2, len(values))
3557

3658
self.assertEqual("Value1", values.get("Key1"))
3759
self.assertEqual("Value3", values.get("Key3"))
38-
39-

0 commit comments

Comments
 (0)