Sha256: 01a0e9c7b732d28131afd4ec9edab70ba0d48f74678be2ace14b8b53e518f0e3

Contents?: true

Size: 1.53 KB

Versions: 11

Compression:

Stored size: 1.53 KB

Contents

require "test_helper"

class DeclarativeApiTest < Minitest::Spec
  #---
  #- step, pass, fail

  # Test: step/pass/fail
  # * do they deviate properly?
  class Create < Trailblazer::Operation
    step :decide!
    success :wasnt_ok!
    success :was_ok!
    failure :return_true!
    failure :return_false!

    def decide!(options, decide: raise, **_o)
      options["a"] = true
      decide
    end

    def wasnt_ok!(options, **_o)
      options["y"] = false
    end

    def was_ok!(options, **_o)
      options["x"] = true
    end

    def return_true!(options, **_o); options["b"] = true end

    def return_false!(options, **_o); options["c"] = false end
  end

  it { Create.({}, decide: true).inspect("a", "x", "y", "b", "c").must_equal %{<Result:true [true, true, false, nil, nil] >} }
  it { Create.({}, decide: false).inspect("a", "x", "y", "b", "c").must_equal %{<Result:false [true, nil, nil, true, false] >} }

  #---
  #- trace

  it do
  end

  #---
  #- empty class
  class Noop < Trailblazer::Operation
  end

  it { Noop.().inspect("params").must_equal %{<Result:true [{}] >} }

  #---
  #- pass
  #- fail
  class Update < Trailblazer::Operation
    pass ->(options, **_o) { options["a"] = false }
    step ->(options, params: raise, **_o) { options["b"] = params[:decide] }
    fail ->(options, **_o) { options["c"] = true }
  end

  it { Update.(decide: true).inspect("a", "b", "c").must_equal %{<Result:true [false, true, nil] >} }
  it { Update.(decide: false).inspect("a", "b", "c").must_equal %{<Result:false [false, false, true] >} }
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
trailblazer-operation-0.6.6 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.6.5 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.6.4 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.6.3 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.6.2 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.6.1 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.6.0 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.5.3 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.5.2 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.5.1 test/ruby-2.0.0/operation_test.rb
trailblazer-operation-0.5.0 test/ruby-2.0.0/operation_test.rb