trailblazer-operation 0.10.1 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +2 -2
  3. data/CHANGES.md +14 -0
  4. data/lib/trailblazer/operation/class_dependencies.rb +1 -1
  5. data/lib/trailblazer/operation/public_call.rb +24 -14
  6. data/lib/trailblazer/operation/railway.rb +13 -7
  7. data/lib/trailblazer/operation/version.rb +1 -1
  8. data/lib/trailblazer/operation/wtf.rb +11 -0
  9. data/lib/trailblazer/operation.rb +2 -2
  10. data/test/call_test.rb +32 -10
  11. data/test/class_dependencies_test.rb +8 -4
  12. data/test/docs/autogenerated/activity_basics_test.rb +72 -0
  13. data/test/docs/autogenerated/composable_variable_mapping_test.rb +880 -0
  14. data/test/docs/autogenerated/fast_track_layout_test.rb +76 -0
  15. data/test/docs/autogenerated/mechanics_test.rb +382 -0
  16. data/test/docs/autogenerated/sequence_options_test.rb +202 -0
  17. data/test/docs/autogenerated/subprocess_test.rb +257 -0
  18. data/test/docs/autogenerated/wiring_api_test.rb +435 -0
  19. data/test/docs/developer_test.rb +27 -0
  20. data/test/docs/public_call_monkeypatching_test.rb +96 -0
  21. data/test/docs/result_test.rb +38 -0
  22. data/test/docs/step_dsl_test.rb +93 -0
  23. data/test/operation_test.rb +53 -13
  24. data/test/result_test.rb +1 -1
  25. data/test/test_helper.rb +17 -5
  26. data/test/trace_test.rb +3 -43
  27. data/trailblazer-operation.gemspec +2 -1
  28. metadata +44 -22
  29. data/lib/trailblazer/operation/trace.rb +0 -67
  30. data/test/callable_test.rb +0 -147
  31. data/test/docs/doormat_test.rb +0 -190
  32. data/test/docs/macaroni_test.rb +0 -31
  33. data/test/skill_test.rb +0 -66
  34. data/test/wire_test.rb +0 -113
  35. data/test/wiring/defaults_test.rb +0 -193
  36. data/test/wiring/subprocess_test.rb +0 -70
