spec/acceptance/rest/channels_spec.rb in ably-0.6.2 vs spec/acceptance/rest/channels_spec.rb in ably-0.7.0

- old
+ new

@@ -1,43 +1,41 @@ +# encoding: utf-8 require 'spec_helper' -require 'securerandom' describe Ably::Rest::Channels do - [:msgpack, :json].each do |protocol| - context "over #{protocol}" do - let(:client) do - Ably::Rest::Client.new(api_key: api_key, environment: environment, protocol: protocol) - end - let(:channel_name) { SecureRandom.hex } - let(:options) { { key: 'value' } } + shared_examples 'a channel' do + it 'returns a channel object' do + expect(channel).to be_a Ably::Rest::Channel + expect(channel.name).to eql(channel_name) + end - shared_examples 'a channel' do - it 'should access a channel' do - expect(channel).to be_a Ably::Rest::Channel - expect(channel.name).to eql(channel_name) - end + it 'returns channel object and passes the provided options' do + expect(channel_with_options.options).to eql(options) + end + end - it 'should allow options to be set on a channel' do - expect(channel_with_options.options).to eql(options) - end - end + vary_by_protocol do + let(:client) do + Ably::Rest::Client.new(api_key: api_key, environment: environment, protocol: protocol) + end + let(:channel_name) { random_str } + let(:options) { { key: 'value' } } - describe 'using shortcut method on client' do - let(:channel) { client.channel(channel_name) } - let(:channel_with_options) { client.channel(channel_name, options) } - it_behaves_like 'a channel' - end + describe 'using shortcut method #channel on the client object' do + let(:channel) { client.channel(channel_name) } + let(:channel_with_options) { client.channel(channel_name, options) } + it_behaves_like 'a channel' + end - describe 'using documented .get method on client.channels' do - let(:channel) { client.channels.get(channel_name) } - let(:channel_with_options) { client.channels.get(channel_name, options) } - it_behaves_like 'a channel' - end + describe 'using #get method on client#channels' do + let(:channel) { client.channels.get(channel_name) } + let(:channel_with_options) { client.channels.get(channel_name, options) } + it_behaves_like 'a channel' + end - describe 'using undocumented [] method on client.channels' do - let(:channel) { client.channels[channel_name] } - let(:channel_with_options) { client.channels[channel_name, options] } - it_behaves_like 'a channel' - end + describe 'using undocumented array accessor [] method on client#channels' do + let(:channel) { client.channels[channel_name] } + let(:channel_with_options) { client.channels[channel_name, options] } + it_behaves_like 'a channel' end end end