From 6f7c8e7edcd6480ea59cfecf346f3630d2190739 Mon Sep 17 00:00:00 2001 From: "Marcos G. Zimmermann" Date: Wed, 5 Feb 2025 03:05:53 -0300 Subject: [PATCH] use its constantize instead the one from inflector --- lib/site_maps/primitive/string.rb | 2 +- spec/site_maps/primitive/string_spec.rb | 43 +++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/lib/site_maps/primitive/string.rb b/lib/site_maps/primitive/string.rb index ecff895..9a97c84 100644 --- a/lib/site_maps/primitive/string.rb +++ b/lib/site_maps/primitive/string.rb @@ -37,7 +37,7 @@ def constantize end def underscore - new_str = inflector&.underscore(self) || sub(/^::/, "") + new_str = sub(/^::/, "") .gsub("::", "/") .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') diff --git a/spec/site_maps/primitive/string_spec.rb b/spec/site_maps/primitive/string_spec.rb index c49ba93..337dd7a 100644 --- a/spec/site_maps/primitive/string_spec.rb +++ b/spec/site_maps/primitive/string_spec.rb @@ -5,6 +5,7 @@ RSpec.describe SiteMaps::Primitive::String do after do described_class.remove_instance_variable(:@inflector) + rescue NameError end describe ".inflector" do @@ -18,6 +19,17 @@ context "when ActiveSupport::Inflector is available" do before do stub_const("ActiveSupport::Inflector", Class.new) + + if defined?(Dry::Inflector) + @before_dry_inflector = Dry::Inflector + Dry.send(:remove_const, :Inflector) + end + end + + after do + if @before_dry_inflector + Dry.const_set(:Inflector, @before_dry_inflector) + end end it { is_expected.to eq(ActiveSupport::Inflector) } @@ -26,12 +38,43 @@ context "when Dry::Inflector is available" do before do stub_const("Dry::Inflector", Class.new) + + if defined?(ActiveSupport::Inflector) + @before_active_support_inflector = ActiveSupport::Inflector + ActiveSupport.send(:remove_const, :Inflector) + end + end + + after do + if @before_active_support_inflector + ActiveSupport.const_set(:Inflector, @before_active_support_inflector) + end end it { is_expected.to be_a(Dry::Inflector) } end context "when no inflector is available" do + before do + if defined?(ActiveSupport::Inflector) + @before_active_support_inflector = ActiveSupport::Inflector + ActiveSupport.send(:remove_const, :Inflector) + end + if defined?(Dry::Inflector) + @before_dry_inflector = Dry::Inflector + Dry.send(:remove_const, :Inflector) + end + end + + after do + if @before_active_support_inflector + ActiveSupport.const_set(:Inflector, @before_active_support_inflector) + end + if @before_dry_inflector + Dry.const_set(:Inflector, @before_dry_inflector) + end + end + it { is_expected.to be_nil } end end