diff --git a/CHANGELOG.md b/CHANGELOG.md index fc042af..d52251e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [0.0.12] - 2025-01-28 + +- Fix potential issue with default serializer inheritance/overriding + ## [0.0.11] - 2025-01-25 - Allow default_serializers to be changed diff --git a/Gemfile.lock b/Gemfile.lock index 8dbd7a4..0083986 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - foobara-http-command-connector (0.0.11) + foobara-http-command-connector (0.0.12) foobara GEM @@ -54,7 +54,7 @@ GEM foobara-type-generator foobara-typescript-react-command-form-generator foobara-typescript-remote-command-generator - foobara (0.0.50) + foobara (0.0.51) bigdecimal foobara-util foobara-autocrud-generator (0.0.1) @@ -80,7 +80,7 @@ GEM foobara-files-generator foobara-files-generator (0.0.5) foobara - foobara-local-files-crud-driver-generator (0.0.2) + foobara-local-files-crud-driver-generator (0.0.3) foobara foobara-files-generator foobara-organization-generator (0.0.2) @@ -141,7 +141,7 @@ GEM rspec (>= 2.99.0, < 4.0) hashdiff (1.1.2) json (2.9.1) - language_server-protocol (3.17.0.3) + language_server-protocol (3.17.0.4) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) @@ -198,7 +198,7 @@ GEM rubocop-ast (>= 1.36.2, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.37.0) + rubocop-ast (1.38.0) parser (>= 3.3.1.0) rubocop-rake (0.6.0) rubocop (~> 1.0) diff --git a/spec/foobara/command_connectors_http/http_spec.rb b/spec/foobara/command_connectors_http/http_spec.rb index 8e471dd..7a57434 100644 --- a/spec/foobara/command_connectors_http/http_spec.rb +++ b/spec/foobara/command_connectors_http/http_spec.rb @@ -57,7 +57,8 @@ def compute let(:authenticator) { nil } let(:default_serializers) do - [Foobara::CommandConnectors::Serializers::ErrorsSerializer, Foobara::CommandConnectors::Serializers::JsonSerializer] + [Foobara::CommandConnectors::Serializers::ErrorsSerializer, + Foobara::CommandConnectors::Serializers::JsonSerializer] end let(:default_pre_commit_transformer) { nil } @@ -650,7 +651,9 @@ def execute context "with AggregateSerializer" do let(:serializers) { Foobara::CommandConnectors::Serializers::AggregateSerializer } - let(:pre_commit_transformers) { Foobara::CommandConnectors::Transformers::LoadAggregatesPreCommitTransformer } + let(:pre_commit_transformers) { + Foobara::CommandConnectors::Transformers::LoadAggregatesPreCommitTransformer + } context "when user exists with a referral" do let(:command_class) do @@ -1320,6 +1323,17 @@ def transform(result) expect(subclass.default_serializers).to be_an(Array) expect(subclass.default_serializers).to_not be_empty end + + context "when subclass of a subclass" do + let(:subsubclass) do + stub_class :SomeSubsubclass, subclass + end + + it "returns some serializers" do + expect(subsubclass.default_serializers).to be_an(Array) + expect(subsubclass.default_serializers).to_not be_empty + end + end end end end diff --git a/src/http.rb b/src/http.rb index cb9f050..87ba0d3 100644 --- a/src/http.rb +++ b/src/http.rb @@ -9,10 +9,15 @@ class << self def default_serializers return @default_serializers if @default_serializers - if superclass.respond_to?(:default_serializers) - serializers = superclass.default_serializers + superklass = superclass + serializers = nil + + while superklass.respond_to?(:default_serializers) + serializers = superclass.instance_variable_get(:@default_serializers) return serializers if serializers + + superklass = superklass.superclass end @default_serializers = [ diff --git a/version.rb b/version.rb index 0b97e49..f747b8b 100644 --- a/version.rb +++ b/version.rb @@ -1,6 +1,6 @@ module Foobara module HttpCommandConnector - VERSION = "0.0.11".freeze + VERSION = "0.0.12".freeze local_ruby_version = File.read("#{__dir__}/.ruby-version").chomp local_ruby_version_minor = local_ruby_version[/\A(\d+\.\d+)\.\d+\z/, 1]