solid-process/solid-result

View on GitHub
lib/solid/result/contract/error.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class Solid::Result::Contract::Error < Solid::Result::Error
  class UnexpectedType < self
    def self.build(type:, allowed_types:)
      new("type :#{type} is not allowed. Allowed types: #{allowed_types.map(&:inspect).join(', ')}")
    end
  end

  class UnexpectedValue < self
    def self.build(type:, value:, cause: nil)
      cause_message = " (#{cause.message})" if cause

      new("value #{value.inspect} is not allowed for :#{type} type#{cause_message}")
    end
  end
end