rails--rails/activesupport/test/zeitwerk_inflector_test.rb

50 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require_relative "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