spec/units/message_driver/adapters/base_spec.rb in message-driver-0.6.1 vs spec/units/message_driver/adapters/base_spec.rb in message-driver-0.7.0

- old
+ new

@@ -1,57 +1,63 @@ require 'spec_helper' module MessageDriver module Adapters RSpec.describe Base do - class TestAdapter < Base - def initialize(_configuration) + let(:spec_adapter_class) do + Class.new(described_class) do + def initialize; end end end - subject(:adapter) { TestAdapter.new({}) } + subject(:adapter) { spec_adapter_class.new } describe '#new_context' do it 'raises an error' do expect do subject.new_context end.to raise_error 'Must be implemented in subclass' end end - describe ContextBase do - class TestContext < ContextBase - end - subject(:adapter_context) { TestContext.new(adapter) } + context 'with a test adapter' do + subject(:adapter) { TestAdapter.new(nil, {}) } - 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 ContextBase do + context 'with a test context subclass' do + subject(:adapter_context) { TestContext.new(adapter) } - describe '#create_destination' do - it 'raises an error' do - expect do - subject.create_destination('foo') - end.to raise_error 'Must be implemented in subclass' + 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' end - end - describe '#publish' do - it 'raises an error' do - expect do - subject.publish(:destination, foo: 'bar') - end.to raise_error 'Must be implemented in subclass' + subject(:adapter_context) { ContextBase.new(adapter) } + + describe '#create_destination' do + it 'raises an error' do + expect do + subject.create_destination('foo') + end.to raise_error 'Must be implemented in subclass' + end end - end - describe '#pop_message' do - it 'raises an error' do - expect do - subject.pop_message(:destination) - end.to raise_error 'Must be implemented in subclass' + describe '#publish' do + it 'raises an error' do + expect do + subject.publish(:destination, foo: 'bar') + end.to raise_error 'Must be implemented in subclass' + end end - end + describe '#pop_message' do + it 'raises an error' do + expect do + subject.pop_message(:destination) + end.to raise_error 'Must be implemented in subclass' + end + end + end end end end end