Show
Ignore:
Timestamp:
01/07/08 18:35:12 (4 years ago)
Author:
cleverdevil
Message:

Applied a patch, closing ticket 29, where the versioning extension was not appropriately handling versioned entities with onupdate events. Patch contributed by Remi Jolin <remi.jolin@…>.

Files:
1 modified

Legend:

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

    r271 r286  
    55import time 
    66 
     7nextOneValue = 0 
     8def nextOne(): 
     9    global nextOneValue 
     10    nextOneValue += 2 
     11    return nextOneValue 
    712 
    813def setup(): 
     
    2126        releasedate = Field(DateTime) 
    2227        ignoreme = Field(Integer, default=0) 
     28        autoupd = Field(Integer, default=nextOne, onupdate=nextOne) 
    2329        director = ManyToOne('Director', inverse='movies') 
    2430        actors = ManyToMany('Actor', inverse='movies', tablename='movie_casting') 
    2531        using_options(tablename='movies') 
    26         acts_as_versioned(ignore=['ignoreme']) 
     32        acts_as_versioned(ignore=['ignoreme', 'autoupd']) 
    2733 
    2834 
     
    6268        assert movie.title == '12 Monkeys' 
    6369        assert movie.director.name == 'Terry Gilliam' 
     70        assert movie.autoupd == 2, movie.autoupd 
    6471        movie.description = 'description two' 
    6572        session.flush(); session.clear() 
     
    7279        movie.description = 'description three' 
    7380        session.flush(); session.clear() 
    74      
     81 
    7582        # Edit the ignored field, this shouldn't change the version 
    7683        monkeys = Movie.get_by(title='12 Monkeys') 
     
    8390     
    8491        movie = Movie.get_by(title='12 Monkeys') 
     92        assert movie.autoupd == 8, movie.autoupd 
    8593        oldest_version = movie.get_as_of(after_create) 
    8694        middle_version = movie.get_as_of(after_update_one) 
     
    92100        assert oldest_version.description == 'draft description' 
    93101        assert oldest_version.ignoreme == 0 
     102        assert oldest_version.autoupd is not None 
     103        assert oldest_version.autoupd > 0 
    94104     
    95105        assert middle_version.version == 2 
    96106        assert middle_version.description == 'description two' 
     107        assert middle_version.autoupd > oldest_version.autoupd 
    97108     
    98         assert latest_version.version == 3 
     109        assert latest_version.version == 3, 'version=%i' % latest_version.version 
    99110        assert latest_version.description == 'description three' 
    100111        assert latest_version.ignoreme == 1 
     112        assert latest_version.autoupd > middle_version.autoupd 
    101113     
    102114        differences = latest_version.compare_with(oldest_version) 
     
    106118        assert movie.versions[0] == oldest_version 
    107119        assert movie.versions[1] == middle_version 
    108      
    109         movie.revert_to(1) 
     120        assert [v.version for v in movie.versions] == [1, 2, 3] 
     121 
     122        movie.description = 'description four' 
     123 
     124        movie.revert_to(2) 
    110125        session.flush(); session.clear() 
    111126     
    112127        movie = Movie.get_by(title='12 Monkeys') 
    113         assert movie.version == 1 
    114         assert movie.timestamp == initial_timestamp 
    115         assert movie.title == '12 Monkeys' 
    116         assert movie.director.name == 'Terry Gilliam' 
     128        assert movie.version == 2, "version=%i, should be 2" % movie.version 
     129        assert movie.description == 'description two', movie.description 
     130 
     131        movie.description = "description 3" 
     132        session.flush(); session.clear(); 
     133 
     134        movie = Movie.get_by(title='12 Monkeys') 
     135        movie.description = "description 4" 
     136        session.flush(); session.clear(); 
     137 
     138        movie = Movie.get_by(title='12 Monkeys') 
     139        assert movie.version == 4 
     140        movie.revert_to(movie.versions[-2]) 
     141        movie.description = "description 5" 
     142        session.flush(); session.clear(); 
     143 
     144        movie = Movie.get_by(title='12 Monkeys') 
     145        assert movie.version == 4 
     146        assert movie.versions[-2].description == "description 3"