Sha256: c4806c35a95d6100c3ccb008b73d489bd322d684d608bc9281faa468abce10f4

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

require 'helper'

class ContextTest < NeoDCICase
  class DummyContext < Neo::DCI::Context
    def initialize(&block)
      @block = block
    end

    def call(result)
      @block.call(result)
    end
  end

  let(:data)  { {:foo => :bar }  }
  let(:error) { RuntimeError.new }

  test "initialize is private" do
    assert_raises NoMethodError do
      DummyContext.new
    end
  end

  test "raises not implement error" do
    assert_raises NotImplementedError do
      Class.new(Neo::DCI::Context).call
    end
  end

  test "raises unprocessed error if result is not processed" do
    assert_raises Neo::DCI::Context::UnprocessedError do
      Class.new(Neo::DCI::Context) do
        def call(result); end
      end.call
    end
  end

  test "returns context result if success" do
    result = DummyContext.call do |result|
      result.success!(data)
    end
    assert result.success?
    refute result.failure?
    assert_equal :bar, result.data.foo
  end

  test "returns context result if failure" do
    result = DummyContext.call do |result|
      result.failure!(error, data)
    end
    assert result.failure?
    refute result.success?
    assert_same  error, result.error
    assert_equal :bar, result.data.foo
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
neo-dci-0.2.0 test/context_test.rb
neo-dci-0.1.0 test/context_test.rb
neo-dci-0.0.1 test/context_test.rb