Show
Ignore:
Timestamp:
02/12/07 18:30:18 (7 years ago)
Author:
ged
Message:

fixed selfref for autoloaded tables (complete autoload test to check that)

Files:
1 modified

Legend:

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

    r53 r54  
    1111import datetime 
    1212 
    13 #FIXME/TODO: I should also test many2many!!! 
    14  
    1513# First create two tables (it would be better to user an external db) 
    1614engine = sqlalchemy.create_engine('sqlite:///') 
     
    1917person_table = Table('person', meta, 
    2018    Column('id', Integer, primary_key=True), 
     19    Column('father_id', Integer, ForeignKey('person.id')), 
    2120    Column('name', Unicode(32))) 
    2221person_table.create() 
     
    3231elixir.delay_setup = True 
    3332 
    34 class Animal(Entity): 
    35 #    has_field('name', String(15)) 
    36 #    has_field('color', String(15)) 
    37      
    38     belongs_to('owner', of_kind='Person', colname='owner_id') 
    39     belongs_to('feeder', of_kind='Person', colname='feeder_id') 
    40  
    41     using_options(autoload=True, shortnames=True) 
    42  
    4333class Person(Entity): 
    4434#    has_field('name', Unicode(32)) 
    4535     
     36    belongs_to('father', of_kind='Person', colname='father_id') 
     37    has_many('children', of_kind='Person') 
    4638    has_many('pets', of_kind='Animal', inverse='owner') 
    4739    has_many('animals', of_kind='Animal', inverse='feeder') 
     
    5547        return s 
    5648 
     49class Animal(Entity): 
     50#    has_field('name', String(15)) 
     51#    has_field('color', String(15)) 
     52     
     53    belongs_to('owner', of_kind='Person', colname='owner_id') 
     54    belongs_to('feeder', of_kind='Person', colname='feeder_id') 
     55 
     56    using_options(autoload=True, shortnames=True) 
    5757 
    5858elixir.delay_setup = False 
     
    6666     
    6767    def teardown(self): 
    68         cleanup_all() 
     68        drop_all() 
    6969     
    7070    def test_autoload(self): 
     
    8686        assert homer == slh.owner 
    8787 
     88    def test_autoload_selfref(self): 
     89        grampa = Person(name="Abe") 
     90        homer = Person(name="Homer") 
     91        bart = Person(name="Bart") 
     92        lisa = Person(name="Lisa") 
     93         
     94        grampa.children.append(homer)         
     95        homer.children.append(bart) 
     96        lisa.father = homer 
     97         
     98        objectstore.flush() 
     99        objectstore.clear() 
     100         
     101        p = Person.get_by(name="Homer") 
     102         
     103        print "%s is %s's child." % (p.name, p.father.name) 
     104        print "His children are: %s." % ( 
     105                " and ".join(c.name for c in p.children)) 
     106         
     107        assert p in p.father.children 
     108        assert p.father is Person.get_by(name="Abe") 
     109        assert p is Person.get_by(name="Lisa").father 
     110 
    88111if __name__ == '__main__': 
    89112    test = TestAutoload()