dry-transaction
dry-transaction copied to clipboard
Allow matching by class instead of just step_name
Describe the bug
When calling a transaction with a block I can't match the result by the failure class and only by the name of the step.
To Reproduce
class TestOp
include Dry::Transaction
step :validate
def validate(input)
Contract.new.call(**input).to_monad
end
end
TestOp.new.call({}) do |m|
m.failure(Dry::Validation::Result) do |validation|
# ... <- doesn't match here
end
m.failure do
# ... <- it matches here
end
Expected behavior
It should match by the resulting class and not just by the step name.
However, if I don't call it with a block and instead I pattern match the result, it works as intended.
op = TestOp.new.call({})
case op
in Dry::Monads::Failure(Dry::Validation::Result => validation)
# <- it reaches here
end
My environment
- Affects my production application: NO
- Ruby version: 2.7.2
- OS: debian
Is this issue been taken up, if not I would like to pick it up and fix it?