Changeset 530 for elixir/trunk

Show
Ignore:
Timestamp:
09/02/10 11:21:18 (21 months ago)
Author:
ged
Message:

added more autoload tests

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • elixir/trunk/tests/test_autoload.py

    r490 r530  
    3333 
    3434    def test_simple(self): 
     35        conn = metadata.bind.connect() 
     36        conn.execute("CREATE TABLE a (" 
     37                     "id INTEGER PRIMARY KEY AUTOINCREMENT," 
     38                     "name VARCHAR(32))") 
     39        conn.close() 
     40 
     41        class A(Entity): 
     42            pass 
     43 
     44        setup_all() 
     45 
     46        a1 = A(name="a1") 
     47        a2 = A(name="a2") 
     48 
     49        session.commit() 
     50        session.expunge_all() 
     51 
     52        a1 = A.get_by(name="a1") 
     53        a2 = A.get_by(name="a2") 
     54        assert a1.name == 'a1' 
     55        assert a2.name == 'a2' 
     56 
     57    def test_fk_auto_join_sa(self): 
     58        # SQLAlchemy produces the join in this case 
     59        person_table = Table('person', metadata, 
     60            Column('id', Integer, primary_key=True), 
     61            Column('name', String(32))) 
     62 
     63        animal_table = Table('animal', metadata, 
     64            Column('id', Integer, primary_key=True), 
     65            Column('name', String(30)), 
     66            Column('owner_id', Integer, ForeignKey('person.id'))) 
     67 
     68        metadata.create_all() 
     69        metadata.clear() 
     70 
     71        class Person(Entity): 
     72            pets = OneToMany('Animal') 
     73 
     74        class Animal(Entity): 
     75            owner = ManyToOne('Person') 
     76 
     77        setup_all() 
     78 
     79        snowball = Animal(name="Snowball") 
     80        snowball2 = Animal(name="Snowball II") 
     81        slh = Animal(name="Santa's Little Helper") 
     82        homer = Person(name="Homer", pets=[slh, snowball]) 
     83        lisa = Person(name="Lisa", pets=[snowball2]) 
     84 
     85        session.commit() 
     86        session.expunge_all() 
     87 
     88        homer = Person.get_by(name="Homer") 
     89        lisa = Person.get_by(name="Lisa") 
     90        slh = Animal.get_by(name="Santa's Little Helper") 
     91 
     92        assert len(homer.pets) == 2 
     93        assert homer == slh.owner 
     94        assert lisa.pets[0].name == "Snowball II" 
     95 
     96    def test_fk_auto_join_colname(self): 
    3597        person_table = Table('person', metadata, 
    3698            Column('id', Integer, primary_key=True), 
     
    150212        assert len(c.persons) == 4 
    151213        assert c in grampa.categories 
     214 
     215     # currently fails. See elixir/relationships.py:_get_join_clauses 
     216#    def test_m2m_extra_fk(self): 
     217#        person_table = Table('person', metadata, 
     218#            Column('id', Integer, primary_key=True), 
     219#            Column('name', String(32), unique=True)) 
     220# 
     221#        category_table = Table('category', metadata, 
     222#            Column('name', String(30), primary_key=True)) 
     223# 
     224#        person_category_table = Table('person_category', metadata, 
     225#            Column('person_id', Integer, ForeignKey('person.id')), 
     226#            Column('category_name', String(30), ForeignKey('category.name')), 
     227#            Column('person_name', String(32), ForeignKey('person.name'))) 
     228# 
     229#        metadata.create_all() 
     230#        metadata.clear() 
     231# 
     232#        class Person(Entity): 
     233#            categories = ManyToMany('Category', 
     234#                                    tablename='person_category', 
     235#                                    local_colname='person_id') 
     236# 
     237#        class Category(Entity): 
     238#            persons = ManyToMany('Person', 
     239#                                 tablename='person_category') 
     240# 
     241#        setup_all() 
     242# 
     243#        stupid = Category(name="Stupid") 
     244#        simpson = Category(name="Simpson") 
     245#        old = Category(name="Old") 
     246# 
     247#        grampa = Person(name="Abe", categories=[simpson, old]) 
     248#        homer = Person(name="Homer", categories=[simpson, stupid]) 
     249#        bart = Person(name="Bart") 
     250#        lisa = Person(name="Lisa") 
     251# 
     252#        simpson.persons.extend([bart, lisa]) 
     253# 
     254#        session.commit() 
     255#        session.expunge_all() 
     256# 
     257#        c = Category.get_by(name="Simpson") 
     258#        grampa = Person.get_by(name="Abe") 
     259# 
     260#        assert len(c.persons) == 4 
     261#        assert c in grampa.categories 
    152262 
    153263    def test_m2m_selfref(self): 
     
    169279            isappreciatedby = ManyToMany('Person', 
    170280                                         tablename='person_person', 
     281                                         # this one is not necessary 
    171282                                         local_colname='person_id2') 
    172283