@classmethod
def from_collection(cls, attribute, state, current):
original = state.committed_state.get(attribute.key, _NO_HISTORY)
+
+ if current is NO_VALUE or current is NEVER_SET:
+ return cls((), (), ())
+
current = getattr(current, '_sa_adapter')
if original is NO_VALUE:
return cls(list(current), (), ())
useobject=True)
return Foo, Bar
- def _someattr_history(self, f):
+ def _someattr_history(self, f, **kw):
return attributes.get_state_history(
attributes.instance_state(f),
- 'someattr')
+ 'someattr', **kw)
def _commit_someattr(self, f):
attributes.instance_state(f)._commit(attributes.instance_dict(f),
assert 'someattr' not in f.__dict__
assert 'someattr' not in attributes.instance_state(f).committed_state
+ def test_collection_never_set(self):
+ Foo = self._fixture(uselist=True, useobject=True,
+ active_history=True)
+ f = Foo()
+ eq_(self._someattr_history(f, passive=True), ((), (), ()))
+
+ def test_scalar_obj_never_set(self):
+ Foo = self._fixture(uselist=False, useobject=True,
+ active_history=True)
+ f = Foo()
+ eq_(self._someattr_history(f, passive=True), ((), (), ()))
+
+ def test_scalar_never_set(self):
+ Foo = self._fixture(uselist=False, useobject=False,
+ active_history=True)
+ f = Foo()
+ eq_(self._someattr_history(f, passive=True), ((), (), ()))
+
def test_scalar_active_set(self):
Foo = self._fixture(uselist=False, useobject=False,
active_history=True)