aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/rails_info_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/test/rails_info_test.rb')
-rw-r--r--railties/test/rails_info_test.rb72
1 files changed, 72 insertions, 0 deletions
diff --git a/railties/test/rails_info_test.rb b/railties/test/rails_info_test.rb
new file mode 100644
index 0000000000..d167a86e56
--- /dev/null
+++ b/railties/test/rails_info_test.rb
@@ -0,0 +1,72 @@
+# frozen_string_literal: true
+
+require "abstract_unit"
+
+class InfoTest < ActiveSupport::TestCase
+ def test_property_with_block_swallows_exceptions_and_ignores_property
+ assert_nothing_raised do
+ Rails::Info.module_eval do
+ property("Bogus") { raise }
+ end
+ end
+ assert_not property_defined?("Bogus")
+ end
+
+ def test_property_with_string
+ Rails::Info.module_eval do
+ property "Hello", "World"
+ end
+ assert_property "Hello", "World"
+ end
+
+ def test_property_with_block
+ Rails::Info.module_eval do
+ property("Goodbye") { "World" }
+ end
+ assert_property "Goodbye", "World"
+ end
+
+ def test_rails_version
+ assert_property "Rails version",
+ File.read(File.realpath("../../RAILS_VERSION", __dir__)).chomp
+ end
+
+ def test_html_includes_middleware
+ Rails::Info.module_eval do
+ property "Middleware", ["Rack::Lock", "Rack::Static"]
+ end
+
+ html = Rails::Info.to_html
+ assert_includes html, '<tr><td class="name">Middleware</td>'
+ properties.value_for("Middleware").each do |value|
+ assert_includes html, "<li>#{CGI.escapeHTML(value)}</li>"
+ end
+ end
+
+ def test_json_includes_middleware
+ Rails::Info.module_eval do
+ property "Middleware", ["Rack::Lock", "Rack::Static"]
+ end
+
+ hash = JSON.parse(Rails::Info.to_json)
+ assert_includes hash.keys, "Middleware"
+ properties.value_for("Middleware").each do |value|
+ assert_includes hash["Middleware"], value
+ end
+ end
+
+ private
+ def properties
+ Rails::Info.properties
+ end
+
+ def property_defined?(property_name)
+ properties.names.include? property_name
+ end
+
+ def assert_property(property_name, value)
+ raise "Property #{property_name.inspect} not defined" unless
+ property_defined? property_name
+ assert_equal value, properties.value_for(property_name)
+ end
+end