def test(store):
"""Bug report from Stefan Karlsson <stefan@everynet.se> on Dec 3 2001.
Obj refs can be incorrectly stored to the database as zeroes for newly created objects.
"""
from Bar import Bar
from Foo import Foo
from BarReq import BarReq
# Since we're the second empty test, double check that the db is really empty
assert len(store.fetchObjectsOfClass(Bar)) == 0
assert len(store.fetchObjectsOfClass(Foo)) == 0
bar = Bar()
foo = Foo()
store.addObject(bar)
store.addObject(foo)
bar.setFoo(foo)
store.saveChanges()
bars = store.fetchObjectsOfClass(Bar)
assert len(bars) == 1
bar2 = bars[0]
assert bar2 is bar
assert bar.foo() is not None # the sign of the bug in question
assert bar.foo() is foo # what we should expect
store.clear()
bar = store.fetchObjectsOfClass(Bar)[0]
assert bar.foo() is not None
|