From f9cea034014ba872b31e478c4ac9a6845f7f9e86 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 4 Feb 2006 17:07:49 +0000 Subject: [PATCH] a future unit-test for testing one-to-one relationships --- test/onetoone.py | 77 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 test/onetoone.py diff --git a/test/onetoone.py b/test/onetoone.py new file mode 100644 index 0000000000..9078d78a39 --- /dev/null +++ b/test/onetoone.py @@ -0,0 +1,77 @@ +# TODO - turn this into a unit test ! + +from sqlalchemy import * + +engine = create_engine('sqlite', {'filename':':memory:'}, echo=True) + + +jack = Table('jack', engine, + Column('id', Integer, primary_key=True), + #Column('room_id', Integer, ForeignKey("room.id")), + Column('number', String(50)), + Column('status', String(20)), + Column('subroom', String(5)), +) + + +port = Table('port', engine, + Column('id', Integer, primary_key=True), + #Column('device_id', Integer, ForeignKey("device.id")), + Column('name', String(30)), + Column('description', String(100)), + Column('jack_id', Integer, ForeignKey("jack.id")), +) + + +class Jack(object): + def __repr__(self): + return "{Jack %s - %s}" % (self.id, self.number) + + def __init__(self, room=None, subroom=None, number=None, status=None): + self.id = None + self.room = room + self.subroom = subroom + self.number = number + self.status = status + +class Port(object): + def __repr__(self): + return "{Port %s - %s}" % (self.id, self.name) + + def __init__(self, name=None, description=None): + self.id=None + self.name=name + self.description = description +try : + jack.create() + port.create() +except : + pass + +assign_mapper(Port, port) +assign_mapper(Jack, jack, order_by=[jack.c.number],properties = { + 'port': relation(Port.mapper, backref='jack', uselist=False, lazy=True), +}) + +j=Jack(number='101') +p=Port(name='fa0/1') +j.port=p +objectstore.commit() +jid = j.id +pid = p.id + +j=Jack.get(jid) +p=Port.get(pid) +print p.jack +print j.port +p.jack=None +assert j.port is None #works + +objectstore.clear() + +j=Jack.get(jid) +p=Port.get(pid) + +j.port=None +assert p.jack is None #fails +objectstore.commit() #remove the above assertion and this fails too -- 2.47.2