Changeset 228

Show
Ignore:
Timestamp:
10/22/07 14:29:45 (6 years ago)
Author:
ged
Message:

merge all tests for fields definition into one test file

Location:
elixir/trunk/tests
Files:
1 removed
2 modified

Legend:

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

    r227 r228  
    11""" 
    2     simple test case 
     2test the different syntaxes to define fields 
    33""" 
    44 
     
    66 
    77def setup(): 
    8     global Director, Movie, Actor, Media 
    9  
    10     class Director(Entity): 
    11         with_fields( 
    12             name = Field(Unicode(60)) 
    13         ) 
    14          
    15         has_many('movies', of_kind='Movie', inverse='director') 
    16  
    17  
    18     class Movie(Entity): 
    19         """ 
    20             simple movie class 
    21         """ 
    22          
    23         # columns 
    24         with_fields( 
    25             title = Field(Unicode(50)), 
    26             year = Field(Integer) 
    27         ) 
    28          
    29         # relationships 
    30         belongs_to('director', of_kind="Director", inverse='movies') 
    31          
    32         has_and_belongs_to_many('actors', of_kind="Actor", inverse='movies') 
    33         has_one('media', of_kind='Media', inverse='movie') 
    34  
    35  
    36     class Actor(Entity): 
    37         with_fields( 
    38             name = Field(Unicode(60)) 
    39         ) 
    40          
    41         has_and_belongs_to_many('movies', of_kind="Movie", inverse="actors") 
    42  
    43  
    44     class Media(Entity): 
    45         with_fields( 
    46             number = Field(Integer, primary_key=True) 
    47         ) 
    48          
    49         belongs_to('movie', of_kind='Movie', inverse='media') 
    50  
    518    metadata.bind = 'sqlite:///' 
    529         
    53 def teardown(): 
    54     cleanup_all() 
     10class TestFields(object): 
     11    def teardown(self): 
     12        cleanup_all(True) 
     13     
     14    def test_attr_syntax(self): 
     15        class Person(Entity): 
     16            firstname = Field(Unicode(30)) 
     17            surname = Field(Unicode(30)) 
    5518 
    56  
    57 class TestMovies(object): 
    58     def setup(self): 
    59         create_all() 
    60      
    61     def teardown(self): 
    62         drop_all() 
    63         session.clear() 
    64      
    65     def test_backref(self): 
    66         swars = Movie(title="Star Wars", year=1977) 
    67         glucas = Director(name="George Lucas") 
    68         swars.director = glucas 
    69  
    70         # does it work before a flush? 
    71         assert swars in glucas.movies 
    72  
    73     def test_bidirectional(self): 
    74         brunner = Movie(title="Blade Runner", year=1982) 
    75         alien = Movie(title="Alien", year=1979) 
    76         swars = Movie(title="Star Wars", year=1977) 
     19        setup_all(True) 
    7720         
    78         brunner.media = Media(number=1) 
    79         m = Media(number=7) 
    80         m.movie = alien 
    81          
    82         rscott = Director(name="Ridley Scott") 
    83         glucas = Director(name="George Lucas") 
    84          
    85         hford = Actor(name="Harrison Ford") 
    86         mhamill = Actor(name="Mark Hamill") 
    87         sweaver = Actor(name="Sigourney Weaver") 
    88          
    89         rscott.movies.append(brunner)  
    90         rscott.movies.append(alien) 
    91         swars.director = glucas 
    92          
    93         swars.actors.append(hford) 
    94         swars.actors.append(mhamill) 
    95         alien.actors.append(sweaver) 
    96         brunner.actors.append(hford) 
     21        homer = Person(firstname="Homer", surname="Simpson") 
     22        bart = Person(firstname="Bart", surname="Simpson") 
    9723         
    9824        session.flush() 
    9925        session.clear() 
    10026         
    101         # directors 
    102         assert Movie.get_by(title="Alien").director is Director.get_by(name="Ridley Scott") 
    103         assert Director.get_by(name="Ridley Scott").name == "Ridley Scott" 
    104         assert Movie.get_by(title="Alien").director.name == "Ridley Scott" 
    105         assert Movie.get_by(title="Star Wars").director is Director.get_by(name="George Lucas") 
     27        p = Person.get_by(firstname="Homer") 
    10628         
    107         # movie 
    108         assert Movie.get_by(title="Blade Runner").year == 1982 
    109         assert Movie.get_by(title="Alien").year == 1979 
     29        assert p.surname == 'Simpson' 
     30 
     31    def test_has_field(self): 
     32        class Person(Entity): 
     33            has_field('firstname', Unicode(30)) 
     34            has_field('surname', Unicode(30)) 
     35 
     36        setup_all(True) 
    11037         
    111         # actors 
    112         assert Actor.get_by(name="Harrison Ford") in Movie.get_by(title="Blade Runner").actors 
    113         assert Actor.get_by(name="Harrison Ford") in Movie.get_by(title="Star Wars").actors 
    114         assert Movie.get_by(title="Star Wars") in Actor.get_by(name="Mark Hamill").movies 
    115         assert Movie.get_by(title="Blade Runner") in Actor.get_by(name="Harrison Ford").movies 
     38        homer = Person(firstname="Homer", surname="Simpson") 
     39        bart = Person(firstname="Bart", surname="Simpson") 
    11640         
    117         # media 
    118         assert Movie.get_by(title="Blade Runner").media is Media.get_by(number=1) 
    119         assert Movie.get_by(title="Blade Runner").media.number is Media.get_by(number=1).number 
    120         assert Actor.get_by(name="Sigourney Weaver") in Media.get_by(number=7).movie.actors 
     41        session.flush() 
     42        session.clear() 
     43         
     44        p = Person.get_by(firstname="Homer") 
     45         
     46        assert p.surname == 'Simpson' 
     47         
     48    def test_with_fields(self): 
     49        class Person(Entity): 
     50            with_fields( 
     51                firstname = Field(Unicode(30)) 
     52                surname = Field(Unicode(30)) 
     53            ) 
     54             
     55        setup_all(True) 
     56         
     57        homer = Person(firstname="Homer", surname="Simpson") 
     58        bart = Person(firstname="Bart", surname="Simpson") 
     59         
     60        session.flush() 
     61        session.clear() 
     62         
     63        p = Person.get_by(firstname="Homer") 
     64         
     65        assert p.surname == 'Simpson' 
    12166 
    122 if __name__ == '__main__': 
    123     setup() 
    124     test = TestMovies() 
    125     test.setup() 
    126     test.test_bidirectional() 
    127     test.teardown() 
    128     teardown() 
  • elixir/trunk/tests/test_oo_syntax.py

    r225 r228  
    77    def teardown(self): 
    88        cleanup_all(True) 
    9  
    10     def test_fields(self): 
    11         class A(Entity): 
    12             name = Field(Unicode(60)) 
    13  
    14         setup_all(True) 
    15  
    16         a1 = A(name="a1") 
    17  
    18         session.flush() 
    19         session.clear() 
    20  
    21         a = A.query.one() 
    22  
    23         assert a.name == "a1" 
    249 
    2510    def test_m2o_and_o2m(self):