Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

TimeWithZone: date part getter methods (#year #mon #day etc) are defi…

…ned on class; no longer relying on method_missing
  • Loading branch information...
commit 4f03190f262c07c1f389957ff7ae76901495d824 1 parent 618d695
@gbuesing gbuesing authored
View
2  activesupport/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* TimeWithZone: date part getter methods (#year #mon #day etc) are defined on class; no longer relying on method_missing [Geoff Buesing]
+
* Time.zone.parse return nil for strings with no date information [Geoff Buesing]
* Time.zone.parse respects offset information in string. Resolves #105. [Scott Fleckenstein, Geoff Buesing]
View
8 activesupport/lib/active_support/time_with_zone.rb
@@ -163,6 +163,14 @@ def advance(options)
utc.advance(options).in_time_zone(time_zone)
end
+ %w(year mon month day mday hour min sec).each do |method_name|
+ class_eval <<-EOV
+ def #{method_name}
+ time.#{method_name}
+ end
+ EOV
+ end
+
def usec
time.respond_to?(:usec) ? time.usec : 0
end
View
10 activesupport/test/core_ext/time_with_zone_test.rb
@@ -328,10 +328,18 @@ def test_marshal_dump_and_load_with_tzinfo_identifier
assert_equal Time.utc(1999, 12, 31, 19), mtime.time
end
end
-
+
def test_method_missing_with_non_time_return_value
silence_warnings do # silence warnings raised by tzinfo gem
+ @twz.time.expects(:foo).returns('bar')
+ assert_equal 'bar', @twz.foo
+ end
+ end
+
+ def test_date_part_value_methods
+ silence_warnings do # silence warnings raised by tzinfo gem
twz = ActiveSupport::TimeWithZone.new(Time.utc(1999,12,31,19,18,17,500), @time_zone)
+ twz.stubs(:method_missing).returns(nil) #ensure these methods are defined directly on class
assert_equal 1999, twz.year
assert_equal 12, twz.month
assert_equal 31, twz.day
Please sign in to comment.
Something went wrong with that request. Please try again.