Sha256: 20b8cc02cf315364242561af825628c5562d28f8fd4a41e8fb26e42c1b807ec0

Contents?: true

Size: 1.44 KB

Versions: 2

Compression:

Stored size: 1.44 KB

Contents

require 'helper'

class ContextTest < NeoDCICase
  class TestContext < Neo::DCI::Context
    def initialize(*args)
      @args = args
    end
  end

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

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

  test "yields callback" do
    context = Class.new(TestContext) do
      callbacks :success

      def call
        callback.call :success, @args
      end
    end

    block_called = false
    result = nil

    context.call(:foo, :bar) do |callback|
      block_called = true
      callback.on :success do |args|
        result = args
      end
    end

    assert_equal true, block_called
    assert_equal [ :foo, :bar ], result
  end

  test "ensure callback called" do
    context = Class.new(TestContext) do
      callbacks :success

      def call
      end
    end

    e = assert_raises Neo::DCI::Context::NoCallbackCalled do
      context.call do |callback|
      end
    end
    assert_equal "No callback called. Available callbacks: success", e.message
  end

  test "do not overwrite callbacks in subclasses" do
    context1 = Class.new(TestContext) { callbacks :foo }
    context2 = Class.new(TestContext) { callbacks :bar }

    assert_equal [ :foo ], context1.callbacks
    assert_equal [ :bar ], context2.callbacks
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
neo-dci-0.4.0 test/context_test.rb
neo-dci-0.3.0 test/context_test.rb