Sha256: 33530301db8bb70a0049e7111baad76d051a715897984522aa8417b0a6fe3171

Contents?: true

Size: 1.55 KB

Versions: 5

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

RSpec.shared_examples 'an event which synchronously dispatches' do |*dispatcher_klasses|
  specify do
    reactors = Eventsimple::EventDispatcher.rules.for(described_class.new)

    # Order is important here since the synchronous reactors are executed sequentially
    expect(reactors.sync & dispatcher_klasses).to eq(dispatcher_klasses)
  end
end

RSpec.shared_examples 'an event which asynchronously dispatches' do |*dispatcher_klasses|
  specify do
    reactors = Eventsimple::EventDispatcher.rules.for(described_class.new)

    # Order is _not_ important here since async reactors have no order guarantee
    expect(reactors.async).to include(*dispatcher_klasses)
  end
end

RSpec.shared_examples 'an event in invalid state' do
  it 'raises an InvalidTransition error' do
    expect { event.save }.to raise_error(Eventsimple::InvalidTransition).and not_change(
      event.class, :count
    )
  end
end

RSpec.shared_examples 'an event in invalid state that is rescued' do
  context 'when save' do
    it 'does not InvalidTransition error on save' do
      expect { event.save }.not_to raise_error
    end

    it 'does not write event on save' do
      expect { event.save }.not_to change(event.class, :count)
    end
  end

  context 'when save!' do
    it 'does not InvalidTransition error on save!' do
      expect { event.save! }.not_to raise_error
    end

    it 'does not write event on save!' do
      expect { event.save! }.not_to change(event.class, :count)
    end
  end
end

RSpec::Matchers.define_negated_matcher(:not_change, :change)

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
eventsimple-1.5.6 lib/eventsimple/support/spec_helpers.rb
eventsimple-1.5.5 lib/eventsimple/support/spec_helpers.rb
eventsimple-1.5.4 lib/eventsimple/support/spec_helpers.rb
eventsimple-1.5.3 lib/eventsimple/support/spec_helpers.rb
eventsimple-1.4.3 lib/eventsimple/support/spec_helpers.rb