mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Follow-up to #16560
For the sake of backward-compatibility, we need to make #instance_of? return true for Fixnum. On the other hand, the method should still give true for ActiveSupport::Duration itself which was not the case before.
This commit is contained in:
parent
4287f6d456
commit
d5578cd177
3 changed files with 11 additions and 9 deletions
|
@ -1,5 +1,6 @@
|
||||||
* Add the `Duration#instance_of?` method that was previously delegated to the
|
* Fix the `ActiveSupport::Duration#instance_of?` method to return the right
|
||||||
internal `value` attribute.
|
value with the class itself since it was previously delegated to the
|
||||||
|
internal value.
|
||||||
|
|
||||||
*Robin Dupret*
|
*Robin Dupret*
|
||||||
|
|
||||||
|
|
|
@ -35,12 +35,12 @@ module ActiveSupport
|
||||||
end
|
end
|
||||||
|
|
||||||
def is_a?(klass) #:nodoc:
|
def is_a?(klass) #:nodoc:
|
||||||
instance_of?(klass) || value.is_a?(klass)
|
Duration == klass || value.is_a?(klass)
|
||||||
end
|
end
|
||||||
alias :kind_of? :is_a?
|
alias :kind_of? :is_a?
|
||||||
|
|
||||||
def instance_of?(klass) # :nodoc:
|
def instance_of?(klass) # :nodoc:
|
||||||
Duration == klass
|
Duration == klass || value.instance_of?(klass)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns +true+ if +other+ is also a Duration instance with the
|
# Returns +true+ if +other+ is also a Duration instance with the
|
||||||
|
|
|
@ -20,6 +20,12 @@ class DurationTest < ActiveSupport::TestCase
|
||||||
assert !d.is_a?(k)
|
assert !d.is_a?(k)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_instance_of
|
||||||
|
assert 1.minute.instance_of?(Fixnum)
|
||||||
|
assert 2.days.instance_of?(ActiveSupport::Duration)
|
||||||
|
assert !3.second.instance_of?(Numeric)
|
||||||
|
end
|
||||||
|
|
||||||
def test_threequals
|
def test_threequals
|
||||||
assert ActiveSupport::Duration === 1.day
|
assert ActiveSupport::Duration === 1.day
|
||||||
assert !(ActiveSupport::Duration === 1.day.to_i)
|
assert !(ActiveSupport::Duration === 1.day.to_i)
|
||||||
|
@ -41,11 +47,6 @@ class DurationTest < ActiveSupport::TestCase
|
||||||
assert !1.eql?(1.second)
|
assert !1.eql?(1.second)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_instance_of
|
|
||||||
assert !1.minute.instance_of?(Fixnum)
|
|
||||||
assert !2.days.instance_of?(Fixnum)
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_inspect
|
def test_inspect
|
||||||
assert_equal '0 seconds', 0.seconds.inspect
|
assert_equal '0 seconds', 0.seconds.inspect
|
||||||
assert_equal '1 month', 1.month.inspect
|
assert_equal '1 month', 1.month.inspect
|
||||||
|
|
Loading…
Reference in a new issue