Sha256: 5c6fbdfc6c99a3b04f98e46c7b629e9d5ebc65b7f6f7f269eb6480991d8baa49
Contents?: true
Size: 1.05 KB
Versions: 1
Compression:
Stored size: 1.05 KB
Contents
# typed: strict # frozen_string_literal: true require 'clean_architecture/entities/failure_details' require 'dry-matcher' require 'dry/monads/all' module CleanArchitecture module Matchers class UseCaseResult extend T::Sig sig { params(result: Dry::Monads::Result[Entities::FailureDetails, T.untyped], block: T.untyped).returns(T.untyped) } def self.call(result, &block) new.matcher.call(result, &block) end sig {returns(Dry::Matcher)} def matcher Dry::Matcher.new(success: success_case, failure: failure_case) end private sig { returns(Dry::Matcher::Case) } def success_case Dry::Matcher::Case.new( match: ->(value) { value.is_a?(Dry::Monads::Success) }, resolve: ->(value) { value.value! } ) end sig { returns(Dry::Matcher::Case) } def failure_case Dry::Matcher::Case.new( match: ->(value) { value.is_a?(Dry::Monads::Failure) }, resolve: ->(value) { value.failure } ) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
clean-architecture-6.1.0 | lib/clean_architecture/matchers/use_case_result.rb |