Module: On::TestHelper

Defined in:
lib/on/test_helper.rb

Overview

Helper for testing On callbacks.

Example

require 'minitest/autorun'
require 'on'
require 'on/test_helper'

class SomeTest < MiniTest::Spec
  include On::TestHelper

  let(:recorder) { On::TestHelper::Recorder.new }

  it "records everything" do
    on = On.new(:success, :failure, &recorder)
    on.call :success, :some, :args
    assert_callback recorder, :success, :some, :args
  end

  it "calls nothing" do
    on = On.new(:success, :failure, &recorder)
    # nothing called
    refute_callbacks recorder
  end

  it "records everything manually" do
    on = On.new(:success, :failure) do |result|
      recorder.record_block
      recorder.record_callback(result, :success, :failure)
    end
    on.call :success, :some, :args
    assert_callback recorder, :success, :some, :args
  end
end

Defined Under Namespace

Classes: Recorder

Instance Method Summary collapse

Instance Method Details

#assert_callback(recorder, name, *args) ⇒ Object

Asserts that a certain callbacks has been recorded by recorder.

Example

assert_callback recorder, :success, "some", "args"


43
44
45
46
47
48
# File 'lib/on/test_helper.rb', line 43

def assert_callback(recorder, name, *args)
  callback = recorder.last_record
  assert callback, "No callbacks found"
  assert_equal name, callback.name, "Callback was #{callback}"
  assert_equal args, callback.args, "Callback was #{callback}"
end

#refute_callbacks(recorder) ⇒ Object

Asserts that no callbacks has been recorder by recorder.



51
52
53
# File 'lib/on/test_helper.rb', line 51

def refute_callbacks(recorder)
  assert recorder.empty?, "Something has been recorded #{recorder.inspect}"
end