annotate lib/plugins/acts_as_versioned/test/migration_test.rb @ 1298:4f746d8966dd redmine_2.3_integration

Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author Chris Cannam
date Fri, 14 Jun 2013 09:28:30 +0100
parents 433d4f72a19b
children
rev   line source
Chris@0 1 require File.join(File.dirname(__FILE__), 'abstract_unit')
Chris@0 2
Chris@0 3 if ActiveRecord::Base.connection.supports_migrations?
Chris@0 4 class Thing < ActiveRecord::Base
Chris@0 5 attr_accessor :version
Chris@0 6 acts_as_versioned
Chris@0 7 end
Chris@0 8
Chris@0 9 class MigrationTest < Test::Unit::TestCase
Chris@0 10 self.use_transactional_fixtures = false
Chris@0 11 def teardown
Chris@0 12 if ActiveRecord::Base.connection.respond_to?(:initialize_schema_information)
Chris@0 13 ActiveRecord::Base.connection.initialize_schema_information
Chris@0 14 ActiveRecord::Base.connection.update "UPDATE schema_info SET version = 0"
Chris@0 15 else
Chris@0 16 ActiveRecord::Base.connection.initialize_schema_migrations_table
Chris@0 17 ActiveRecord::Base.connection.assume_migrated_upto_version(0)
Chris@0 18 end
Chris@0 19
Chris@0 20 Thing.connection.drop_table "things" rescue nil
Chris@0 21 Thing.connection.drop_table "thing_versions" rescue nil
Chris@0 22 Thing.reset_column_information
Chris@0 23 end
Chris@0 24
Chris@0 25 def test_versioned_migration
Chris@0 26 assert_raises(ActiveRecord::StatementInvalid) { Thing.create :title => 'blah blah' }
Chris@0 27 # take 'er up
Chris@0 28 ActiveRecord::Migrator.up(File.dirname(__FILE__) + '/fixtures/migrations/')
Chris@0 29 t = Thing.create :title => 'blah blah', :price => 123.45, :type => 'Thing'
Chris@0 30 assert_equal 1, t.versions.size
Chris@0 31
Chris@0 32 # check that the price column has remembered its value correctly
Chris@0 33 assert_equal t.price, t.versions.first.price
Chris@0 34 assert_equal t.title, t.versions.first.title
Chris@0 35 assert_equal t[:type], t.versions.first[:type]
Chris@0 36
Chris@0 37 # make sure that the precision of the price column has been preserved
Chris@0 38 assert_equal 7, Thing::Version.columns.find{|c| c.name == "price"}.precision
Chris@0 39 assert_equal 2, Thing::Version.columns.find{|c| c.name == "price"}.scale
Chris@0 40
Chris@0 41 # now lets take 'er back down
Chris@0 42 ActiveRecord::Migrator.down(File.dirname(__FILE__) + '/fixtures/migrations/')
Chris@0 43 assert_raises(ActiveRecord::StatementInvalid) { Thing.create :title => 'blah blah' }
Chris@0 44 end
Chris@0 45 end
Chris@0 46 end