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