Skip to content

Commit

Permalink
Add AS::StringInquirer#respond_to? method
Browse files Browse the repository at this point in the history
Consistently with #method_missing
  • Loading branch information
lexmag committed Aug 6, 2012
1 parent daf9f9f commit a1beec1
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 9 deletions.
18 changes: 12 additions & 6 deletions activesupport/lib/active_support/string_inquirer.rb
Expand Up @@ -10,12 +10,18 @@ module ActiveSupport
# Rails.env.production?
#
class StringInquirer < String
def method_missing(method_name, *arguments)
if method_name[-1, 1] == "?"
self == method_name[0..-2]
else
super
private

def respond_to_missing?(method_name, include_private = false)
method_name[-1] == '?'
end

def method_missing(method_name, *arguments)
if method_name[-1] == '?'
self == method_name[0..-2]
else
super
end
end
end
end
end
14 changes: 11 additions & 3 deletions activesupport/test/string_inquirer_test.rb
@@ -1,15 +1,23 @@
require 'abstract_unit'

class StringInquirerTest < ActiveSupport::TestCase
def setup
@string_inquirer = ActiveSupport::StringInquirer.new('production')
end

def test_match
assert ActiveSupport::StringInquirer.new("production").production?
assert @string_inquirer.production?
end

def test_miss
assert !ActiveSupport::StringInquirer.new("production").development?
refute @string_inquirer.development?
end

def test_missing_question_mark
assert_raise(NoMethodError) { ActiveSupport::StringInquirer.new("production").production }
assert_raise(NoMethodError) { @string_inquirer.production }
end

def test_respond_to
assert_respond_to @string_inquirer, :development?
end
end

0 comments on commit a1beec1

Please sign in to comment.