@@ -0,0 +1,27 @@
1
+ require "test_helper"
2
+
3
+ class Wtf_DeveloperDocsTest < Minitest::Spec
4
+ Memo = Class.new
5
+ module Memo::Operation
6
+ class Create < Trailblazer::Operation
7
+ step :validate
8
+ step :save
9
+ left :handle_errors
10
+ step :notify
11
+ #~meths
12
+ include T.def_steps(:validate, :save, :handle_errors, :notify)
13
+ #~meths end
14
+ end
15
+ end
16
+
17
+ it "what" do
18
+ #:wtf
19
+ result = Memo::Operation::Create.wtf?(
20
+ #~meths
21
+ seq: [],
22
+ #~meths end
23
+ params: {memo: "remember me!"}
24
+ )
25
+ #:wtf end
26
+ end
27
+ end
@@ -0,0 +1,96 @@
1
+ require "test_helper"
2
+
3
+ class PublicCallMonkeypatchingTest < Minitest::Spec
4
+ #@ test overriding {Operation.call_with_public_interface}
5
+ #@
6
+ module AfterCall
7
+ def self.add_task_name(wrap_ctx, original_args)
8
+ (ctx, _flow_options), circuit_options = original_args
9
+
10
+ activity = circuit_options[:activity] # currently running Activity.
11
+ task = wrap_ctx[:task] # the current "step".
12
+ task_id = Trailblazer::Activity::Introspect.Nodes(activity, task: task).id
13
+
14
+ ctx[:seq] << task_id
15
+
16
+ return wrap_ctx, original_args # yay to mutable state. not.
17
+ end
18
+ end
19
+
20
+ it "overrides {call_with_public_interface} and allows injecting {circuit_options} and {flow_options} from the override" do
21
+ TaskWrapExtension = Trailblazer::Activity::TaskWrap::Extension(
22
+ [AfterCall.method(:add_task_name), id: "my.add_1", append: "task_wrap.call_task"]
23
+ )
24
+
25
+ module OperationExtensions
26
+ def call_with_public_interface(ctx, flow_options, **circuit_options)
27
+ super(
28
+ ctx,
29
+ flow_options.merge({}),
30
+ **circuit_options.merge(
31
+ wrap_runtime: Hash.new(TaskWrapExtension),
32
+ runner: Trailblazer::Activity::TaskWrap::Runner
33
+ )
34
+ )
35
+ end
36
+ end
37
+
38
+ operation = Class.new(Trailblazer::Operation) do
39
+ step :a
40
+
41
+ include Trailblazer::Activity::Testing.def_steps(:a)
42
+ end
43
+ operation.extend OperationExtensions # monkey-patch the "global" Operation.
44
+
45
+
46
+ # circuit interface invocation using call
47
+ result = operation.call(
48
+ seq: []
49
+ )
50
+
51
+ assert_equal result.success?, true
52
+ assert_equal result[:seq], ["Start.default", :a, :a, "End.success", nil] # {nil} because we don't have an ID for the actual operation.
53
+ end
54
+ end
55
+
56
+ class FlowOptionsMonkeypatching < Minitest::Spec
57
+ module App
58
+ FLOW_OPTIONS = {
59
+ context_options: {
60
+ aliases: { "contract.default": :contract },
61
+ container_class: Trailblazer::Context::Container::WithAliases,
62
+ }
63
+ }
64
+
65
+ module OperationExtensions
66
+ def call_with_public_interface(ctx, flow_options, **circuit_options)
67
+ super(
68
+ ctx,
69
+ flow_options.merge(App::FLOW_OPTIONS),
70
+ **circuit_options
71
+ )
72
+ end
73
+ end
74
+ end
75
+
76
+ it "inject aliases for the global run via {flow_options}" do
77
+ operation = Class.new(Trailblazer::Operation) do
78
+ step :a
79
+
80
+ def a(ctx, contract:, **)
81
+ ctx[:seq] << contract
82
+ end
83
+ end
84
+ operation.extend App::OperationExtensions # monkey-patch the "global" Operation.
85
+
86
+
87
+ # circuit interface invocation using call
88
+ result = operation.call(
89
+ seq: [],
90
+ :"contract.default" => Object,
91
+ )
92
+
93
+ assert_equal result.success?, true
94
+ assert_equal result[:seq].inspect, %([Object])
95
+ end
96
+ end
@@ -0,0 +1,38 @@
1
+ require "test_helper"
2
+
3
+ module A
4
+ class DocsResultTest < Minitest::Spec
5
+ Memo = Class.new
6
+ module Memo::Operation
7
+ class Create < Trailblazer::Operation
8
+ step :validate, Output(:failure) => End(:validation_error)
9
+ step :save
10
+ include T.def_steps(:validate, :save)
11
+ end
12
+ end
13
+
14
+ it "exposes {#terminus}" do
15
+ result = Memo::Operation::Create.(seq: [])
16
+ assert_equal CU.inspect(result.terminus.to_h), %({:semantic=>:success})
17
+
18
+ result = Memo::Operation::Create.(validate: false, seq: [])
19
+ assert_equal CU.inspect(result.terminus.to_h), %({:semantic=>:validation_error})
20
+
21
+ result = Memo::Operation::Create.(save: false, seq: [])
22
+ assert_equal CU.inspect(result.terminus.to_h), %({:semantic=>:failure})
23
+ end
24
+
25
+ it "deprecates Result#event" do
26
+ result = Memo::Operation::Create.(seq: [])
27
+ terminus = nil
28
+
29
+ _, warning = capture_io do
30
+ terminus = result.event
31
+ end
32
+ line_no = __LINE__ - 2
33
+
34
+ assert_equal warning, %{[Trailblazer] #{File.realpath(__FILE__)}:#{line_no} Using `Result#event` is deprecated, please use `Result#terminus`\n}
35
+ assert_equal CU.inspect(terminus.to_h), %({:semantic=>:success})
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,93 @@
1
+ require "test_helper"
2
+
3
+ module A
4
+ class DocsStepTest < Minitest::Spec
5
+ Memo = Module.new
6
+
7
+ #:railway
8
+ module Memo::Operation
9
+ class Create < Trailblazer::Operation
10
+ step :validate
11
+ step :save
12
+ #~step
13
+ left :handle_errors
14
+ #~left
15
+ step :notify
16
+ #~meths
17
+ # fail :log_error
18
+ # step :save
19
+ def validate(ctx, params:, **)
20
+ ctx[:input] = Form.validate(params) # true/false
21
+ end
22
+
23
+ # def create(ctx, input:, create:, **)
24
+ # create
25
+ # end
26
+
27
+ # def log_error(ctx, logger:, params:, **)
28
+ # logger.error("wrong params: #{params.inspect}")
29
+ # end
30
+ #~meths end
31
+ end
32
+ end
33
+ #~step end
34
+ #~left end
35
+ #:railway end
36
+
37
+ # it "what" do
38
+ # ctx = {params: {text: "Hydrate!"}, create: true}
39
+ # signal, (ctx, _flow_options) = D::Create.([ctx, {}])
40
+ # end
41
+ end
42
+ end
43
+
44
+
45
+ module B
46
+ class Fail_DocsStepTest < Minitest::Spec
47
+ Memo = Module.new
48
+
49
+ #:fail
50
+ module Memo::Operation
51
+ class Create < Trailblazer::Operation
52
+ step :validate
53
+ step :save
54
+ fail :handle_errors # just like {#left}
55
+ #~meths
56
+ step :notify
57
+ include T.def_steps(:validate, :save, :handle_errors, :notify)
58
+ #~meths end
59
+ end
60
+ end
61
+ #:fail end
62
+
63
+ it "what" do
64
+ assert_invoke Memo::Operation::Create, seq: "[:validate, :save, :notify]"
65
+ assert_invoke Memo::Operation::Create, validate: false, terminus: :failure, seq: "[:validate, :handle_errors]"
66
+ end
67
+ end
68
+ end
69
+
70
+ module A
71
+ class Pass_DocsStepTest < Minitest::Spec
72
+ Memo = Module.new
73
+
74
+ #:pass
75
+ module Memo::Operation
76
+ class Create < Trailblazer::Operation
77
+ step :validate
78
+ pass :save # no output goes to the failure track here.
79
+ left :handle_errors
80
+ #~meths
81
+ step :notify
82
+ include T.def_steps(:validate, :save, :handle_errors, :notify)
83
+ #~meths end
84
+ end
85
+ end
86
+ #:pass end
87
+
88
+ it "what" do
89
+ assert_invoke Memo::Operation::Create, seq: "[:validate, :save, :notify]"
90
+ assert_invoke Memo::Operation::Create, validate: false, terminus: :failure, seq: "[:validate, :handle_errors]"
91
+ end
92
+ end
93
+ end
@@ -1,5 +1,55 @@
1
1
  require "test_helper"
2
2
 
3
+ # Tests around {Operation.call}.
4
+ class OperationTest < Minitest::Spec
5
+ class Noop < Trailblazer::Operation
6
+ def self.capture_circuit_options((ctx, flow_options), **circuit_options)
7
+ ctx[:capture_circuit_options] = circuit_options.keys.inspect
8
+
9
+ return Trailblazer::Activity::Right, [ctx, flow_options]
10
+ end
11
+
12
+ step task: method(:capture_circuit_options)
13
+ end
14
+
15
+ # Mixing keywords and string keys in {Operation.call}.
16
+ # Test that {.(params: {}, "current_user" => user)} is processed properly
17
+
18
+ it "doesn't mistake circuit options as ctx variables when using circuit-interface" do
19
+ signal, (ctx, _) = Noop.call(
20
+ [{params: {}}, {}],
21
+ # real circuit_options
22
+ variable_for_circuit_options: true
23
+ ) # call_with_public_interface
24
+ #@ {:variable_for_circuit_options} is not supposed to be in {ctx}.
25
+ assert_equal CU.inspect(ctx), %({:params=>{}, :capture_circuit_options=>"[:variable_for_circuit_options, :exec_context, :activity, :runner]"})
26
+ end
27
+
28
+ it "doesn't mistake circuit options as ctx variables when using the call interface" do
29
+ result = Noop.call(
30
+ params: {},
31
+ model: true,
32
+ "current_user" => Object
33
+ ) # call with public interface.
34
+ #@ {:variable_for_circuit_options} is not supposed to be in {ctx}.
35
+ assert_result result, {params: {}, model: true, current_user: Object, capture_circuit_options: "[:wrap_runtime, :activity, :exec_context, :runner]"}
36
+ end
37
+
38
+ #@ {#call_with_public_interface}
39
+ it "doesn't mistake circuit options as ctx variables when using circuit-interface" do
40
+ result = Noop.call_with_public_interface(
41
+ {params: {}},
42
+ {},
43
+ variable_for_circuit_options: true
44
+ ) # call_with_public_interface has two positional args, and kwargs for {circuit_options}.
45
+
46
+ assert_result result, {params: {}, capture_circuit_options: "[:variable_for_circuit_options, :wrap_runtime, :activity, :exec_context, :runner]"}
47
+ # assert_equal result.inspect, %(<Result:true #<Trailblazer::Context::Container wrapped_options={:params=>{}} mutable_options={:capture_circuit_options=>\"[:variable_for_circuit_options, :wrap_runtime, :activity, :exec_context, :runner]\"}> >)
48
+ end
49
+ end
50
+
51
+ # TODO: remove this test as many cases are covered via autogenerated activity tests.
52
+
3
53
  class DeclarativeApiTest < Minitest::Spec
4
54
  it "doesn't invoke {call} twice when using public interface" do
5
55
  class MyOp < Trailblazer::Operation
@@ -33,7 +83,7 @@ class DeclarativeApiTest < Minitest::Spec
33
83
  pass :wasnt_ok!
34
84
  pass :was_ok!
35
85
  fail :return_true!
36
- fail :return_false!
86
+ left :return_false!
37
87
 
38
88
  step :bla, input: ->(ctx, *) { {id: ctx.inspect} }, output: ->(scope, ctx) { ctx["hello"] = scope["1"]; ctx }
39
89
 
@@ -117,17 +167,6 @@ class DeclarativeApiTest < Minitest::Spec
117
167
  Unset. ("params" => {decide: true}).inspect("a", "b", "c", "d", "e").must_equal %{<Result:true [false, true, nil, 1, 2] >}
118
168
  end
119
169
 
120
- # Mixing keywords and string keys in {Operation.call}.
121
- # Test that {.(params: {}, "current_user" => user)} is processed properly
122
- class Collect < Trailblazer::Operation
123
- # step ->(ctx, **) { ctx[:keys] }
124
- end
125
-
126
- it "contains all keys from {call}" do
127
- result = Collect.(params: {}, "current_user" => Module)
128
- _(result.inspect).must_equal %{<Result:true #<Trailblazer::Context::Container wrapped_options={:params=>{}, \"current_user\"=>Module} mutable_options={}> >}
129
- end
130
-
131
170
  #---
132
171
  #- ctx container
133
172
  it do
@@ -141,9 +180,10 @@ class DeclarativeApiTest < Minitest::Spec
141
180
  signal, (ctx, _) = Update.([Update.options_for_public_call(options), {}], **{})
142
181
 
143
182
  signal.inspect.must_equal %{#<Trailblazer::Activity::Railway::End::Success semantic=:success>}
144
- ctx.inspect.must_equal %{#<Trailblazer::Context::Container wrapped_options={\"params\"=>{:decide=>true}} mutable_options={\"a\"=>false, \"b\"=>true}>}
183
+ assert_equal ctx.inspect, %(#<Trailblazer::Context::Container wrapped_options=#{{"params" => {:decide=>true}}} mutable_options=#{{"a" => false, "b" => true}}>)
145
184
 
146
185
  # Call by passing aliases as an argument.
186
+ # This uses {#call}'s second positional argument.
147
187
  if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.0.0")
148
188
  result = Update.(
149
189
  options,
data/test/result_test.rb CHANGED
@@ -19,7 +19,7 @@ class RailwayResultTest < Minitest::Spec
19
19
 
20
20
  #---
21
21
  # inspect
22
- it { success.inspect.must_equal %{<Result:true {\"x\"=>String} >} }
22
+ it { assert_equal success.inspect, %(<Result:true #{{"x" => String}} >) }
23
23
  it { Result.new(true, {"x" => true, "y" => 1, "z" => 2}, event).inspect("z", "y").must_equal %{<Result:true [2, 1] >} }
24
24
 
25
25
  class Create < Trailblazer::Operation
data/test/test_helper.rb CHANGED
@@ -1,15 +1,27 @@
1
- $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
2
- require "trailblazer/operation"
1
+ require "minitest/autorun"
3
2
 
4
3
  require "pp"
4
+ require "trailblazer/operation"
5
5
 
6
- require "minitest/autorun"
7
6
  require "trailblazer/activity/testing"
8
7
  require "trailblazer/developer/render/linear"
8
+ require "trailblazer/core"
9
9
 
10
10
  Minitest::Spec.class_eval do
11
- Activity = Trailblazer::Activity
12
- T = Activity::Testing
11
+ T = Trailblazer::Activity::Testing
12
+ include Trailblazer::Activity::Testing::Assertions
13
+ CU = Trailblazer::Core::Utils
14
+
15
+ def assert_equal(asserted, expected, *args)
16
+ super(expected, asserted, *args)
17
+ end
18
+
19
+ def assert_result(result, variables, outcome: true)
20
+ assert_equal result.success?, outcome
21
+
22
+ # assert_equal result.send(:data).sort_by { |key, _| key.to_s }.to_h.inspect, variables.sort_by { |key, _| key.to_s }.to_h.inspect
23
+ assert_equal result.send(:data).to_h, variables
24
+ end
13
25
  end
14
26
 
15
27
  # TODO: replace all this with {Activity::Testing.def_steps}
data/test/trace_test.rb CHANGED
@@ -13,38 +13,13 @@ class TraceTest < Minitest::Spec
13
13
  step ->(_options, params:, **) { params.any? }, id: "Create.task.params"
14
14
  end
15
15
 
16
- it "deprecates {result.wtf?} and {Operation.trace}" do
17
- output, warning = capture_io do
18
- result = Create.trace({a_return: true, params: {}})
19
- result.wtf?
20
- end
21
- line_no = __LINE__ - 2
22
-
23
- assert_equal warning, %([Trailblazer] #{File.realpath(__FILE__)}:#{line_no - 1} Using `Operation.trace` is deprecated and will be removed in {trailblazer-operation-0.11.0}.
24
- Please use `TraceTest::Create.wtf?` as documented here: https://trailblazer.to/2.1/docs/trailblazer#trailblazer-developer-wtf-
25
- [Trailblazer] #{File.realpath(__FILE__)}:#{line_no} Using `result.wtf?` is deprecated. Please use `TraceTest::Create.wtf?` and have a nice day.
26
- )
27
- assert_equal output, %(TraceTest::Create
28
- |-- Start.default
29
- |-- Create.task.a
30
- |-- MyNested
31
- | |-- Start.default
32
- | |-- B.task.b
33
- | |-- B.task.e
34
- | `-- End.success
35
- |-- Create.task.c
36
- |-- Create.task.params
37
- `-- End.failure
38
- )
39
- end
40
-
41
16
  it "allows using low-level Operation::Trace" do
42
- result = Trailblazer::Operation::Trace.(
17
+ stack, result = Trailblazer::Developer::Trace.(
43
18
  Create,
44
19
  { a_return: true, params: {} },
45
20
  )
46
21
 
47
- output = result.wtf
22
+ output = Trailblazer::Developer::Trace::Present.(stack)
48
23
 
49
24
  assert_equal output.gsub(/0x\w+/, "").gsub(/@.+_test/, ""), %{TraceTest::Create
50
25
  |-- Start.default
@@ -59,21 +34,6 @@ class TraceTest < Minitest::Spec
59
34
  `-- End.failure}
60
35
  end
61
36
 
62
- it "Operation::trace" do
63
- result = Create.trace(params: {x: 1}, a_return: true)
64
- assert_equal result.wtf.gsub(/0x\w+/, "").gsub(/@.+_test/, ""), %{TraceTest::Create
65
- |-- Start.default
66
- |-- Create.task.a
67
- |-- MyNested
68
- | |-- Start.default
69
- | |-- B.task.b
70
- | |-- B.task.e
71
- | `-- End.success
72
- |-- Create.task.c
73
- |-- Create.task.params
74
- `-- End.success}
75
- end
76
-
77
37
  it "Operation.wtf?" do
78
38
  result = nil
79
39
  output, = capture_io do
@@ -95,6 +55,6 @@ class TraceTest < Minitest::Spec
95
55
 
96
56
  result.success?.must_equal true
97
57
  result[:a_return].must_equal true
98
- result[:params].inspect.must_equal %{{:x=>1}}
58
+ assert_equal CU.inspect(result[:params]), %({:x=>1})
99
59
  end
100
60
  end
@@ -17,13 +17,14 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency "trailblazer-activity-dsl-linear", ">= 1.2.0", "< 1.4.0"
20
+ spec.add_dependency "trailblazer-activity-dsl-linear", ">= 1.2.3", "< 1.3.0"
21
21
  spec.add_dependency "trailblazer-developer", ">= 0.1.0", "< 0.2.0"
22
22
 
23
23
  spec.add_development_dependency "bundler"
24
24
  spec.add_development_dependency "minitest"
25
25
  spec.add_development_dependency "minitest-line"
26
26
  spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "trailblazer-core-utils"
27
28
 
28
29
  spec.required_ruby_version = ">= 2.5.0"
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-operation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-14 00:00:00.000000000 Z
11
+ date: 2025-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trailblazer-activity-dsl-linear
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2.0
19
+ version: 1.2.3
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 1.4.0
22
+ version: 1.3.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 1.2.0
29
+ version: 1.2.3
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 1.4.0
32
+ version: 1.3.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: trailblazer-developer
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +106,20 @@ dependencies:
106
106
  - - ">="
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: trailblazer-core-utils
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
109
123
  description: Trailblazer's operation object.
110
124
  email:
111
125
  - apotonick@gmail.com
@@ -125,16 +139,24 @@ files:
125
139
  - lib/trailblazer/operation/public_call.rb
126
140
  - lib/trailblazer/operation/railway.rb
127
141
  - lib/trailblazer/operation/result.rb
128
- - lib/trailblazer/operation/trace.rb
129
142
  - lib/trailblazer/operation/version.rb
143
+ - lib/trailblazer/operation/wtf.rb
130
144
  - test/benchmark/skill_resolver_benchmark.rb
131
145
  - test/call_test.rb
132
- - test/callable_test.rb
133
146
  - test/class_dependencies_test.rb
147
+ - test/docs/autogenerated/activity_basics_test.rb
148
+ - test/docs/autogenerated/composable_variable_mapping_test.rb
149
+ - test/docs/autogenerated/fast_track_layout_test.rb
150
+ - test/docs/autogenerated/mechanics_test.rb
151
+ - test/docs/autogenerated/sequence_options_test.rb
152
+ - test/docs/autogenerated/subprocess_test.rb
153
+ - test/docs/autogenerated/wiring_api_test.rb
134
154
  - test/docs/class_dependencies_test.rb
135
- - test/docs/doormat_test.rb
136
- - test/docs/macaroni_test.rb
155
+ - test/docs/developer_test.rb
137
156
  - test/docs/operation_test.rb
157
+ - test/docs/public_call_monkeypatching_test.rb
158
+ - test/docs/result_test.rb
159
+ - test/docs/step_dsl_test.rb
138
160
  - test/docs/wiring_test.rb
139
161
  - test/fast_track_test.rb
140
162
  - test/gemfiles/Gemfile.ruby-1.9
@@ -145,13 +167,9 @@ files:
145
167
  - test/introspect_test.rb
146
168
  - test/operation_test.rb
147
169
  - test/result_test.rb
148
- - test/skill_test.rb
149
170
  - test/step_test.rb
150
171
  - test/test_helper.rb
151
172
  - test/trace_test.rb
152
- - test/wire_test.rb
153
- - test/wiring/defaults_test.rb
154
- - test/wiring/subprocess_test.rb
155
173
  - trailblazer-operation.gemspec
156
174
  homepage: https://trailblazer.to/2.1/docs/operation.html
157
175
  licenses:
@@ -172,19 +190,27 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
190
  - !ruby/object:Gem::Version
173
191
  version: '0'
174
192
  requirements: []
175
- rubygems_version: 3.2.3
193
+ rubygems_version: 3.5.22
176
194
  signing_key:
177
195
  specification_version: 4
178
196
  summary: Trailblazer's operation object with railway flow and integrated error handling.
179
197
  test_files:
180
198
  - test/benchmark/skill_resolver_benchmark.rb
181
199
  - test/call_test.rb
182
- - test/callable_test.rb
183
200
  - test/class_dependencies_test.rb
201
+ - test/docs/autogenerated/activity_basics_test.rb
202
+ - test/docs/autogenerated/composable_variable_mapping_test.rb
203
+ - test/docs/autogenerated/fast_track_layout_test.rb
204
+ - test/docs/autogenerated/mechanics_test.rb
205
+ - test/docs/autogenerated/sequence_options_test.rb
206
+ - test/docs/autogenerated/subprocess_test.rb
207
+ - test/docs/autogenerated/wiring_api_test.rb
184
208
  - test/docs/class_dependencies_test.rb
185
- - test/docs/doormat_test.rb
186
- - test/docs/macaroni_test.rb
209
+ - test/docs/developer_test.rb
187
210
  - test/docs/operation_test.rb
211
+ - test/docs/public_call_monkeypatching_test.rb
212
+ - test/docs/result_test.rb
213
+ - test/docs/step_dsl_test.rb
188
214
  - test/docs/wiring_test.rb
189
215
  - test/fast_track_test.rb
190
216
  - test/gemfiles/Gemfile.ruby-1.9
@@ -195,10 +221,6 @@ test_files:
195
221
  - test/introspect_test.rb
196
222
  - test/operation_test.rb
197
223
  - test/result_test.rb
198
- - test/skill_test.rb
199
224
  - test/step_test.rb
200
225
  - test/test_helper.rb
201
226
  - test/trace_test.rb
202
- - test/wire_test.rb
203
- - test/wiring/defaults_test.rb
204
- - test/wiring/subprocess_test.rb