Sha256: 06923dbda4d74fbb95f01f1c3a56fdf1c97319c61f27858ccdde3b19ef2031ad

Contents?: true

Size: 1.28 KB

Versions: 15

Compression:

Stored size: 1.28 KB

Contents

require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')

class FooObserver; def handle_foo!(event) nil; end; end
class BarObserver; def handle_event!(event) nil; end; end

class EventTest < ActiveSupport::TestCase
  def setup
    super
    @old_observers = Event.observers.clone
    Event.observers.clear
    Event.observers << @foo_observer = FooObserver.new
    Event.observers << @bar_observer = BarObserver.new
    @event = Event.new(:foo, nil, nil)
    stub(Event).new(:foo, :object, :source, {}).returns(@event)
  end

  def teardown
    super
    Event.observers = @old_observers
  end

  test '#add_observer takes observers' do
    lambda { Event.observers << mock('observer') }.should_not raise_error
  end

  test "#trigger instantiates a new Event" do
    mock(Event).new(:foo, :object, :source, {}).returns(@event)
    Event.trigger(:foo, :object, :source)
  end

  test "#trigger calls the handle_[event_type]! callback on each observer that implements it" do
    mock(@foo_observer).handle_foo!(@event)
    Event.trigger(:foo, :object, :source)
  end

  test "#trigger calls the handle_event! callback on each observer that implements but does not implement handle_[event_type]!" do
    mock(@bar_observer).handle_event!(@event)
    Event.trigger(:foo, :object, :source)
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
adva-0.3.2 test/unit/models/event_test.rb
adva-0.3.1 test/unit/models/event_test.rb
adva-0.3.0 test/unit/models/event_test.rb
adva-0.2.4 test/unit/models/event_test.rb
adva-0.2.3 test/unit/models/event_test.rb
adva-0.2.2 test/unit/models/event_test.rb
adva-0.2.1 test/unit/models/event_test.rb
adva-0.2.0 test/unit/models/event_test.rb
adva-0.1.4 test/unit/models/event_test.rb
adva-0.1.3 test/unit/models/event_test.rb
adva-0.1.2 test/unit/models/event_test.rb
adva-0.1.1 test/unit/models/event_test.rb
adva-0.1.0 test/unit/models/event_test.rb
adva_cms-0.0.1 test/unit/models/event_test.rb
adva-0.0.1 adva_cms/test/unit/models/event_test.rb