Sha256: 358ef98351adc70c4ebe15b4b5f69fb81f5adbd2ca8b70402412a9f5b9a2e0bd

Contents?: true

Size: 1.57 KB

Versions: 17

Compression:

Stored size: 1.57 KB

Contents

require "spec_helper"

describe Shamu::Events::EventsService do
  let( :klass ) do
    Class.new( Shamu::Events::EventsService ) do
      public :serialize, :deserialize
    end
  end
  let( :service ) { scorpion.new klass }
  let( :message ) { Shamu::Events::Message.new }

  it "uses in-memory for default implementation" do
    expect( scorpion.fetch( Shamu::Events::EventsService ) ).to be_a Shamu::Events::InMemory::Service
  end

  it "gets the same service for each default scorpion resolution" do
    service = scorpion.fetch( Shamu::Events::EventsService )
    expect( scorpion.fetch( Shamu::Events::EventsService ) ).to be service
  end

  describe "#serialize" do
    it "generates a string" do
      expect( service.serialize( message ) ).to be_a String
    end
  end

  describe "#deserialize" do
    it "creates a Message from a string" do
      data         = service.serialize( message )
      deserialized = service.deserialize( data )

      expect( deserialized ).to be_a message.class
      expect( deserialized.id ).to eq message.id
    end
  end

  describe ".bridge" do
    let( :message ) { Shamu::Events::Message.new }

    let( :source_service ) { scorpion.fetch Shamu::Events::InMemory::Service }
    let( :target_service ) { double Shamu::Events::EventsService }

    before( :each ) do
      Shamu::Events::EventsService.bridge \
        source_service,
        target_service,
        "spec"
    end

    it "forwards messages" do
      expect( target_service ).to receive( :publish )

      source_service.publish "spec", message
      source_service.dispatch
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
shamu-0.0.24 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.21 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.20 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.19 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.18 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.17 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.15 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.14 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.13 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.11 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.9 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.8 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.7 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.5 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.4 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.3 spec/lib/shamu/events/events_service_spec.rb
shamu-0.0.2 spec/lib/shamu/events/events_service_spec.rb