3
class Mixin < ActiveRecord::Base
6
# Let us control what Time.now returns for the TouchTest suite
8
@@forced_now_time = nil
9
cattr_accessor :forced_now_time
19
alias_method_chain :now, :forcing
24
class TouchTest < ActiveRecord::TestCase
28
Time.forced_now_time = Time.now
32
Time.forced_now_time = nil
36
five_minutes_ago = 5.minutes.ago
37
Time.forced_now_time = five_minutes_ago
38
assert_equal five_minutes_ago, Time.now
40
Time.forced_now_time = nil
41
assert_not_equal five_minutes_ago, Time.now
47
assert_nil stamped.updated_at
48
assert_nil stamped.created_at
50
assert_equal Time.now, stamped.updated_at
51
assert_equal Time.now, stamped.created_at
56
assert_equal Time.now, obj.updated_at
57
assert_equal Time.now, obj.created_at
63
assert_nil stamped.updated_at
64
assert_nil stamped.created_at
66
assert_equal Time.now, stamped.created_at
67
assert_equal Time.now, stamped.updated_at
69
old_updated_at = stamped.updated_at
71
Time.forced_now_time = 5.minutes.from_now
72
stamped.lft_will_change!
75
assert_equal Time.now, stamped.updated_at
76
assert_equal old_updated_at, stamped.created_at
79
def test_create_turned_off
80
Mixin.record_timestamps = false
84
assert_nil mixin.updated_at
86
assert_nil mixin.updated_at
88
# Make sure Mixin.record_timestamps gets reset, even if this test fails,
89
# so that other tests do not fail because Mixin.record_timestamps == false
93
Mixin.record_timestamps = true