diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-01-18 07:30:42 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-01-18 07:30:42 +0000 |
commit | 42b39ae3f2991692672364d7e09b1e4002e66261 (patch) | |
tree | cddaf1eb2dbf7be27430bde882432db3b1cc0407 /activerecord/test/cases/mixin_test.rb | |
parent | 105a27f39ee9dbfd7fdb2b25e5ba38b00708b66c (diff) | |
download | rails-42b39ae3f2991692672364d7e09b1e4002e66261.tar.gz rails-42b39ae3f2991692672364d7e09b1e4002e66261.tar.bz2 rails-42b39ae3f2991692672364d7e09b1e4002e66261.zip |
Move tests to cases
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8660 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test/cases/mixin_test.rb')
-rw-r--r-- | activerecord/test/cases/mixin_test.rb | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/activerecord/test/cases/mixin_test.rb b/activerecord/test/cases/mixin_test.rb new file mode 100644 index 0000000000..0823ffddd6 --- /dev/null +++ b/activerecord/test/cases/mixin_test.rb @@ -0,0 +1,95 @@ +require 'abstract_unit' + +class Mixin < ActiveRecord::Base +end + +# Let us control what Time.now returns for the TouchTest suite +class Time + @@forced_now_time = nil + cattr_accessor :forced_now_time + + class << self + def now_with_forcing + if @@forced_now_time + @@forced_now_time + else + now_without_forcing + end + end + alias_method_chain :now, :forcing + end +end + + +class TouchTest < ActiveSupport::TestCase + fixtures :mixins + + def setup + Time.forced_now_time = Time.now + end + + def teardown + Time.forced_now_time = nil + end + + def test_time_mocking + five_minutes_ago = 5.minutes.ago + Time.forced_now_time = five_minutes_ago + assert_equal five_minutes_ago, Time.now + + Time.forced_now_time = nil + assert_not_equal five_minutes_ago, Time.now + end + + def test_update + stamped = Mixin.new + + assert_nil stamped.updated_at + assert_nil stamped.created_at + stamped.save + assert_equal Time.now, stamped.updated_at + assert_equal Time.now, stamped.created_at + end + + def test_create + obj = Mixin.create + assert_equal Time.now, obj.updated_at + assert_equal Time.now, obj.created_at + end + + def test_many_updates + stamped = Mixin.new + + assert_nil stamped.updated_at + assert_nil stamped.created_at + stamped.save + assert_equal Time.now, stamped.created_at + assert_equal Time.now, stamped.updated_at + + old_updated_at = stamped.updated_at + + Time.forced_now_time = 5.minutes.from_now + stamped.save + + assert_equal Time.now, stamped.updated_at + assert_equal old_updated_at, stamped.created_at + end + + def test_create_turned_off + Mixin.record_timestamps = false + + mixin = Mixin.new + + assert_nil mixin.updated_at + mixin.save + assert_nil mixin.updated_at + + # Make sure Mixin.record_timestamps gets reset, even if this test fails, + # so that other tests do not fail because Mixin.record_timestamps == false + rescue Exception => e + raise e + ensure + Mixin.record_timestamps = true + end + +end |