def test_dump_property(): d = Database() name = 'test' desc = 'Test property.' type = str value = 'Test string.' p = Property(name, desc, type, value) actual = d.dump_property(p) expected = dict(name=name, description=desc, value=value, type='str') assert expected == actual p.type = Exception with raises(RuntimeError): d.dump_property(p)
def test_dump_objectreference(): d = Database() f1 = d.create_object() f2 = d.create_object() o = d.create_object() p = o.add_property('friends', list, [f1, f2]) assert p.value == [f1, f2] data = d.dump_property(p) for entry in data['value']: assert isinstance(entry, ObjectReference), 'Invalid entry: %r.' % entry assert data['value'] == [ObjectReference(f1.id), ObjectReference(f2.id)]
def test_load_object(): d = Database() id = 18 p = Property('property', 'Test property.', bool, False) m = Method(d, 'import re\ndef method(self, a, b):\n return (a, b, re)') data = dict( id=id, methods=[d.dump_method(m)], properties=[d.dump_property(p)], parents=[] ) o = d.load_object(data) assert d.objects[id] is o assert d.max_id == (id + 1) assert len(o._methods) == 1 m.func = None for method in (m, o._methods[m.name]): method.created.clear() o._methods[m.name].func = None # Otherwise they'll never match. assert o._methods[m.name] == m assert not o._properties assert not o._parents assert not o._children data = dict(id=1, location=2) o = d.load_object(data) assert o._location == 2
def test_dump_property_custom_object(): d = Database(object_class=CustomObject) o = d.create_object() p = o.add_property('this', d.object_class, o) value = d.dump_property(p) assert value['type'] == 'obj'