1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activesupport/test/zeitwerk_inflector_test.rb
2019-10-13 17:55:39 +09:00

49 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require "abstract_unit"
require "active_support/dependencies/zeitwerk_integration"
class ZeitwerkInflectorTest < ActiveSupport::TestCase
INFLECTOR = ActiveSupport::Dependencies::ZeitwerkIntegration::Inflector
def reset_overrides
INFLECTOR.instance_variable_get(:@overrides).clear
end
def camelize(basename)
INFLECTOR.camelize(basename, nil)
end
setup do
reset_overrides
@original_inflections = ActiveSupport::Inflector::Inflections.instance_variable_get(:@__instance__)[:en]
ActiveSupport::Inflector::Inflections.instance_variable_set(:@__instance__, en: @original_inflections.dup)
end
teardown do
reset_overrides
ActiveSupport::Inflector::Inflections.instance_variable_set(:@__instance__, en: @original_inflections)
end
test "it camelizes regular basenames with String#camelize" do
ActiveSupport::Inflector.inflections do |inflect|
inflect.acronym("SSL")
end
assert_equal "User", camelize("user")
assert_equal "UsersController", camelize("users_controller")
assert_equal "Point3d", camelize("point_3d")
assert_equal "SSLError", camelize("ssl_error")
end
test "overrides take precedence" do
# Precondition, ensure we are testing something.
assert_equal "MysqlAdapter", camelize("mysql_adapter")
INFLECTOR.inflect("mysql_adapter" => "MySQLAdapter")
assert_equal "MySQLAdapter", camelize("mysql_adapter")
# The fallback is still in place.
assert_equal "UsersController", camelize("users_controller")
end
end