def test_dunder_json(self): from kotti.sqla import NestedMutationDict data = {"some": ["other", {"stuff": 1}]} mdict = NestedMutationDict(data) assert json.loads(json.dumps(mdict.__json__(None))) == data
def test_dictwrapper_wraps(self): from kotti.sqla import NestedMutationDict from kotti.sqla import NestedMutationList wrapper = NestedMutationDict( {'name': 'andy', 'age': 77, 'children': []}) changed = wrapper.changed = MagicMock() wrapper['name'] = 'randy' assert changed.call_count == 1 assert isinstance(wrapper['children'], NestedMutationList) wrapper['children'].append({'name': 'sandy', 'age': 33}) assert changed.call_count == 2 assert len(wrapper['children']), 1 assert isinstance(wrapper['children'][0], NestedMutationDict)
def test_dictwrapper_wraps(self): from kotti.sqla import NestedMutationDict from kotti.sqla import NestedMutationList wrapper = NestedMutationDict({ "name": "andy", "age": 77, "children": [] }) assert getattr(wrapper, "get", False) is not False changed = wrapper.changed = MagicMock() wrapper["name"] = "randy" assert changed.call_count == 1 assert isinstance(wrapper["children"], NestedMutationList) wrapper["children"].append({"name": "sandy", "age": 33}) assert changed.call_count == 2 assert len(wrapper["children"]), 1 assert isinstance(wrapper["children"][0], NestedMutationDict)
def test_dictwrapper_changed(self): from kotti.sqla import NestedMutationDict data = {} wrapper = NestedMutationDict(data) changed = wrapper.changed = MagicMock() wrapper['name'] = 'andy' assert data == {'name': 'andy'} assert wrapper == {'name': 'andy'} assert wrapper['name'] == 'andy' assert changed.call_count == 1 wrapper['age'] = 77 assert data == {'name': 'andy', 'age': 77} assert wrapper['age'] == 77 assert wrapper['name'] == 'andy' assert changed.call_count == 2 wrapper['age'] += 1 assert data == {'name': 'andy', 'age': 78} assert wrapper['age'] == 78 assert changed.call_count == 3
def test_dictwrapper_changed(self): from kotti.sqla import NestedMutationDict data = {} wrapper = NestedMutationDict(data) changed = wrapper.changed = MagicMock() wrapper["name"] = "andy" assert data == {"name": "andy"} assert wrapper == {"name": "andy"} assert wrapper["name"] == "andy" assert changed.call_count == 1 wrapper["age"] = 77 assert data == {"name": "andy", "age": 77} assert wrapper["age"] == 77 assert wrapper["name"] == "andy" assert changed.call_count == 2 wrapper["age"] += 1 assert data == {"name": "andy", "age": 78} assert wrapper["age"] == 78 assert changed.call_count == 3
def test_dictwrapper_comparison(self): from kotti.sqla import NestedMutationDict assert NestedMutationDict({}) == NestedMutationDict({}) assert (NestedMutationDict({'a': 'ok'}) == NestedMutationDict({'a': 'ok'}))
def test_setdefault_parent(self): from kotti.sqla import NestedMutationDict mdict = NestedMutationDict({}) assert mdict.setdefault('bar', []).__parent__ is mdict
def test_setdefault_list(self): from kotti.sqla import NestedMutationDict from kotti.sqla import NestedMutationList mdict = NestedMutationDict({}) assert isinstance(mdict.setdefault('bar', []), NestedMutationList)
def test_dictwrapper_comparison(self): from kotti.sqla import NestedMutationDict assert NestedMutationDict({}) == NestedMutationDict({}) assert NestedMutationDict({"a": "ok"}) == NestedMutationDict({"a": "ok"})
def test_setdefault_dict(self): from kotti.sqla import NestedMutationDict mdict = NestedMutationDict({}) assert isinstance(mdict.setdefault("bar", {}), NestedMutationDict)