From 21838ba232d3239c467196b7177bfa0dca1cffc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20=C5=81asocha?= Date: Tue, 22 Jul 2025 22:50:25 +0200 Subject: [PATCH 1/4] Improve Client#inspect to aid debugging and development visibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The basic inspect output provided minimal information about the client's internal state, making debugging difficult when working with complex configurations involving instrumented repositories, dispatchers, and mappers. Enhanced inspect now shows the complete component hierarchy. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- ruby_event_store/lib/ruby_event_store/client.rb | 5 ++++- ruby_event_store/spec/client_spec.rb | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ruby_event_store/lib/ruby_event_store/client.rb b/ruby_event_store/lib/ruby_event_store/client.rb index 5dbd7225e6..1d06e978bb 100644 --- a/ruby_event_store/lib/ruby_event_store/client.rb +++ b/ruby_event_store/lib/ruby_event_store/client.rb @@ -367,7 +367,10 @@ def overwrite(events_or_event) end def inspect - "#<#{self.class}:0x#{__id__.to_s(16)}>" + "#<#{self.class}:0x#{__id__.to_s(16)}>\n" \ + " - repository: #{@repository.inspect}\n" \ + " - broker: #{@broker.inspect}\n" \ + " - mapper: #{@mapper.inspect}" end EMPTY_HASH = {}.freeze diff --git a/ruby_event_store/spec/client_spec.rb b/ruby_event_store/spec/client_spec.rb index 3b0ac27f8a..f8546f3b6e 100644 --- a/ruby_event_store/spec/client_spec.rb +++ b/ruby_event_store/spec/client_spec.rb @@ -892,7 +892,12 @@ def self.event_type specify "#inspect" do object_id = client.object_id.to_s(16) - expect(client.inspect).to eq("#") + expect(client.inspect).to eq(<<~EOS.chomp) + # + - repository: #{client.instance_variable_get(:@repository).inspect} + - broker: #{client.instance_variable_get(:@broker).inspect} + - mapper: #{client.instance_variable_get(:@mapper).inspect} + EOS end specify "transform Record to SerializedRecord is only once when using the same serializer" do From c601ad792ad3e0c78b4ed2c68a618476cb63e82b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20=C5=81asocha?= Date: Tue, 22 Jul 2025 23:29:32 +0200 Subject: [PATCH 2/4] Add cleaner_inspect method to brokers for improved debugging output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The default inspect method for brokers displays verbose internal state that makes it difficult to understand the broker hierarchy in complex configurations. The new cleaner_inspect method provides a structured view focusing on the essential components with proper indentation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../lib/ruby_event_store/broker.rb | 7 +++++++ .../lib/ruby_event_store/client.rb | 2 +- .../ruby_event_store/instrumented_broker.rb | 7 +++++++ ruby_event_store/spec/broker_spec.rb | 18 ++++++++++++++++++ ruby_event_store/spec/client_spec.rb | 3 ++- .../spec/instrumented_broker_spec.rb | 18 ++++++++++++++++++ 6 files changed, 53 insertions(+), 2 deletions(-) diff --git a/ruby_event_store/lib/ruby_event_store/broker.rb b/ruby_event_store/lib/ruby_event_store/broker.rb index aa09f4d8d6..2b90a06acf 100644 --- a/ruby_event_store/lib/ruby_event_store/broker.rb +++ b/ruby_event_store/lib/ruby_event_store/broker.rb @@ -36,6 +36,13 @@ def all_subscriptions_for(topic) subscriptions.all_for(topic) end + def cleaner_inspect(indent: 0) + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - dispatcher: #{dispatcher.inspect} + EOS + end + private attr_reader :dispatcher, :subscriptions diff --git a/ruby_event_store/lib/ruby_event_store/client.rb b/ruby_event_store/lib/ruby_event_store/client.rb index 1d06e978bb..50944d50e0 100644 --- a/ruby_event_store/lib/ruby_event_store/client.rb +++ b/ruby_event_store/lib/ruby_event_store/client.rb @@ -369,7 +369,7 @@ def overwrite(events_or_event) def inspect "#<#{self.class}:0x#{__id__.to_s(16)}>\n" \ " - repository: #{@repository.inspect}\n" \ - " - broker: #{@broker.inspect}\n" \ + " - broker: #{@broker.respond_to?(:cleaner_inspect) ? @broker.cleaner_inspect(indent: 2) : @broker.inspect}\n" \ " - mapper: #{@mapper.inspect}" end diff --git a/ruby_event_store/lib/ruby_event_store/instrumented_broker.rb b/ruby_event_store/lib/ruby_event_store/instrumented_broker.rb index 3b4ec1f736..ed746aa2f0 100644 --- a/ruby_event_store/lib/ruby_event_store/instrumented_broker.rb +++ b/ruby_event_store/lib/ruby_event_store/instrumented_broker.rb @@ -66,6 +66,13 @@ def respond_to_missing?(method_name, _include_private) broker.respond_to?(method_name) end + def cleaner_inspect(indent: 0) + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - broker: #{broker.respond_to?(:cleaner_inspect) ? broker.cleaner_inspect(indent: indent + 2) : broker.inspect} + EOS + end + private attr_reader :instrumentation, :broker diff --git a/ruby_event_store/spec/broker_spec.rb b/ruby_event_store/spec/broker_spec.rb index 383830bfdb..a5ed59473f 100644 --- a/ruby_event_store/spec/broker_spec.rb +++ b/ruby_event_store/spec/broker_spec.rb @@ -6,5 +6,23 @@ module RubyEventStore ::RSpec.describe Broker do it_behaves_like "broker", Broker + + specify "#cleaner_inspect" do + broker = Broker.new + + expect(broker.cleaner_inspect).to eq(<<~EOS.chomp) + # + - dispatcher: #{broker.instance_variable_get(:@dispatcher).inspect} + EOS + end + + specify "#cleaner_inspect with indent" do + broker = Broker.new + + expect(broker.cleaner_inspect(indent: 4)).to eq(<<~EOS.chomp) + #{' ' * 4}# + #{' ' * 4} - dispatcher: #{broker.instance_variable_get(:@dispatcher).inspect} + EOS + end end end diff --git a/ruby_event_store/spec/client_spec.rb b/ruby_event_store/spec/client_spec.rb index f8546f3b6e..1d611babdc 100644 --- a/ruby_event_store/spec/client_spec.rb +++ b/ruby_event_store/spec/client_spec.rb @@ -892,10 +892,11 @@ def self.event_type specify "#inspect" do object_id = client.object_id.to_s(16) + broker = client.instance_variable_get(:@broker) expect(client.inspect).to eq(<<~EOS.chomp) # - repository: #{client.instance_variable_get(:@repository).inspect} - - broker: #{client.instance_variable_get(:@broker).inspect} + - broker: #{broker.respond_to?(:cleaner_inspect) ? broker.cleaner_inspect(indent: 2) : broker.inspect} - mapper: #{client.instance_variable_get(:@mapper).inspect} EOS end diff --git a/ruby_event_store/spec/instrumented_broker_spec.rb b/ruby_event_store/spec/instrumented_broker_spec.rb index 70eeb5146e..192073d0aa 100644 --- a/ruby_event_store/spec/instrumented_broker_spec.rb +++ b/ruby_event_store/spec/instrumented_broker_spec.rb @@ -194,6 +194,24 @@ module RubyEventStore ) end + specify "#cleaner_inspect" do + broker = Broker.new + instrumented_broker = InstrumentedBroker.new(broker, ActiveSupport::Notifications) + expect(instrumented_broker.cleaner_inspect).to eq(<<~EOS.chomp) + #<#{instrumented_broker.class.name}:0x#{instrumented_broker.object_id.to_s(16)}> + - broker: #{broker.cleaner_inspect(indent: 2)} + EOS + end + + specify "#cleaner_inspect with indent" do + broker = Broker.new + instrumented_broker = InstrumentedBroker.new(broker, ActiveSupport::Notifications) + expect(instrumented_broker.cleaner_inspect(indent: 4)).to eq(<<~EOS.chomp) + #{' ' * 4}#<#{instrumented_broker.class.name}:0x#{instrumented_broker.object_id.to_s(16)}> + #{' ' * 4} - broker: #{broker.cleaner_inspect(indent: 6)} + EOS + end + def subscribe_to(name) received_payloads = [] callback = ->(_name, _start, _finish, _id, payload) { received_payloads << payload } From f6e4b26505bb5544871b96f870be5d7fae88bc8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20=C5=81asocha?= Date: Wed, 23 Jul 2025 01:21:28 +0200 Subject: [PATCH 3/4] Add cleaner_inspect method to repositories for improved debugging visibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The standard inspect output for repositories contains verbose internal state that obscures the key configuration details. The new cleaner_inspect method provides a focused view of essential repository settings like serializers, with proper indentation for nested instrumented components. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../active_record/event_repository.rb | 7 +++++++ .../lib/ruby_event_store/client.rb | 2 +- .../ruby_event_store/in_memory_repository.rb | 7 +++++++ .../instrumented_repository.rb | 7 +++++++ ruby_event_store/spec/client_spec.rb | 3 ++- .../spec/in_memory_repository_spec.rb | 14 ++++++++++++++ .../spec/instrumented_repository_spec.rb | 18 ++++++++++++++++++ 7 files changed, 56 insertions(+), 2 deletions(-) diff --git a/ruby_event_store-active_record/lib/ruby_event_store/active_record/event_repository.rb b/ruby_event_store-active_record/lib/ruby_event_store/active_record/event_repository.rb index eb2462bf09..41d2618e5a 100644 --- a/ruby_event_store-active_record/lib/ruby_event_store/active_record/event_repository.rb +++ b/ruby_event_store-active_record/lib/ruby_event_store/active_record/event_repository.rb @@ -129,6 +129,13 @@ def event_in_stream?(event_id, stream) @repo_reader.event_in_stream?(event_id, stream) end + def cleaner_inspect(indent: 0) + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - serializer: #{@serializer.inspect} + EOS + end + private def add_to_stream(event_ids, stream, expected_version) diff --git a/ruby_event_store/lib/ruby_event_store/client.rb b/ruby_event_store/lib/ruby_event_store/client.rb index 50944d50e0..6de273741f 100644 --- a/ruby_event_store/lib/ruby_event_store/client.rb +++ b/ruby_event_store/lib/ruby_event_store/client.rb @@ -368,7 +368,7 @@ def overwrite(events_or_event) def inspect "#<#{self.class}:0x#{__id__.to_s(16)}>\n" \ - " - repository: #{@repository.inspect}\n" \ + " - repository: #{@repository.respond_to?(:cleaner_inspect) ? @repository.cleaner_inspect(indent: 2) : @repository.inspect}\n" \ " - broker: #{@broker.respond_to?(:cleaner_inspect) ? @broker.cleaner_inspect(indent: 2) : @broker.inspect}\n" \ " - mapper: #{@mapper.inspect}" end diff --git a/ruby_event_store/lib/ruby_event_store/in_memory_repository.rb b/ruby_event_store/lib/ruby_event_store/in_memory_repository.rb index abb69017d6..3ffe3494b8 100644 --- a/ruby_event_store/lib/ruby_event_store/in_memory_repository.rb +++ b/ruby_event_store/lib/ruby_event_store/in_memory_repository.rb @@ -137,6 +137,13 @@ def event_in_stream?(event_id, stream) !streams[stream.name].find { |event_in_stream| event_in_stream.event_id.eql?(event_id) }.nil? end + def cleaner_inspect(indent: 0) + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - serializer: #{serializer.inspect} + EOS + end + private def read_scope(spec) diff --git a/ruby_event_store/lib/ruby_event_store/instrumented_repository.rb b/ruby_event_store/lib/ruby_event_store/instrumented_repository.rb index a70311818c..09178458e1 100644 --- a/ruby_event_store/lib/ruby_event_store/instrumented_repository.rb +++ b/ruby_event_store/lib/ruby_event_store/instrumented_repository.rb @@ -61,6 +61,13 @@ def respond_to_missing?(method_name, _include_private) repository.respond_to?(method_name) end + def cleaner_inspect(indent: 0) + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - repository: #{repository.respond_to?(:cleaner_inspect) ? repository.cleaner_inspect(indent: indent + 2) : repository.inspect} + EOS + end + private attr_reader :repository, :instrumentation diff --git a/ruby_event_store/spec/client_spec.rb b/ruby_event_store/spec/client_spec.rb index 1d611babdc..d0e561fd62 100644 --- a/ruby_event_store/spec/client_spec.rb +++ b/ruby_event_store/spec/client_spec.rb @@ -892,10 +892,11 @@ def self.event_type specify "#inspect" do object_id = client.object_id.to_s(16) + repository = client.instance_variable_get(:@repository) broker = client.instance_variable_get(:@broker) expect(client.inspect).to eq(<<~EOS.chomp) # - - repository: #{client.instance_variable_get(:@repository).inspect} + - repository: #{repository.respond_to?(:cleaner_inspect) ? repository.cleaner_inspect(indent: 2) : repository.inspect} - broker: #{broker.respond_to?(:cleaner_inspect) ? broker.cleaner_inspect(indent: 2) : broker.inspect} - mapper: #{client.instance_variable_get(:@mapper).inspect} EOS diff --git a/ruby_event_store/spec/in_memory_repository_spec.rb b/ruby_event_store/spec/in_memory_repository_spec.rb index 4862783b93..ccbbc74ff3 100644 --- a/ruby_event_store/spec/in_memory_repository_spec.rb +++ b/ruby_event_store/spec/in_memory_repository_spec.rb @@ -148,5 +148,19 @@ module RubyEventStore repository.append_to_stream([SRecord.new], Stream.new("stream"), ExpectedVersion.any) end.not_to raise_error end + + specify "#cleaner_inspect" do + expect(repository.cleaner_inspect).to eq(<<~EOS.chomp) + #<#{repository.class.name}:0x#{repository.object_id.to_s(16)}> + - serializer: #{repository.instance_variable_get(:@serializer).inspect} + EOS + end + + specify "#cleaner_inspect with indent" do + expect(repository.cleaner_inspect(indent: 4)).to eq(<<~EOS.chomp) + #{' ' * 4}#<#{repository.class.name}:0x#{repository.object_id.to_s(16)}> + #{' ' * 4} - serializer: #{repository.instance_variable_get(:@serializer).inspect} + EOS + end end end diff --git a/ruby_event_store/spec/instrumented_repository_spec.rb b/ruby_event_store/spec/instrumented_repository_spec.rb index c23651267f..4a12954e21 100644 --- a/ruby_event_store/spec/instrumented_repository_spec.rb +++ b/ruby_event_store/spec/instrumented_repository_spec.rb @@ -194,6 +194,24 @@ module RubyEventStore ) end + specify "#cleaner_inspect" do + repository = InMemoryRepository.new + instrumented_repository = InstrumentedRepository.new(repository, ActiveSupport::Notifications) + expect(instrumented_repository.cleaner_inspect).to eq(<<~EOS.chomp) + #<#{instrumented_repository.class.name}:0x#{instrumented_repository.object_id.to_s(16)}> + - repository: #{repository.cleaner_inspect(indent: 2)} + EOS + end + + specify "#cleaner_inspect with indent" do + repository = InMemoryRepository.new + instrumented_repository = InstrumentedRepository.new(repository, ActiveSupport::Notifications) + expect(instrumented_repository.cleaner_inspect(indent: 4)).to eq(<<~EOS.chomp) + #{' ' * 4}#<#{instrumented_repository.class.name}:0x#{instrumented_repository.object_id.to_s(16)}> + #{' ' * 4} - repository: #{repository.cleaner_inspect(indent: 6)} + EOS + end + def subscribe_to(name) received_payloads = [] callback = ->(_name, _start, _finish, _id, payload) { received_payloads << payload } From ddbf8abe8399b5b52b9df5a9306b19a4cbd69aad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20=C5=81asocha?= Date: Wed, 23 Jul 2025 01:39:20 +0200 Subject: [PATCH 4/4] Improve transformation visibility in PipelineMapper inspect output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Display each transformation on a separate line with proper indentation for better readability when debugging mapper configurations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../lib/ruby_event_store/client.rb | 2 +- .../ruby_event_store/mappers/batch_mapper.rb | 7 +++++++ .../mappers/instrumented_batch_mapper.rb | 7 +++++++ .../mappers/instrumented_mapper.rb | 7 +++++++ .../mappers/pipeline_mapper.rb | 9 +++++++++ ruby_event_store/spec/client_spec.rb | 3 ++- .../spec/mappers/batch_mapper_spec.rb | 16 +++++++++++++++ ruby_event_store/spec/mappers/default_spec.rb | 20 +++++++++++++++++++ .../mappers/instrumented_batch_mapper_spec.rb | 18 +++++++++++++++++ .../spec/mappers/instrumented_mapper_spec.rb | 18 +++++++++++++++++ 10 files changed, 105 insertions(+), 2 deletions(-) diff --git a/ruby_event_store/lib/ruby_event_store/client.rb b/ruby_event_store/lib/ruby_event_store/client.rb index 6de273741f..61445567f2 100644 --- a/ruby_event_store/lib/ruby_event_store/client.rb +++ b/ruby_event_store/lib/ruby_event_store/client.rb @@ -370,7 +370,7 @@ def inspect "#<#{self.class}:0x#{__id__.to_s(16)}>\n" \ " - repository: #{@repository.respond_to?(:cleaner_inspect) ? @repository.cleaner_inspect(indent: 2) : @repository.inspect}\n" \ " - broker: #{@broker.respond_to?(:cleaner_inspect) ? @broker.cleaner_inspect(indent: 2) : @broker.inspect}\n" \ - " - mapper: #{@mapper.inspect}" + " - mapper: #{@mapper.respond_to?(:cleaner_inspect) ? @mapper.cleaner_inspect(indent: 2) : @mapper.inspect}" end EMPTY_HASH = {}.freeze diff --git a/ruby_event_store/lib/ruby_event_store/mappers/batch_mapper.rb b/ruby_event_store/lib/ruby_event_store/mappers/batch_mapper.rb index 425628a68d..7591fdc722 100644 --- a/ruby_event_store/lib/ruby_event_store/mappers/batch_mapper.rb +++ b/ruby_event_store/lib/ruby_event_store/mappers/batch_mapper.rb @@ -14,6 +14,13 @@ def events_to_records(events) def records_to_events(records) records.map { |record| @mapper.record_to_event(record) } end + + def cleaner_inspect(indent: 0) + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - mapper: #{@mapper.respond_to?(:cleaner_inspect) ? @mapper.cleaner_inspect(indent: indent + 2) : @mapper.inspect} + EOS + end end end end diff --git a/ruby_event_store/lib/ruby_event_store/mappers/instrumented_batch_mapper.rb b/ruby_event_store/lib/ruby_event_store/mappers/instrumented_batch_mapper.rb index 495a2cd80c..e6b99e6791 100644 --- a/ruby_event_store/lib/ruby_event_store/mappers/instrumented_batch_mapper.rb +++ b/ruby_event_store/lib/ruby_event_store/mappers/instrumented_batch_mapper.rb @@ -20,6 +20,13 @@ def records_to_events(records) end end + def cleaner_inspect(indent: 0) + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - mapper: #{mapper.respond_to?(:cleaner_inspect) ? mapper.cleaner_inspect(indent: indent + 2) : mapper.inspect} + EOS + end + private attr_reader :instrumentation, :mapper diff --git a/ruby_event_store/lib/ruby_event_store/mappers/instrumented_mapper.rb b/ruby_event_store/lib/ruby_event_store/mappers/instrumented_mapper.rb index 74afe07369..45449b326c 100644 --- a/ruby_event_store/lib/ruby_event_store/mappers/instrumented_mapper.rb +++ b/ruby_event_store/lib/ruby_event_store/mappers/instrumented_mapper.rb @@ -20,6 +20,13 @@ def record_to_event(record) end end + def cleaner_inspect(indent: 0) + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - mapper: #{mapper.respond_to?(:cleaner_inspect) ? mapper.cleaner_inspect(indent: indent + 2) : mapper.inspect} + EOS + end + private attr_reader :instrumentation, :mapper diff --git a/ruby_event_store/lib/ruby_event_store/mappers/pipeline_mapper.rb b/ruby_event_store/lib/ruby_event_store/mappers/pipeline_mapper.rb index fdaefef98c..5e89b8be72 100644 --- a/ruby_event_store/lib/ruby_event_store/mappers/pipeline_mapper.rb +++ b/ruby_event_store/lib/ruby_event_store/mappers/pipeline_mapper.rb @@ -15,6 +15,15 @@ def record_to_event(record) pipeline.load(record) end + def cleaner_inspect(indent: 0) + transformations_list = pipeline.transformations.map { |t| "#{' ' * (indent + 4)}- #{t.inspect}" }.join("\n") + <<~EOS.chomp + #{' ' * indent}#<#{self.class}:0x#{__id__.to_s(16)}> + #{' ' * indent} - transformations: + #{transformations_list} + EOS + end + private attr_reader :pipeline diff --git a/ruby_event_store/spec/client_spec.rb b/ruby_event_store/spec/client_spec.rb index d0e561fd62..95159b69e9 100644 --- a/ruby_event_store/spec/client_spec.rb +++ b/ruby_event_store/spec/client_spec.rb @@ -894,11 +894,12 @@ def self.event_type object_id = client.object_id.to_s(16) repository = client.instance_variable_get(:@repository) broker = client.instance_variable_get(:@broker) + mapper = client.instance_variable_get(:@mapper) expect(client.inspect).to eq(<<~EOS.chomp) # - repository: #{repository.respond_to?(:cleaner_inspect) ? repository.cleaner_inspect(indent: 2) : repository.inspect} - broker: #{broker.respond_to?(:cleaner_inspect) ? broker.cleaner_inspect(indent: 2) : broker.inspect} - - mapper: #{client.instance_variable_get(:@mapper).inspect} + - mapper: #{mapper.respond_to?(:cleaner_inspect) ? mapper.cleaner_inspect(indent: 2) : mapper.inspect} EOS end diff --git a/ruby_event_store/spec/mappers/batch_mapper_spec.rb b/ruby_event_store/spec/mappers/batch_mapper_spec.rb index 5557814656..4ca856955f 100644 --- a/ruby_event_store/spec/mappers/batch_mapper_spec.rb +++ b/ruby_event_store/spec/mappers/batch_mapper_spec.rb @@ -22,6 +22,22 @@ module Mappers mapper = BatchMapper.new(item_mapper) expect(mapper.records_to_events(records)).to eq(records.map(&:event_id)) end + + specify "#cleaner_inspect" do + mapper = BatchMapper.new + expect(mapper.cleaner_inspect).to eq(<<~EOS.chomp) + #<#{mapper.class.name}:0x#{mapper.object_id.to_s(16)}> + - mapper: #{mapper.instance_variable_get(:@mapper).cleaner_inspect(indent: 2)} + EOS + end + + specify "#cleaner_inspect with indent" do + mapper = BatchMapper.new + expect(mapper.cleaner_inspect(indent: 4)).to eq(<<~EOS.chomp) + #{' ' * 4}#<#{mapper.class.name}:0x#{mapper.object_id.to_s(16)}> + #{' ' * 4} - mapper: #{mapper.instance_variable_get(:@mapper).cleaner_inspect(indent: 6)} + EOS + end end end end diff --git a/ruby_event_store/spec/mappers/default_spec.rb b/ruby_event_store/spec/mappers/default_spec.rb index 5ef0532ace..b9d136cd31 100644 --- a/ruby_event_store/spec/mappers/default_spec.rb +++ b/ruby_event_store/spec/mappers/default_spec.rb @@ -102,6 +102,26 @@ module Mappers def stringify(hash) hash.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v } end + + specify "#cleaner_inspect" do + mapper = Default.new + transformations_list = mapper.instance_variable_get(:@pipeline).transformations.map { |t| " - #{t.inspect}" }.join("\n") + expect(mapper.cleaner_inspect).to eq(<<~EOS.chomp) + #<#{mapper.class.name}:0x#{mapper.object_id.to_s(16)}> + - transformations: + #{transformations_list} + EOS + end + + specify "#cleaner_inspect with indent" do + mapper = Default.new + transformations_list = mapper.instance_variable_get(:@pipeline).transformations.map { |t| "#{' ' * 8}- #{t.inspect}" }.join("\n") + expect(mapper.cleaner_inspect(indent: 4)).to eq(<<~EOS.chomp) + #{' ' * 4}#<#{mapper.class.name}:0x#{mapper.object_id.to_s(16)}> + #{' ' * 4} - transformations: + #{transformations_list} + EOS + end end end end diff --git a/ruby_event_store/spec/mappers/instrumented_batch_mapper_spec.rb b/ruby_event_store/spec/mappers/instrumented_batch_mapper_spec.rb index 2a1e8c0870..5541cc7072 100644 --- a/ruby_event_store/spec/mappers/instrumented_batch_mapper_spec.rb +++ b/ruby_event_store/spec/mappers/instrumented_batch_mapper_spec.rb @@ -46,6 +46,24 @@ module Mappers end end + specify "#cleaner_inspect" do + mapper = BatchMapper.new + instrumented_mapper = InstrumentedBatchMapper.new(mapper, ActiveSupport::Notifications) + expect(instrumented_mapper.cleaner_inspect).to eq(<<~EOS.chomp) + #<#{instrumented_mapper.class.name}:0x#{instrumented_mapper.object_id.to_s(16)}> + - mapper: #{mapper.cleaner_inspect(indent: 2)} + EOS + end + + specify "#cleaner_inspect with indent" do + mapper = BatchMapper.new + instrumented_mapper = InstrumentedBatchMapper.new(mapper, ActiveSupport::Notifications) + expect(instrumented_mapper.cleaner_inspect(indent: 4)).to eq(<<~EOS.chomp) + #{' ' * 4}#<#{instrumented_mapper.class.name}:0x#{instrumented_mapper.object_id.to_s(16)}> + #{' ' * 4} - mapper: #{mapper.cleaner_inspect(indent: 6)} + EOS + end + def subscribe_to(name) received_payloads = [] callback = ->(_name, _start, _finish, _id, payload) { received_payloads << payload } diff --git a/ruby_event_store/spec/mappers/instrumented_mapper_spec.rb b/ruby_event_store/spec/mappers/instrumented_mapper_spec.rb index 0544b5eac3..3cf4369639 100644 --- a/ruby_event_store/spec/mappers/instrumented_mapper_spec.rb +++ b/ruby_event_store/spec/mappers/instrumented_mapper_spec.rb @@ -46,6 +46,24 @@ module Mappers end end + specify "#cleaner_inspect" do + mapper = Default.new + instrumented_mapper = InstrumentedMapper.new(mapper, ActiveSupport::Notifications) + expect(instrumented_mapper.cleaner_inspect).to eq(<<~EOS.chomp) + #<#{instrumented_mapper.class.name}:0x#{instrumented_mapper.object_id.to_s(16)}> + - mapper: #{mapper.cleaner_inspect(indent: 2)} + EOS + end + + specify "#cleaner_inspect with indent" do + mapper = Default.new + instrumented_mapper = InstrumentedMapper.new(mapper, ActiveSupport::Notifications) + expect(instrumented_mapper.cleaner_inspect(indent: 4)).to eq(<<~EOS.chomp) + #{' ' * 4}#<#{instrumented_mapper.class.name}:0x#{instrumented_mapper.object_id.to_s(16)}> + #{' ' * 4} - mapper: #{mapper.cleaner_inspect(indent: 6)} + EOS + end + def subscribe_to(name) received_payloads = [] callback = ->(_name, _start, _finish, _id, payload) { received_payloads << payload }