aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/string_inquirer_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/test/string_inquirer_test.rb')
-rw-r--r--activesupport/test/string_inquirer_test.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/activesupport/test/string_inquirer_test.rb b/activesupport/test/string_inquirer_test.rb
new file mode 100644
index 0000000000..09726b144a
--- /dev/null
+++ b/activesupport/test/string_inquirer_test.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+require "abstract_unit"
+
+class StringInquirerTest < ActiveSupport::TestCase
+ def setup
+ @string_inquirer = ActiveSupport::StringInquirer.new("production")
+ end
+
+ def test_match
+ assert_predicate @string_inquirer, :production?
+ end
+
+ def test_miss
+ assert_not_predicate @string_inquirer, :development?
+ end
+
+ def test_missing_question_mark
+ assert_raise(NoMethodError) { @string_inquirer.production }
+ end
+
+ def test_respond_to
+ assert_respond_to @string_inquirer, :development?
+ end
+
+ def test_respond_to_fallback_to_string_respond_to
+ String.class_eval do
+ def respond_to_missing?(name, include_private = false)
+ (name == :bar) || super
+ end
+ end
+ str = ActiveSupport::StringInquirer.new("hello")
+
+ assert_respond_to str, :are_you_ready?
+ assert_respond_to str, :bar
+ assert_not_respond_to str, :nope
+
+ ensure
+ String.class_eval do
+ undef_method :respond_to_missing?
+ def respond_to_missing?(name, include_private = false)
+ super
+ end
+ end
+ end
+end