diff --git a/src/hooked_containers/mapping.py b/src/hooked_containers/mapping.py index dc669c6..e19ce6b 100644 --- a/src/hooked_containers/mapping.py +++ b/src/hooked_containers/mapping.py @@ -35,7 +35,7 @@ class HookedMapping(HookedContainer[T], MutableMapping[T, MutableNesting[T]]): def insert(self, key: T, value: MutableNesting[T]) -> None: self._data[key] = value if self.hook: - self.hook(e.AddItemEvent(value, path=self.new_path(key))) + self.hook(e.AddItemEvent(self.new_path(key), value)) # HookedContainer methods @@ -58,10 +58,10 @@ class HookedMapping(HookedContainer[T], MutableMapping[T, MutableNesting[T]]): else: self._data[key] = value if self.hook: - self.hook(e.SetItemEvent(value, path=self.new_path(key))) + self.hook(e.SetItemEvent(self.new_path(key), value)) def __delitem__(self, key: T) -> None: item = self._data[key] del self._data[key] if self.hook: - self.hook(e.RemoveItemEvent(item, path=self.new_path(key))) + self.hook(e.RemoveItemEvent(self.new_path(key), item)) diff --git a/tests/test_mapping.py b/tests/test_mapping.py index e05b798..08f66fe 100644 --- a/tests/test_mapping.py +++ b/tests/test_mapping.py @@ -24,9 +24,18 @@ class TestHookedMapping: class TestMappingOps: def test_setitem(self): - m = HookedMapping({}) + added = [] + m = HookedMapping({}, lambda e: added.append(e.item)) m["a"] = 1 assert m._data == {"a": 1} + assert added == [1] + + def test_nested_setitem(self): + added = [] + m = HookedMapping({"a": {}}, lambda e: added.append(e.item)) + m["a"]["x"] = 1 + assert m._data == {"a": {"x": 1}} + assert added == [1] def test_getitem(self): m = HookedMapping({"a": 1})