Show
Ignore:
Timestamp:
06/13/07 18:26:46 (8 years ago)
Author:
ged
Message:

- Reworked/cleaned tests so that they don't leak stuff to other tests (both at

the method level and module level) anymore. Uses nosetest's module level
fixture.

Files:
1 modified

Legend:

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

    r93 r125  
    33""" 
    44 
    5 import sqlalchemy 
    6 from sqlalchemy import Table, Column, ForeignKey, BoundMetaData 
    7 from sqlalchemy.types import * 
     5from sqlalchemy import Table, Column, ForeignKey, BoundMetaData, create_engine 
    86from elixir import * 
    9 from elixir import metadata, objectstore 
    107import elixir 
    11 import datetime 
    128 
    13 # First create the tables (it would be better to use an external db) 
    14 engine = sqlalchemy.create_engine('sqlite:///') 
    15 meta = BoundMetaData(engine) 
     9def setup(): 
     10    # First create the tables (it would be better to use an external db) 
     11    engine = create_engine('sqlite:///') 
     12    meta = BoundMetaData(engine) 
    1613 
    17 person_table = Table('person', meta, 
    18     Column('id', Integer, primary_key=True), 
    19     Column('father_id', Integer, ForeignKey('person.id')), 
    20     Column('name', Unicode(32))) 
    21 person_table.create() 
     14    person_table = Table('person', meta, 
     15        Column('id', Integer, primary_key=True), 
     16        Column('father_id', Integer, ForeignKey('person.id')), 
     17        Column('name', Unicode(32))) 
    2218 
    23 animal_table = Table('animal', meta, 
    24     Column('id', Integer, primary_key=True), 
    25     Column('name', String(30)), 
    26     Column('color', String(15)), 
    27     Column('owner_id', Integer, ForeignKey('person.id')), 
    28     Column('feeder_id', Integer, ForeignKey('person.id'))) 
    29 animal_table.create() 
     19    animal_table = Table('animal', meta, 
     20        Column('id', Integer, primary_key=True), 
     21        Column('name', String(30)), 
     22        Column('color', String(15)), 
     23        Column('owner_id', Integer, ForeignKey('person.id')), 
     24        Column('feeder_id', Integer, ForeignKey('person.id'))) 
    3025 
    31 category_table = Table('category', meta, 
    32     Column('name', String, primary_key=True)) 
    33 category_table.create() 
     26    category_table = Table('category', meta, 
     27        Column('name', String, primary_key=True)) 
    3428 
    35 person_category_table = Table('person_category', meta, 
    36     Column('person_id', Integer, ForeignKey('person.id')), 
    37     Column('category_name', String, ForeignKey('category.name'))) 
    38 person_category_table.create() 
     29    person_category_table = Table('person_category', meta, 
     30        Column('person_id', Integer, ForeignKey('person.id')), 
     31        Column('category_name', String, ForeignKey('category.name'))) 
    3932 
    40 person_person_table = Table('person_person', meta, 
    41     Column('person_id1', Integer, ForeignKey('person.id')), 
    42     Column('person_id2', Integer, ForeignKey('person.id'))) 
    43 person_person_table.create() 
     33    person_person_table = Table('person_person', meta, 
     34        Column('person_id1', Integer, ForeignKey('person.id')), 
     35        Column('person_id2', Integer, ForeignKey('person.id'))) 
    4436 
    45 elixir.delay_setup = True 
    46 elixir.options_defaults.update(dict(autoload=True, shortnames=True)) 
     37    meta.create_all() 
    4738 
    48 class Person(Entity): 
    49     belongs_to('father', of_kind='Person') 
    50     has_many('children', of_kind='Person') 
    51     has_many('pets', of_kind='Animal', inverse='owner') 
    52     has_many('animals', of_kind='Animal', inverse='feeder') 
    53     has_and_belongs_to_many('categories', of_kind='Category',  
    54                             tablename='person_category') 
    55     has_and_belongs_to_many('appreciate', of_kind='Person', 
    56                             tablename='person_person', 
    57                             local_side='person_id1') 
    58     has_and_belongs_to_many('isappreciatedby', of_kind='Person', 
    59                             tablename='person_person', 
    60                             local_side='person_id2') 
     39    elixir.delay_setup = True 
     40    elixir.options_defaults.update(dict(autoload=True, shortnames=True)) 
    6141 
    62     def __str__(self): 
    63         s = '%s\n' % self.name.encode('utf-8')   
    64         for pet in self.pets: 
    65             s += '  * pet: %s\n' % pet.name 
    66         return s 
     42    global Person, Animal, Category 
     43 
     44    class Person(Entity): 
     45        belongs_to('father', of_kind='Person') 
     46        has_many('children', of_kind='Person') 
     47        has_many('pets', of_kind='Animal', inverse='owner') 
     48        has_many('animals', of_kind='Animal', inverse='feeder') 
     49        has_and_belongs_to_many('categories', of_kind='Category',  
     50                                tablename='person_category') 
     51        has_and_belongs_to_many('appreciate', of_kind='Person', 
     52                                tablename='person_person', 
     53                                local_side='person_id1') 
     54        has_and_belongs_to_many('isappreciatedby', of_kind='Person', 
     55                                tablename='person_person', 
     56                                local_side='person_id2') 
     57 
     58        def __str__(self): 
     59            s = '%s\n' % self.name.encode('utf-8')   
     60            for pet in self.pets: 
     61                s += '  * pet: %s\n' % pet.name 
     62            return s 
    6763 
    6864 
    69 class Animal(Entity): 
    70     belongs_to('owner', of_kind='Person', colname='owner_id') 
    71     belongs_to('feeder', of_kind='Person', colname='feeder_id') 
     65    class Animal(Entity): 
     66        belongs_to('owner', of_kind='Person', colname='owner_id') 
     67        belongs_to('feeder', of_kind='Person', colname='feeder_id') 
    7268 
    7369 
    74 class Category(Entity): 
    75     has_and_belongs_to_many('persons', of_kind='Person',  
    76                             tablename='person_category') 
     70    class Category(Entity): 
     71        has_and_belongs_to_many('persons', of_kind='Person',  
     72                                tablename='person_category') 
    7773 
    78 elixir.delay_setup = False 
    79 elixir.options_defaults.update(dict(autoload=False, shortnames=False)) 
     74    elixir.delay_setup = False 
     75    elixir.options_defaults.update(dict(autoload=False, shortnames=False)) 
     76 
     77    metadata.connect(engine) 
     78    setup_all() 
     79 
     80def teardown(): 
     81    cleanup_all() 
    8082 
    8183#----------- 
     
    8385class TestAutoload(object): 
    8486    def setup(self): 
    85         metadata.connect(engine) 
    86         setup_all() 
    87      
     87        create_all() 
     88         
    8889    def teardown(self): 
    8990        drop_all() 
     91        objectstore.clear() 
    9092     
    9193    def test_autoload(self): 
     
    169171 
    170172if __name__ == '__main__': 
     173    setup() 
     174 
    171175    test = TestAutoload() 
    172176    test.setup() 
     177    test.test_autoload() 
     178    test.teardown() 
     179 
     180    test.setup() 
     181    test.test_autoload_selfref() 
     182    test.teardown() 
     183 
     184    test.setup() 
     185    test.test_autoload_has_and_belongs_to_many() 
     186    test.teardown() 
     187 
     188    test.setup() 
    173189    test.test_autoload_has_and_belongs_to_many_selfref() 
    174 #    test.test_autoload() 
    175190    test.teardown() 
     191 
     192    teardown()