Sha256: af05924b5a99f20f42768f3580086f34879ee21ff5db71a74e7e32bbe244a0f6

Contents?: true

Size: 1.65 KB

Versions: 3

Compression:

Stored size: 1.65 KB

Contents

require "test_helper"

class TraceTest < Minitest::Spec
  class B < Trailblazer::Operation
    step ->(options, **) { options[:b] = true }, id: "B.task.b"
    step ->(options, **) { options[:e] = true }, id: "B.task.e"
  end

  class Create < Trailblazer::Operation
    step ->(options, a_return:, **) { options[:a] = a_return }, id: "Create.task.a"
    step( {task: B, id: "MyNested"}, B.outputs[:success] => Track(:success) )
    step ->(options, **) { options[:c] = true }, id: "Create.task.c"
    step ->(options, params:, **) { params.any? }, id: "Create.task.params"
  end
  # raise Create["__task_wraps__"].inspect

  it "allows using low-level Activity::Trace" do
    operation = ->(*args) { puts "@@@@@ #{args.last.inspect}"; Create.__call__(*args) }

    stack, _ = Trailblazer::Activity::Trace.(
      Create,
      [
        { a_return: true, params: {} },
        {}
      ]
    )

    puts output = Trailblazer::Activity::Trace::Present.tree(stack)

    output.gsub(/0x\w+/, "").gsub(/@.+_test/, "").must_equal %{`-- TraceTest::Create
    |-- Start.default
    |-- Create.task.a
    |-- MyNested
    |   |-- Start.default
    |   |-- B.task.b
    |   |-- B.task.e
    |   `-- End.success
    |-- Create.task.c
    |-- Create.task.params
    `-- End.failure}
  end

  it "Operation::trace" do
    result = Create.trace({ params: { x: 1 }, a_return: true })
    result.wtf.gsub(/0x\w+/, "").gsub(/@.+_test/, "").must_equal %{`-- TraceTest::Create
    |-- Start.default
    |-- Create.task.a
    |-- MyNested
    |   |-- Start.default
    |   |-- B.task.b
    |   |-- B.task.e
    |   `-- End.success
    |-- Create.task.c
    |-- Create.task.params
    `-- End.success}
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
trailblazer-operation-0.4.0 test/trace_test.rb
trailblazer-operation-0.3.1 test/trace_test.rb
trailblazer-operation-0.3.0 test/trace_test.rb