Source code for sqlobject.tests.test_boundattributes

importpytest
fromsqlobjectimport boundattributes
fromsqlobjectimport declarative
pytestmark = pytest.mark.skipif(
 True,
 reason='The module "boundattributes" and its tests were not finished yet')
[docs] classSOTestMe(object): pass
[docs] classAttrReplace(boundattributes.BoundAttribute): __unpackargs__ = ('replace',) replace = None @declarative.classinstancemethod defmake_object(self, cls, added_class, attr_name, **attrs): if not self: return cls.singleton().make_object( added_class, attr_name, **attrs) self.replace.added_class = added_class self.replace.name = attr_name assert attrs['replace'] is self.replace del attrs['replace'] self.replace.attrs = attrs return self.replace
[docs] classHolder: def__init__(self, name): self.holder_name = name def__repr__(self): return '<Holder %s>' % self.holder_name
[docs] deftest_1(): v1 = Holder('v1') v2 = Holder('v2') v3 = Holder('v3') classV2Class(AttrReplace): arg1 = 'nothing' arg2 = ['something'] classA1(SOTestMe): a = AttrReplace(v1) v = V2Class(v2) classinline(AttrReplace): replace = v3 arg3 = 'again' arg4 = 'so there' for n in ('a', 'v', 'inline'): assert getattr(A1, n).name == n assert getattr(A1, n).added_class is A1 assert A1.a is v1 assert A1.a.attrs == {} assert A1.v is v2 assert A1.v.attrs == {'arg1': 'nothing', 'arg2': ['something']} assert A1.inline is v3 assert A1.inline.attrs == {'arg3': 'again', 'arg4': 'so there'}