DEV: fixes spec failing with ruby 3.2.1 (#20356)

The error was:

```
Failures:

  1) Chat::Endpoint.call(service, &block) when using the on_failed_contract action when the service contract does not fail does not run the provided block
     Failure/Error: subject(:endpoint) { described_class.call(service, controller, &actions_block) }

     NoMethodError:
       private method `run' called for #<SuccessContractService:0x000000011e3b28a0 @initial_context={"guardian"=>nil}, @context=#<Chat::Service::Base::Context guardian=nil, __steps__=[#<Chat::Service::Base::ContractStep:0x000000011de51230 @name=:default, @method_name=:default, @class_name=SuccessContractService::Contract, @default_values_from=nil>]>>
     # ./plugins/chat/app/services/base.rb:305:in `call'
     # ./plugins/chat/app/helpers/with_service_helper.rb:20:in `run_service'
     # ./plugins/chat/lib/endpoint.rb:76:in `call'
     # ./plugins/chat/lib/endpoint.rb:70:in `call'
     # ./plugins/chat/spec/lib/endpoint_spec.rb:80:in `block (3 levels) in <main>'
     # ./plugins/chat/spec/lib/endpoint_spec.rb:198:in `block (5 levels) in <main>'
     # ./spec/rails_helper.rb:358:in `block (2 levels) in <top (required)>'
```
This commit is contained in:
Joffrey JAFFEUX 2023-02-18 12:13:41 +01:00 committed by GitHub
parent 2867c5b8f5
commit 39be3cb619
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -407,18 +407,19 @@ module Chat
@context = Context.build(initial_context.merge(__steps__: self.class.steps)) @context = Context.build(initial_context.merge(__steps__: self.class.steps))
end end
private # @!visibility private
def run def run
run! run!
rescue Failure => exception rescue Failure => exception
raise if context.object_id != exception.context.object_id raise if context.object_id != exception.context.object_id
end end
# @!visibility private
def run! def run!
self.class.steps.each { |step| step.call(self, context) } self.class.steps.each { |step| step.call(self, context) }
end end
# @!visibility private
def fail!(message) def fail!(message)
step_name = caller_locations(1, 1)[0].label step_name = caller_locations(1, 1)[0].label
context["result.step.#{step_name}"].fail(error: message) context["result.step.#{step_name}"].fail(error: message)