summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2006-08-07 05:10:59 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2006-08-07 05:10:59 +0000
commitaf59af2359cf37325fdace801e37871b014b8b5b (patch)
tree8bd14567e9bbb44961293803d082ac4f0c0b5fbf /test
parent63519a4f0472cf2265c0b915e6d153e358a3ebdd (diff)
downloadsqlalchemy-af59af2359cf37325fdace801e37871b014b8b5b.tar.gz
added start of a many-to-many test
Diffstat (limited to 'test')
-rw-r--r--test/ext/activemapper.py60
1 files changed, 58 insertions, 2 deletions
diff --git a/test/ext/activemapper.py b/test/ext/activemapper.py
index 1ff8b0d7b..f7f1cfe75 100644
--- a/test/ext/activemapper.py
+++ b/test/ext/activemapper.py
@@ -1,8 +1,9 @@
import testbase
-from sqlalchemy.ext.activemapper import ActiveMapper, column, one_to_many, one_to_one, objectstore
+from sqlalchemy.ext.activemapper import ActiveMapper, column, one_to_many, one_to_one, many_to_many, objectstore
from sqlalchemy import and_, or_, clear_mappers, backref
-from sqlalchemy import ForeignKey, String, Integer, DateTime
+from sqlalchemy import ForeignKey, String, Integer, DateTime, Table, Column
from datetime import datetime
+import sqlalchemy
import sqlalchemy.ext.activemapper as activemapper
@@ -219,6 +220,61 @@ class testcase(testbase.PersistTest):
self.assertEquals(len(results), 1)
self.assertEquals(Person.count(), 2)
+
+class testmanytomany(testbase.PersistTest):
+ def setUpAll(self):
+ global secondarytable, foo, baz
+ secondarytable = Table("secondarytable",
+ activemapper.metadata,
+ Column("foo_id", Integer, ForeignKey("foo.id"),primary_key=True),
+ Column("baz_id", Integer, ForeignKey("baz.id"),primary_key=True))
+
+ class foo(activemapper.ActiveMapper):
+ class mapping:
+ name = column(String(30))
+# bazrel = many_to_many('baz', secondarytable, backref='foorel')
+
+ class baz(activemapper.ActiveMapper):
+ class mapping:
+ name = column(String(30))
+ foorel = many_to_many("foo", secondarytable, backref='bazrel')
+
+ activemapper.metadata.connect(testbase.db)
+ activemapper.create_tables()
+
+ # Create a couple of activemapper objects
+ def create_objects(self):
+ return foo(name='foo1'), baz(name='baz1')
+
+ def tearDownAll(self):
+ clear_mappers()
+ activemapper.drop_tables()
+
+ def testbasic(self):
+ # Set up activemapper objects
+ foo1, baz1 = self.create_objects()
+
+ objectstore.flush()
+ objectstore.clear()
+
+ foo1 = foo.get_by(name='foo1')
+ baz1 = baz.get_by(name='baz1')
+
+ # Just checking ...
+ assert (foo1.name == 'foo1')
+ assert (baz1.name == 'baz1')
+
+ # Diagnostics ...
+ # import sys
+ # sys.stderr.write("\nbazrel missing from dir(foo1):\n%s\n" % dir(foo1))
+ # sys.stderr.write("\nbazrel in foo1 relations:\n%s\n" % foo1.relations)
+
+ # Optimistically based on activemapper one_to_many test, try to append
+ # baz1 to foo1.bazrel - (AttributeError: 'foo' object has no attribute 'bazrel')
+ print sqlalchemy.class_mapper(foo).props
+ print sqlalchemy.class_mapper(baz).props
+ foo1.bazrel.append(baz1)
+ assert (foo1.bazrel == [baz1])
class testselfreferential(testbase.PersistTest):
def setUpAll(self):