test/docs/nested_test.rb in trailblazer-macro-2.1.9 vs test/docs/nested_test.rb in trailblazer-macro-2.1.10.beta1

- old
+ new

@@ -149,27 +149,29 @@ include T.def_steps(:create, :save) #~meths end end #:nested-with-pass-fast end - # pass fast + #= {#save} is still called because the {End.pass_fast} terminus is automatically wired to + #= the success "output" of Nested(). create.(seq: []).inspect(:seq).must_equal %{<Result:true [[:create, :just_pass_fast, :save]] >} end end it "Nested(:method, auto_wire: *activities) with :pass_fast => End()" do module E class JsonValidate < Trailblazer::Operation - step :validate, Output(:success) => End(:json_validate) - include T.def_steps(:validate) + step :validate, Output(:failure) => End(:invalid_json) + step :save + include T.def_steps(:validate, :save) end #:nested-with-auto-wire class Create < Trailblazer::Operation step :create step Nested(:compute_nested, auto_wire: [Validate, JsonValidate]), - Output(:json_validate) => End(:jsoned) + Output(:invalid_json) => End(:jsoned) #~meths def compute_nested(ctx, what:, **) what end @@ -177,13 +179,39 @@ include T.def_steps(:create) #~meths end end #:nested-with-auto-wire end - result = Create.(seq: [], what: JsonValidate) + #@ nested {JsonValidate} ends on {End.success} + result = Create.(seq: [], what: JsonValidate, validate: true) + + result.inspect(:seq).must_equal %{<Result:true [[:create, :validate, :save]] >} + result.event.inspect.must_equal %{#<Trailblazer::Activity::Railway::End::Success semantic=:success>} + + #@ nested {JsonValidate} ends on {End.invalid_json} because validate fails. + result = Create.(seq: [], what: JsonValidate, validate: false) + result.inspect(:seq).must_equal %{<Result:false [[:create, :validate]] >} result.event.inspect.must_equal %{#<Trailblazer::Activity::End semantic=:jsoned>} + + #@ nested {JsonValidate} ends on {End.failure} because save fails. + result = Create.(seq: [], what: JsonValidate, save: false) + + result.inspect(:seq).must_equal %{<Result:false [[:create, :validate, :save]] >} + result.event.inspect.must_equal %{#<Trailblazer::Activity::Railway::End::Failure semantic=:failure>} + + #@ nested {Validate} ends on {End.failure} because validate fails. + result = Create.(seq: [], what: Validate, validate: false) + + result.inspect(:seq).must_equal %{<Result:false [[:create, :validate]] >} + result.event.inspect.must_equal %{#<Trailblazer::Activity::Railway::End::Failure semantic=:failure>} + + #@ nested {Validate} ends on {End.success}. + result = Create.(seq: [], what: Validate) + + result.inspect(:seq).must_equal %{<Result:true [[:create, :validate]] >} + result.event.inspect.must_equal %{#<Trailblazer::Activity::Railway::End::Success semantic=:success>} end end end # TODO: test with :input/:output, tracing