Micro::Case contracts
serradura opened this issue · 0 comments
serradura commented
Micro::Case contracts
class Divide < Micro::Case
attributes :a, :b
results do |on|
on.failure(:attributes_must_be_numbers)
on.failure(:division_by_zero)
on.success(result: [:division])
end
def call!
return Failure(:attributes_must_be_numbers) unless Kind.of?(Numeric, a, b)
return Failure(:division_by_zero) if b == 0
Success result: { division: a / b }
end
end