From 06ca7bd1a5899ec326b82fc093a49d781c58e4fc Mon Sep 17 00:00:00 2001 From: Lud Date: Wed, 15 May 2024 22:20:12 +0800 Subject: [PATCH] simulate a failing service in test app --- spec/test_app/app/services/airports/filter.rb | 16 ++++++++++++++++ spec/test_app/sorbet/rbi/gems/kirei@0.3.0.rbi | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/spec/test_app/app/services/airports/filter.rb b/spec/test_app/app/services/airports/filter.rb index 8fb469c..29a94c5 100644 --- a/spec/test_app/app/services/airports/filter.rb +++ b/spec/test_app/app/services/airports/filter.rb @@ -11,6 +11,7 @@ class Filter ).returns(Kirei::Services::Result[T::Array[Airport]]) end def self.call(search) + return test_errors if test_failure? # simulate a failure for testing purposes return Kirei::Services::Result.new(result: Airport.all) if search.nil? # @@ -23,5 +24,20 @@ def self.call(search) Kirei::Services::Result.new(result: Airport.resolve(query)) end + + sig { returns(T::Boolean) } + def self.test_failure? + Kernel.rand < 0.3 ? true : false + end + + sig { returns(Kirei::Services::Result[T::Array[Airport]]) } + def self.test_errors + err = Kirei::Errors::JsonApiError.new( + code: "500", + detail: "Service failed", + ) + + Kirei::Services::Result.new(errors: [err]) + end end end diff --git a/spec/test_app/sorbet/rbi/gems/kirei@0.3.0.rbi b/spec/test_app/sorbet/rbi/gems/kirei@0.3.0.rbi index b77ea30..1829e9b 100644 --- a/spec/test_app/sorbet/rbi/gems/kirei@0.3.0.rbi +++ b/spec/test_app/sorbet/rbi/gems/kirei@0.3.0.rbi @@ -134,7 +134,7 @@ module Kirei::Errors; end # # source://kirei//lib/kirei/errors/json_api_error.rb#10 class Kirei::Errors::JsonApiError < ::T::Struct - const :code, ::Symbol + const :code, ::String const :detail, T.nilable(::String) const :source, T.nilable(::Kirei::Errors::JsonApiErrorSource) @@ -146,7 +146,7 @@ end # source://kirei//lib/kirei/errors/json_api_error_source.rb#6 class Kirei::Errors::JsonApiErrorSource < ::T::Struct - const :attribute, T.any(::String, ::Symbol) + const :attribute, ::String const :model, T.nilable(::String) const :id, T.nilable(::String)