Sha256: bd3026afe077c8a4971dfaeae3f3e03c51db71a206b5d4ff0fff7379680dfb67

Contents?: true

Size: 1.43 KB

Versions: 12

Compression:

Stored size: 1.43 KB

Contents

shared_examples 'a notification' do
    let(:notification) { described_class.new(payload_options) }

    subject(:bytes) { notification.to_bytes }

    it 'sets the command byte to 1' do
      expect(bytes[0]).to eq("\x01")
    end

    it 'defaults the identifer to 0' do
      expect(bytes[1...5]).to eq("\x00\x00\x00\x00")
    end

    it 'allows the identifier to be set' do
      notification.identifier = 1234
      expect(bytes[1...5]).to eq([1234].pack('N'))
    end

    it 'defaults expiry to zero' do
      expect(bytes[5...9]).to eq("\x00\x00\x00\x00")
    end

    it 'allows the expiry to be set' do
      expiry = notification.expiry = Time.utc(2013, 3, 24, 12, 34, 56)
      expect(bytes[5...9]).to eq([expiry.to_i].pack('N'))
    end

    it 'encodes the device token length as 32' do
      expect(bytes[9...11]).to eq("\x00\x20")
    end

    it 'encodes the device token as a 256-bit integer' do
      token = notification.device_token = 'fe15a27d5df3c34778defb1f4f3880265cc52c0c047682223be59fb68500a9a2'
      expect(bytes[11...43]).to eq(['fe15a27d5df3c34778defb1f4f3880265cc52c0c047682223be59fb68500a9a2'].pack('H*'))
    end

    it 'as a convenience, flattens the device token to remove spaces' do
      token = notification.device_token = 'fe15 a27d 5df3c3 4778defb1f4f3880265cc52c0c047682223be59fb68500a9a2'
      expect(bytes[11...43]).to eq(['fe15a27d5df3c34778defb1f4f3880265cc52c0c047682223be59fb68500a9a2'].pack('H*'))
    end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
grocer-0.7.1 spec/grocer/shared_examples_for_notifications.rb
grocer-0.7.0 spec/grocer/shared_examples_for_notifications.rb
grocer-0.6.1 spec/grocer/shared_examples_for_notifications.rb
grocer-0.6.0 spec/grocer/shared_examples_for_notifications.rb
grocer-0.5.0 spec/grocer/shared_examples_for_notifications.rb
grocer-0.4.1 spec/grocer/shared_examples_for_notifications.rb
grocer-0.4.0 spec/grocer/shared_examples_for_notifications.rb
grocer-0.3.4 spec/grocer/shared_examples_for_notifications.rb
grocer-0.3.3 spec/grocer/shared_examples_for_notifications.rb
grocer-0.3.2 spec/grocer/shared_examples_for_notifications.rb
grocer-0.3.1 spec/grocer/shared_examples_for_notifications.rb
grocer-0.3.0 spec/grocer/shared_examples_for_notifications.rb