spec/unit/models/protocol_message_spec.rb in ably-0.6.2 vs spec/unit/models/protocol_message_spec.rb in ably-0.7.0
- old
+ new
@@ -1,7 +1,8 @@
+# encoding: utf-8
require 'spec_helper'
-require 'support/model_helper'
+require 'shared/model_behaviour'
describe Ably::Models::ProtocolMessage do
include Ably::Modules::Conversions
subject { Ably::Models::ProtocolMessage }
@@ -14,11 +15,11 @@
base_model_options: { action: 1 } do
let(:model_args) { [] }
end
- context 'initializer action coercion' do
+ context 'initializer action coercion', :api_private do
it 'ignores actions that are Integers' do
protocol_message = subject.new(action: 14)
expect(protocol_message.hash[:action]).to eql(14)
end
@@ -36,21 +37,21 @@
expect { subject.new({}) }.to raise_error(ArgumentError)
end
end
context 'attributes' do
- let(:unique_value) { SecureRandom.hex }
+ let(:unique_value) { random_str }
- context 'Java naming' do
+ context 'Java naming', :api_private do
let(:protocol_message) { new_protocol_message(channelSerial: unique_value) }
it 'converts the attribute to ruby symbol naming convention' do
expect(protocol_message.channel_serial).to eql(unique_value)
end
end
- context '#action' do
+ context '#action', :api_private do
let(:protocol_message) { new_protocol_message(action: 14) }
it 'returns an Enum that behaves like a symbol' do
expect(protocol_message.action).to eq(:presence)
end
@@ -68,11 +69,11 @@
end
end
context '#timestamp' do
let(:protocol_message) { new_protocol_message(timestamp: as_since_epoch(Time.now)) }
- it 'retrieves attribute :timestamp' do
+ it 'retrieves attribute :timestamp as Time object' do
expect(protocol_message.timestamp).to be_a(Time)
expect(protocol_message.timestamp.to_i).to be_within(1).of(Time.now.to_i)
end
end
@@ -131,10 +132,44 @@
expect(protocol_message.connection_serial).to be_a(Integer)
expect(protocol_message.connection_serial).to eql(55)
end
end
+ context '#flags' do
+ context 'when nil' do
+ let(:protocol_message) { new_protocol_message({}) }
+
+ it 'is zero' do
+ expect(protocol_message.flags).to eql(0)
+ end
+ end
+
+ context 'when numeric' do
+ let(:protocol_message) { new_protocol_message(flags: '25') }
+
+ it 'is an Integer' do
+ expect(protocol_message.flags).to eql(25)
+ end
+ end
+
+ context 'when has_presence' do
+ let(:protocol_message) { new_protocol_message(flags: 1) }
+
+ it '#has_presence_flag? is true' do
+ expect(protocol_message.has_presence_flag?).to be_truthy
+ end
+ end
+
+ context 'when has another future flag' do
+ let(:protocol_message) { new_protocol_message(flags: 2) }
+
+ it '#has_presence_flag? is false' do
+ expect(protocol_message.has_presence_flag?).to be_falsey
+ end
+ end
+ end
+
context '#has_connection_serial?' do
context 'without connection_serial' do
let(:protocol_message) { new_protocol_message({}) }
it 'returns false' do
@@ -229,11 +264,11 @@
end
end
end
end
- context '#to_json' do
+ 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) } }
let(:attached_action) { Ably::Models::ProtocolMessage::ACTION.Attached }
let(:message_action) { Ably::Models::ProtocolMessage::ACTION.Message }
@@ -264,10 +299,10 @@
expect(json_object).to eql(JSON.parse("#{model}"))
end
end
end
- context '#to_msgpack' do
+ context '#to_msgpack', :api_private do
let(:model) { new_protocol_message({ :connectionSerial => 'unique', messages: [message] }) }
let(:message) { { 'name' => 'event', 'clientId' => 'joe', 'timestamp' => as_since_epoch(Time.now) } }
let(:packed) { model.to_msgpack }
let(:unpacked) { MessagePack.unpack(packed) }