spec/unit/models/protocol_message_spec.rb in ably-0.8.5 vs spec/unit/models/protocol_message_spec.rb in ably-0.8.6

- old
+ new

@@ -282,9 +282,54 @@ expect(protocol_message.presence.count).to eql(1) expect(protocol_message.presence.first).to be_a(Ably::Models::PresenceMessage) expect(protocol_message.presence.first.data).to eql('test') end end + + context '#connection_details' do + let(:connection_details) { protocol_message.connection_details } + + context 'with a JSON value' do + let(:protocol_message) { new_protocol_message(connectionDetails: { clientId: '1', connectionKey: 'key' }) } + + it 'contains a ConnectionDetails object' do + expect(connection_details).to be_a(Ably::Models::ConnectionDetails) + end + + it 'contains the attributes from the JSON connectionDetails' do + expect(connection_details.client_id).to eql('1') + expect(connection_details.connection_key).to eql('key') + end + end + + context 'without a JSON value' do + let(:protocol_message) { new_protocol_message({}) } + + it 'contains an empty ConnectionDetails object' do + expect(connection_details).to be_a(Ably::Models::ConnectionDetails) + expect(connection_details.client_id).to eql(nil) + expect(connection_details.connection_key).to eql(nil) + end + end + end + + context '#connection_key' do + context 'existing only in #connection_details.connection_key' do + let(:protocol_message) { new_protocol_message(connectionDetails: { connectionKey: 'key' }) } + + it 'is returned' do + expect(protocol_message.connection_key).to eql('key') + end + end + + context 'existing in both #connection_key and #connection_details.connection_key' do + let(:protocol_message) { new_protocol_message(connectionKey: 'deprecated', connectionDetails: { connectionKey: 'key' }) } + + it 'returns #connection_details.connection_key as #connection_key will be deprecated > 0.8' do + expect(protocol_message.connection_key).to eql('key') + end + end + end end context '#to_json', :api_private do let(:json_object) { JSON.parse(model.to_json) } let(:message) { { 'name' => 'event', 'clientId' => 'joe', 'timestamp' => as_since_epoch(Time.now) } }