From 5d1d8dc73471c730469fecef8b1cb9a2a86e5edd Mon Sep 17 00:00:00 2001 From: Matt Clark <44023+mclark@users.noreply.github.com> Date: Fri, 25 Mar 2022 11:15:51 -0400 Subject: [PATCH] allow both objects and string namespaces --- lib/constant_resolver.rb | 2 +- test/constant_resolver_test.rb | 11 +++++++++-- .../constant_discovery/valid/app/internal/main.rb | 8 ++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/constant_discovery/valid/app/internal/main.rb diff --git a/lib/constant_resolver.rb b/lib/constant_resolver.rb index 8c1490a..042acbe 100644 --- a/lib/constant_resolver.rb +++ b/lib/constant_resolver.rb @@ -123,7 +123,7 @@ def coerce_load_paths(load_paths) load_paths = Hash[load_paths.map { |p| [p, "Object"] }] unless load_paths.respond_to?(:transform_keys) load_paths.transform_keys! { |p| p.end_with?("/") ? p : p + "/" } - load_paths.transform_values! { |ns| ns.delete_prefix("::") } + load_paths.transform_values! { |ns| ns.to_s.delete_prefix("::") } load_paths end diff --git a/test/constant_resolver_test.rb b/test/constant_resolver_test.rb index 3fa58cf..ccfa021 100644 --- a/test/constant_resolver_test.rb +++ b/test/constant_resolver_test.rb @@ -43,11 +43,14 @@ def test_discovers_simple_constant end def test_resolves_constants_from_non_default_root_path_namespace + Object.const_set(:Api, Module.new) + resolver = ConstantResolver.new( root_path: "test/fixtures/constant_discovery/valid/", load_paths: { - "app/models" => "::Object", - "app/rest_api" => "::Api", + "app/models" => Object, + "app/rest_api" => Api, + "app/internal" => "::Company::Internal" }, ) @@ -58,6 +61,10 @@ def test_resolves_constants_from_non_default_root_path_namespace constant = resolver.resolve("Api::Repositories") assert_equal("::Api::Repositories", constant.name) assert_equal("app/rest_api/repositories.rb", constant.location) + + constant = resolver.resolve("Company::Internal::Main") + assert_equal("::Company::Internal::Main", constant.name) + assert_equal("app/internal/main.rb", constant.location) end def test_resolve_returns_constant_context diff --git a/test/fixtures/constant_discovery/valid/app/internal/main.rb b/test/fixtures/constant_discovery/valid/app/internal/main.rb new file mode 100644 index 0000000..4b8a11f --- /dev/null +++ b/test/fixtures/constant_discovery/valid/app/internal/main.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +module Company + module Internal + class Main + end + end +end