spec/integration/stomp/stomp_adapter_spec.rb in message-driver-0.4.0 vs spec/integration/stomp/stomp_adapter_spec.rb in message-driver-0.5.0
- old
+ new
@@ -1,136 +1,169 @@
require 'spec_helper'
require 'message_driver/adapters/stomp_adapter'
-module MessageDriver::Adapters
- describe StompAdapter, :stomp, type: :integration do
+module MessageDriver
+ module Adapters
+ RSpec.describe StompAdapter, :stomp, type: :integration do
- let(:valid_connection_attrs) { BrokerConfig.config }
+ let(:valid_connection_attrs) { BrokerConfig.config }
- describe '#initialize' do
- let(:connection_attrs) { valid_connection_attrs }
- let(:broker) { double('broker') }
+ describe '#initialize' do
+ let(:connection_attrs) { valid_connection_attrs }
+ let(:broker) { double('broker') }
- context 'differing stomp versions' do
- shared_examples 'raises a stomp error' do
- it 'raises an error' do
- stub_const('Stomp::Version::STRING', version)
- expect {
- described_class.new(broker, connection_attrs)
- }.to raise_error MessageDriver::Error, 'stomp 1.3.1 or a later version of the 1.3.x series is required for the stomp adapter'
+ context 'differing stomp versions' do
+ shared_examples 'raises a stomp error' do
+ it 'raises an error' do
+ stub_const('Stomp::Version::STRING', version)
+ expect do
+ described_class.new(broker, connection_attrs)
+ end.to raise_error MessageDriver::Error, 'stomp 1.3.1 or a later version of the 1.3.x series is required for the stomp adapter'
+ end
end
- end
- shared_examples "doesn't raise a stomp error" do
- it "doesn't raise an an error" do
- stub_const('Stomp::Version::STRING', version)
- adapter = nil
- expect {
- adapter = described_class.new(broker, connection_attrs)
- }.to_not raise_error
+ shared_examples "doesn't raise a stomp error" do
+ it "doesn't raise an an error" do
+ stub_const('Stomp::Version::STRING', version)
+ adapter = nil
+ expect do
+ adapter = described_class.new(broker, connection_attrs)
+ end.to_not raise_error
+ end
end
- end
- %w(1.1.0 1.2.9 1.3.0 1.4.0).each do |v|
- context "stomp version #{v}" do
- let(:version) { v }
- include_examples 'raises a stomp error'
+ %w(1.1.0 1.2.9 1.3.0 1.4.0).each do |v|
+ context "stomp version #{v}" do
+ let(:version) { v }
+ include_examples 'raises a stomp error'
+ end
end
- end
- %w(1.3.1 1.3.5).each do |v|
- context "stomp version #{v}" do
- let(:version) { v }
- include_examples "doesn't raise a stomp error"
+ %w(1.3.1 1.3.5).each do |v|
+ context "stomp version #{v}" do
+ let(:version) { v }
+ include_examples "doesn't raise a stomp error"
+ end
end
end
- end
- describe 'the resulting config' do
- let(:connection_attrs) { {hosts: [{host: 'my_host'}]} }
- subject(:config) { described_class.new(broker, connection_attrs).config }
+ describe 'the resulting config' do
+ let(:connection_attrs) { { hosts: [{ host: 'my_host' }] } }
+ subject(:config) { described_class.new(broker, connection_attrs).config }
- its([:connect_headers]) { should eq(:"accept-version" => '1.1,1.2') }
- its([:hosts]) { should eq(connection_attrs[:hosts]) }
+ it 'has the expected values' do
+ is_expected.to eq(
+ connect_headers: { :"accept-version" => '1.1,1.2' },
+ hosts: connection_attrs[:hosts]
+ )
+ end
- context 'when vhost is specified' do
- let(:connection_attrs) { {hosts: [{host: 'my_host'}], vhost: 'my_vhost'} }
+ context 'when vhost is specified' do
+ let(:connection_attrs) { { hosts: [{ host: 'my_host' }], vhost: 'my_vhost' } }
- it { should_not have_key(:vhost) }
- its([:connect_headers]) { should eq(:"accept-version" => '1.1,1.2', :"host" => 'my_vhost') }
- end
+ it 'has the vhost value in the connect headers' do
+ is_expected.not_to have_key(:vhost)
+ is_expected.to include(connect_headers: { :'accept-version' => '1.1,1.2', host: 'my_vhost' })
+ end
+ end
- context 'when there are things in the connect_headers' do
- let(:connection_attrs) { {hosts: [{host: 'my_host'}], connect_headers: {'foo' => 'bar'}} }
+ context 'when there are things in the connect_headers' do
+ let(:connection_attrs) { { hosts: [{ host: 'my_host' }], connect_headers: { 'foo' => 'bar' } } }
- its([:connect_headers]) { should eq(:"accept-version" => '1.1,1.2', 'foo' => 'bar') }
+ it 'passes them through' do
+ is_expected.to include(connect_headers: { :'accept-version' => '1.1,1.2', 'foo' => 'bar' })
+ end
- context 'and accept-version is one of the parameters' do
- let(:connection_attrs) { {hosts: [{host: 'my_host'}], connect_headers: {'foo' => 'bar', :"accept-version" => 'foo!'}} }
+ context 'and accept-version is one of the parameters' do
+ let(:connection_attrs) { { hosts: [{ host: 'my_host' }], connect_headers: { 'foo' => 'bar', :"accept-version" => 'foo!' } } }
- its([:connect_headers]) { should eq(:"accept-version" => '1.1,1.2', 'foo' => 'bar') }
+ it 'overrides it' do
+ is_expected.to include(connect_headers: { :'accept-version' => '1.1,1.2', 'foo' => 'bar' })
+ end
+ end
end
end
end
- end
- shared_context 'a connected stomp adapter' do
- let(:broker) { MessageDriver::Broker.configure(valid_connection_attrs) }
- subject(:adapter) { broker.adapter }
+ shared_context 'a connected stomp adapter' do
+ let(:broker) { MessageDriver::Broker.configure(valid_connection_attrs) }
+ subject(:adapter) { broker.adapter }
- after do
- adapter.stop
+ after do
+ adapter.stop
+ end
end
- end
- it_behaves_like 'an adapter' do
- include_context 'a connected stomp adapter'
- end
+ it_behaves_like 'an adapter' do
+ include_context 'a connected stomp adapter'
+ end
- describe '#new_context' do
- include_context 'a connected stomp adapter'
+ describe '#new_context' do
+ include_context 'a connected stomp adapter'
- it 'returns a StompAdapter::StompContext' do
- expect(adapter.new_context).to be_a StompAdapter::StompContext
+ it 'returns a StompAdapter::StompContext' do
+ expect(adapter.new_context).to be_a StompAdapter::StompContext
+ end
end
- end
- describe StompAdapter::StompContext do
- include_context 'a connected stomp adapter'
- subject(:adapter_context) { adapter.new_context }
+ describe StompAdapter::StompContext do
+ include_context 'a connected stomp adapter'
+ subject(:adapter_context) { adapter.new_context }
- it_behaves_like 'an adapter context'
- it_behaves_like 'transactions are not supported'
- it_behaves_like 'client acks are not supported'
- it_behaves_like 'subscriptions are not supported'
+ it_behaves_like 'an adapter context'
+ it_behaves_like 'transactions are not supported'
+ it_behaves_like 'client acks are not supported'
+ it_behaves_like 'subscriptions are not supported'
- describe '#create_destination' do
+ describe '#create_destination' do
- context 'the resulting destination' do
- let(:dest_name) { '/queue/stomp_destination_spec' }
- subject(:destination) { adapter_context.create_destination(dest_name) }
+ context 'the resulting destination' do
+ let(:dest_name) { '/queue/stomp_destination_spec' }
+ subject(:destination) { adapter_context.create_destination(dest_name) }
- it { should be_a StompAdapter::Destination }
+ it { is_expected.to be_a StompAdapter::Destination }
- it_behaves_like 'a destination'
- include_examples "doesn't support #message_count"
+ it_behaves_like 'a destination'
+ include_examples "doesn't support #message_count"
+ include_examples "doesn't support #consumer_count"
- describe 'pop_message' do
- context 'when there is a message on the queue' do
- let(:body) { 'Testing stomp pop_message' }
- before do
- destination.publish(body)
+ describe '#queue_path' do
+ it 'equals name' do
+ expect(subject.queue_path).to eq(subject.name)
end
- it 'returns the message' do
- msg = destination.pop_message
- expect(msg).to be_a MessageDriver::Adapters::StompAdapter::Message
- expect(msg.body).to eq(body)
+ context "when name does not start with '/'" do
+ let(:dest_name) { 'stomp_destination_spec' }
+ it 'prepends /queue' do
+ expect(subject.queue_path).to eq("/queue/#{dest_name}")
+ end
end
+
+ context "when the name does start with a '/'" do
+ let(:dest_name) { '/stomp_destination_spec' }
+ it 'equals the name' do
+ expect(subject.queue_path).to eq(dest_name)
+ end
+ end
end
- context 'when the queue is empty' do
- it 'returns nil' do
- msg = destination.pop_message
- expect(msg).to be_nil
+ describe 'pop_message' do
+ context 'when there is a message on the queue' do
+ let(:body) { 'Testing stomp pop_message' }
+ before do
+ destination.publish(body)
+ end
+
+ it 'returns the message' do
+ msg = destination.pop_message
+ expect(msg).to be_a MessageDriver::Adapters::StompAdapter::Message
+ expect(msg.body).to eq(body)
+ end
+ end
+
+ context 'when the queue is empty' do
+ it 'returns nil' do
+ msg = destination.pop_message
+ expect(msg).to be_nil
+ end
end
end
end
end
end