]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
a future unit-test for testing one-to-one relationships
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 4 Feb 2006 17:07:49 +0000 (17:07 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 4 Feb 2006 17:07:49 +0000 (17:07 +0000)
test/onetoone.py [new file with mode: 0644]

diff --git a/test/onetoone.py b/test/onetoone.py
new file mode 100644 (file)
index 0000000..9078d78
--- /dev/null
@@ -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