spec/models/concerns/eventable_spec.rb in reactor-0.1.0 vs spec/models/concerns/eventable_spec.rb in reactor-0.1.1

- old
+ new

@@ -1,20 +1,47 @@ require 'spec_helper' class Auction < ActiveRecord::Base - def ring_timeout(was: false) - created_at + (was ? 10.seconds : 30.seconds) + def ring_timeout + created_at + 30.seconds end + def ring_timeout_was + created_at + 10.seconds + end + + publishes :bell publishes :ring, at: :ring_timeout, watch: :name end +class TestSubscriber < Reactor::Subscriber + + on_fire do + @@called = true + end +end + describe Reactor::Eventable do describe 'publish' do - let(:auction) { Auction.create } + let(:auction) { Auction.create! } it 'publishes an event with actor_id and actor_type set as self' do - Reactor::Event.should_receive(:publish).with(:an_event, {what: 'the', actor: auction}).twice + auction + Reactor::Event.should_receive(:publish) do |name, data| + name.should == :an_event + data[:what].should == 'the' + data[:actor].should == auction + end auction.publish(:an_event, {what: 'the'}) + end + + it 'supports immediate events (on create) that get fired once' do + TestSubscriber.create! event: :bell + auction + TestSubscriber.class_variable_get(:@@called).should be_true + TestSubscriber.class_variable_set(:@@called, false) + auction.start_at = 1.day.from_now + auction.save + TestSubscriber.class_variable_get(:@@called).should be_false end end end \ No newline at end of file