mercurius 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +17 -0
- data/lib/mercurius/apns.rb +1 -4
- data/lib/mercurius/apns/service.rb +4 -4
- data/lib/mercurius/gcm.rb +0 -1
- data/lib/mercurius/gcm/service.rb +4 -4
- data/lib/mercurius/testing.rb +7 -6
- data/lib/mercurius/testing/apns/successful_connection.rb +28 -0
- data/lib/mercurius/testing/fake_response.rb +14 -0
- data/lib/mercurius/testing/gcm/canonical_id_connection.rb +30 -0
- data/lib/mercurius/testing/gcm/successful_connection.rb +19 -0
- data/lib/mercurius/testing/gcm/token_serializer.rb +25 -0
- data/lib/mercurius/testing/gcm/unregistered_device_token_connection.rb +25 -0
- data/lib/mercurius/version.rb +1 -1
- data/spec/lib/testing_spec.rb +42 -29
- data/spec/spec_helper.rb +2 -1
- data/spec/support/fake_socket.rb +1 -2
- metadata +8 -7
- data/.ruby-gemset +0 -1
- data/lib/mercurius/testing/base.rb +0 -21
- data/lib/mercurius/testing/delivery.rb +0 -6
- data/lib/mercurius/testing/result.rb +0 -32
- data/lib/mercurius/testing/service.rb +0 -17
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ad8436c06b411a85bb1392ae8829e647150a8813
         | 
| 4 | 
            +
              data.tar.gz: 7b6021819a0c16f5b65c609e391c86eef4b10215
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f82468ba84b84c9fce6f0a8dc0b977724eda79378b1c70f1c6511be8f4d16e4baff266979c3a94dd73b08c3b4c04ce979960dae2b4afe26dd790041a7d42197e
         | 
| 7 | 
            +
              data.tar.gz: 4c563b18ed858c1433ae0ff53199597028464d73f40f2b9361c0a9dd36add2fb1fc95055318c240c04809725cc5473f1315a1d1f76609695d954fe7ef178dce2
         | 
    
        data/README.md
    CHANGED
    
    | @@ -71,6 +71,23 @@ The deliver method can be called in the following ways: | |
| 71 71 | 
             
                token_array = ['token123', 'token456']
         | 
| 72 72 | 
             
                apns_service.deliver apns_notification, token_array             # multiple recipients
         | 
| 73 73 |  | 
| 74 | 
            +
            ## Testing
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            `GCM::Service` and `APNS::Service` can accept which type of connection they use to deliver pushes.
         | 
| 77 | 
            +
            Mercurius provides several mock connections for convenient testing. You can create a custom fake
         | 
| 78 | 
            +
            connection if you require a special use case.
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            ```ruby
         | 
| 81 | 
            +
            # Tokens passed will return successfully from GCM
         | 
| 82 | 
            +
            GCM::Service.new connection: GCM::SuccessfulConnection.new
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            # Tokens passed will return a NotRegistered error from the fake GCM
         | 
| 85 | 
            +
            GCM::Service.new connection: GCM::UnregisteredDeviceTokenConnection.new('token123')
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            # Tokens passed as keys will return their mapped value as the canonical ID
         | 
| 88 | 
            +
            GCM::Service.new connection: GCM::CanonicalIdConnection.new('token123' => 'canonical123')
         | 
| 89 | 
            +
            ```
         | 
| 90 | 
            +
             | 
| 74 91 | 
             
            ## Contributing
         | 
| 75 92 |  | 
| 76 93 | 
             
            Please fork, modify, and send a pull request if you want to help improve this gem.
         | 
    
        data/lib/mercurius/apns.rb
    CHANGED
    
    | @@ -12,10 +12,7 @@ module APNS | |
| 12 12 | 
             
                attr_accessor :host, :port, :pem
         | 
| 13 13 |  | 
| 14 14 | 
             
                def mode=(mode)
         | 
| 15 | 
            -
                   | 
| 16 | 
            -
                  @host = HOSTS[mode.to_sym]
         | 
| 15 | 
            +
                  @host = HOSTS.fetch(mode.to_sym) { raise InvalidApnsModeError.new }
         | 
| 17 16 | 
             
                end
         | 
| 18 | 
            -
             | 
| 19 17 | 
             
              end
         | 
| 20 | 
            -
             | 
| 21 18 | 
             
            end
         | 
| @@ -4,15 +4,15 @@ module APNS | |
| 4 4 |  | 
| 5 5 | 
             
                MAX_NUMBER_OF_RETRIES = 3
         | 
| 6 6 |  | 
| 7 | 
            -
                attr_accessor :host, :port, :pem
         | 
| 8 | 
            -
                attr_reader : | 
| 7 | 
            +
                attr_accessor :host, :port, :pem, :connection
         | 
| 8 | 
            +
                attr_reader :attempts
         | 
| 9 9 |  | 
| 10 10 | 
             
                def initialize(*)
         | 
| 11 11 | 
             
                  super
         | 
| 12 12 | 
             
                  @host ||= APNS.host
         | 
| 13 13 | 
             
                  @port ||= APNS.port
         | 
| 14 | 
            -
                  @pem | 
| 15 | 
            -
                  @connection  | 
| 14 | 
            +
                  @pem ||= APNS.pem
         | 
| 15 | 
            +
                  @connection ||= APNS::Connection.new(@host, @port, @pem)
         | 
| 16 16 | 
             
                  @attempts = 0
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
    
        data/lib/mercurius/gcm.rb
    CHANGED
    
    
| @@ -4,14 +4,14 @@ module GCM | |
| 4 4 |  | 
| 5 5 | 
             
                BATCH_SIZE = 999
         | 
| 6 6 |  | 
| 7 | 
            -
                attr_accessor :host, :key
         | 
| 8 | 
            -
                attr_reader : | 
| 7 | 
            +
                attr_accessor :host, :key, :connection
         | 
| 8 | 
            +
                attr_reader :attempts
         | 
| 9 9 |  | 
| 10 10 | 
             
                def initialize(*)
         | 
| 11 11 | 
             
                  super
         | 
| 12 12 | 
             
                  @host ||= GCM.host
         | 
| 13 | 
            -
                  @key | 
| 14 | 
            -
                  @connection  | 
| 13 | 
            +
                  @key ||= GCM.key
         | 
| 14 | 
            +
                  @connection ||= GCM::Connection.new(@host, @key)
         | 
| 15 15 | 
             
                  @attempts = 0
         | 
| 16 16 | 
             
                end
         | 
| 17 17 |  | 
    
        data/lib/mercurius/testing.rb
    CHANGED
    
    | @@ -1,7 +1,8 @@ | |
| 1 | 
            -
            require 'mercurius/testing/ | 
| 2 | 
            -
            require 'mercurius/testing/delivery'
         | 
| 3 | 
            -
            require 'mercurius/testing/result'
         | 
| 4 | 
            -
            require 'mercurius/testing/service'
         | 
| 1 | 
            +
            require 'mercurius/testing/fake_response'
         | 
| 5 2 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 3 | 
            +
            require 'mercurius/testing/gcm/token_serializer'
         | 
| 4 | 
            +
            require 'mercurius/testing/gcm/successful_connection'
         | 
| 5 | 
            +
            require 'mercurius/testing/gcm/canonical_id_connection'
         | 
| 6 | 
            +
            require 'mercurius/testing/gcm/unregistered_device_token_connection'
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            require 'mercurius/testing/apns/successful_connection'
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            module APNS
         | 
| 2 | 
            +
              class SuccessfulConnection
         | 
| 3 | 
            +
                def initialize
         | 
| 4 | 
            +
                  @_open = false
         | 
| 5 | 
            +
                end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def open
         | 
| 8 | 
            +
                  @_open = true
         | 
| 9 | 
            +
                  @ssl = FakeSocket.new
         | 
| 10 | 
            +
                  @socket = FakeSocket.new
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def close
         | 
| 14 | 
            +
                  @_open = false
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def closed?
         | 
| 18 | 
            +
                  not @_open
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def write(data)
         | 
| 22 | 
            +
                  @ssl.write data
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def read
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            module GCM
         | 
| 2 | 
            +
              class CanonicalIdConnection
         | 
| 3 | 
            +
                include GCM::TokenSerializer
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def initialize(canonical_ids_map)
         | 
| 6 | 
            +
                  @canonical_ids_map = canonical_ids_map
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def write(json)
         | 
| 10 | 
            +
                  tokens = json[:registration_ids]
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  json = {
         | 
| 13 | 
            +
                    'multicast_id' => '123',
         | 
| 14 | 
            +
                    'success' => tokens.size,
         | 
| 15 | 
            +
                    'failure' => 0,
         | 
| 16 | 
            +
                    'canonical_ids' => number_of_tokens_mapped_to_canonical_ids(tokens),
         | 
| 17 | 
            +
                    'results' => canonical_token_json(tokens, @canonical_ids_map)
         | 
| 18 | 
            +
                  }.to_json
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  Mercurius::FakeResponse.new body: json, status: 200
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                private
         | 
| 24 | 
            +
                  def number_of_tokens_mapped_to_canonical_ids(tokens)
         | 
| 25 | 
            +
                    tokens.count do |token|
         | 
| 26 | 
            +
                      @canonical_ids_map.key? token
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            module GCM
         | 
| 2 | 
            +
              class SuccessfulConnection
         | 
| 3 | 
            +
                include GCM::TokenSerializer
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def write(json)
         | 
| 6 | 
            +
                  tokens = json[:registration_ids]
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  json = {
         | 
| 9 | 
            +
                    'multicast_id' => '123',
         | 
| 10 | 
            +
                    'success' => tokens.size,
         | 
| 11 | 
            +
                    'failure' => 0,
         | 
| 12 | 
            +
                    'canonical_ids' => 0,
         | 
| 13 | 
            +
                    'results' => valid_token_json(tokens)
         | 
| 14 | 
            +
                  }.to_json
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  Mercurius::FakeResponse.new body: json, status: 200
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            module GCM
         | 
| 2 | 
            +
              module TokenSerializer
         | 
| 3 | 
            +
                def valid_token_json(tokens)
         | 
| 4 | 
            +
                  tokens.map do |token|
         | 
| 5 | 
            +
                    { 'message_id' => SecureRandom.hex }
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def invalid_token_json(tokens, error)
         | 
| 10 | 
            +
                  tokens.map do |token|
         | 
| 11 | 
            +
                    { 'error' => error }
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def canonical_token_json(tokens, canonical_ids_map)
         | 
| 16 | 
            +
                  tokens.map do |token|
         | 
| 17 | 
            +
                    hash = { 'message_id' => SecureRandom.hex }
         | 
| 18 | 
            +
                    if canonical_id = canonical_ids_map[token]
         | 
| 19 | 
            +
                      hash['registration_id'] = canonical_id
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                    hash
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            module GCM
         | 
| 2 | 
            +
              class UnregisteredDeviceTokenConnection
         | 
| 3 | 
            +
                include GCM::TokenSerializer
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def initialize(*invalid_tokens)
         | 
| 6 | 
            +
                  @invalid_tokens = invalid_tokens
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def write(json)
         | 
| 10 | 
            +
                  invalid, valid = json[:registration_ids].partition do |token|
         | 
| 11 | 
            +
                    @invalid_tokens.include? token
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  json = {
         | 
| 15 | 
            +
                    'multicast_id' => '123',
         | 
| 16 | 
            +
                    'success' => valid.size,
         | 
| 17 | 
            +
                    'failure' => invalid.size,
         | 
| 18 | 
            +
                    'canonical_ids' => 0,
         | 
| 19 | 
            +
                    'results' => valid_token_json(valid).concat(invalid_token_json(invalid, 'NotRegistered'))
         | 
| 20 | 
            +
                  }.to_json
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  Mercurius::FakeResponse.new body: json, status: 200
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
    
        data/lib/mercurius/version.rb
    CHANGED
    
    
    
        data/spec/lib/testing_spec.rb
    CHANGED
    
    | @@ -1,45 +1,58 @@ | |
| 1 | 
            -
            %w(service base result delivery).each do |rb|
         | 
| 2 | 
            -
              require File.expand_path("../../../lib/mercurius/testing/#{rb}", __FILE__)
         | 
| 3 | 
            -
            end
         | 
| 4 | 
            -
             | 
| 5 1 | 
             
            describe 'Test mode' do
         | 
| 2 | 
            +
              context 'GCM' do
         | 
| 3 | 
            +
                let(:message) { GCM::Notification.new(data: { alert: 'Hey' }) }
         | 
| 6 4 |  | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
              class APNS::MockService < APNS::Service
         | 
| 12 | 
            -
                include Mercurius::Testing::Service
         | 
| 13 | 
            -
              end
         | 
| 5 | 
            +
                describe 'Normal test connection' do
         | 
| 6 | 
            +
                  let(:service) do
         | 
| 7 | 
            +
                    GCM::Service.new connection: GCM::SuccessfulConnection.new
         | 
| 8 | 
            +
                  end
         | 
| 14 9 |  | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 10 | 
            +
                  it 'Returns all devices sent successfully' do
         | 
| 11 | 
            +
                    responses = service.deliver message, 'token123', 'token456'
         | 
| 12 | 
            +
                    expect(responses.results.succeeded.size).to eq 2
         | 
| 13 | 
            +
                    expect(responses.results.failed.size).to eq 0
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 18 16 |  | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 17 | 
            +
                describe 'Invalid device token connection' do
         | 
| 18 | 
            +
                  let(:service) do
         | 
| 19 | 
            +
                    GCM::Service.new connection: GCM::UnregisteredDeviceTokenConnection.new('token456')
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  it 'Returns invalid device errors for the tokens provided' do
         | 
| 23 | 
            +
                    responses = service.deliver message, 'token123', 'token456'
         | 
| 24 | 
            +
                    expect(responses.results.failed.size).to eq 1
         | 
| 25 | 
            +
                    expect(responses.results.failed[0].token).to eq 'token456'
         | 
| 26 | 
            +
                    expect(responses.results.failed[0].error).to eq 'NotRegistered'
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                end
         | 
| 22 29 |  | 
| 23 | 
            -
                 | 
| 24 | 
            -
                   | 
| 25 | 
            -
             | 
| 26 | 
            -
                   | 
| 27 | 
            -
             | 
| 28 | 
            -
                   | 
| 30 | 
            +
                describe 'Canonical ID token connection' do
         | 
| 31 | 
            +
                  let(:service) do
         | 
| 32 | 
            +
                    GCM::Service.new connection: GCM::CanonicalIdConnection.new('token456' => 'canonicalToken999')
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  it 'returns canonical IDs for the tokens provided' do
         | 
| 36 | 
            +
                    responses = service.deliver message, 'token123', 'token456'
         | 
| 37 | 
            +
                    expect(responses.results.with_canonical_ids.size).to eq 1
         | 
| 38 | 
            +
                    expect(responses.results.with_canonical_ids[0].token).to eq 'token456'
         | 
| 39 | 
            +
                    expect(responses.results.with_canonical_ids[0].canonical_id).to eq 'canonicalToken999'
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  it 'matches the canonical count with the amount provided to the connection' do
         | 
| 43 | 
            +
                    responses = service.deliver message, 'token123', 'token456'
         | 
| 44 | 
            +
                    expect(responses[0].to_h['canonical_ids']).to eq 1
         | 
| 45 | 
            +
                  end
         | 
| 29 46 | 
             
                end
         | 
| 30 47 | 
             
              end
         | 
| 31 48 |  | 
| 32 49 | 
             
              context 'APNS' do
         | 
| 33 | 
            -
                let(:service) { APNS:: | 
| 50 | 
            +
                let(:service) { APNS::Service.new connection: APNS::SuccessfulConnection.new }
         | 
| 34 51 | 
             
                let(:message) { APNS::Notification.new(alert: 'Hey') }
         | 
| 35 52 |  | 
| 36 53 | 
             
                it 'returns the deliveries sent to APNS' do
         | 
| 37 54 | 
             
                  result = service.deliver message, 'token123'
         | 
| 38 | 
            -
                   | 
| 39 | 
            -
                  expect(delivery.device_tokens).to include 'token123'
         | 
| 40 | 
            -
                  expect(delivery.notification.alert).to eq 'Hey'
         | 
| 41 | 
            -
                  expect(result).to be_a_kind_of Mercurius::Testing::Result
         | 
| 55 | 
            +
                  # Not sure what to test here...
         | 
| 42 56 | 
             
                end
         | 
| 43 57 | 
             
              end
         | 
| 44 | 
            -
             | 
| 45 58 | 
             
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        data/spec/support/fake_socket.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: mercurius
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.7
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - John Beck
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-09- | 
| 11 | 
            +
            date: 2015-09-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: json
         | 
| @@ -132,7 +132,6 @@ extra_rdoc_files: [] | |
| 132 132 | 
             
            files:
         | 
| 133 133 | 
             
            - ".gitignore"
         | 
| 134 134 | 
             
            - ".rspec"
         | 
| 135 | 
            -
            - ".ruby-gemset"
         | 
| 136 135 | 
             
            - ".ruby-version"
         | 
| 137 136 | 
             
            - ".travis.yml"
         | 
| 138 137 | 
             
            - Gemfile
         | 
| @@ -160,10 +159,12 @@ files: | |
| 160 159 | 
             
            - lib/mercurius/gcm/result_collection.rb
         | 
| 161 160 | 
             
            - lib/mercurius/gcm/service.rb
         | 
| 162 161 | 
             
            - lib/mercurius/testing.rb
         | 
| 163 | 
            -
            - lib/mercurius/testing/ | 
| 164 | 
            -
            - lib/mercurius/testing/ | 
| 165 | 
            -
            - lib/mercurius/testing/ | 
| 166 | 
            -
            - lib/mercurius/testing/ | 
| 162 | 
            +
            - lib/mercurius/testing/apns/successful_connection.rb
         | 
| 163 | 
            +
            - lib/mercurius/testing/fake_response.rb
         | 
| 164 | 
            +
            - lib/mercurius/testing/gcm/canonical_id_connection.rb
         | 
| 165 | 
            +
            - lib/mercurius/testing/gcm/successful_connection.rb
         | 
| 166 | 
            +
            - lib/mercurius/testing/gcm/token_serializer.rb
         | 
| 167 | 
            +
            - lib/mercurius/testing/gcm/unregistered_device_token_connection.rb
         | 
| 167 168 | 
             
            - lib/mercurius/version.rb
         | 
| 168 169 | 
             
            - mercurius.gemspec
         | 
| 169 170 | 
             
            - spec/lib/apns_notification_spec.rb
         | 
    
        data/.ruby-gemset
    DELETED
    
    | @@ -1 +0,0 @@ | |
| 1 | 
            -
            mercurius
         | 
| @@ -1,21 +0,0 @@ | |
| 1 | 
            -
            module Mercurius
         | 
| 2 | 
            -
              module Testing
         | 
| 3 | 
            -
                class Base
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                  def self.deliveries
         | 
| 6 | 
            -
                    @@deliveries ||= []
         | 
| 7 | 
            -
                  end
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                  def self.reset
         | 
| 10 | 
            -
                    @@deliveries = []
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  def self.deliveries_to(device_token)
         | 
| 14 | 
            -
                    deliveries.select do |delivery|
         | 
| 15 | 
            -
                      delivery.device_tokens.include? device_token
         | 
| 16 | 
            -
                    end
         | 
| 17 | 
            -
                  end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                end
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
            end
         | 
| @@ -1,32 +0,0 @@ | |
| 1 | 
            -
            module Mercurius
         | 
| 2 | 
            -
              module Testing
         | 
| 3 | 
            -
                class Result
         | 
| 4 | 
            -
                  attr_reader :responses
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                  def initialize(notification)
         | 
| 7 | 
            -
                    @notification = notification
         | 
| 8 | 
            -
                    @responses = []
         | 
| 9 | 
            -
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def success?
         | 
| 12 | 
            -
                    true
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                  def process_response(*)
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  def failed_responses
         | 
| 19 | 
            -
                    []
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                  def failed_device_tokens
         | 
| 23 | 
            -
                    []
         | 
| 24 | 
            -
                  end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  def has_canonical_ids?
         | 
| 27 | 
            -
                    false
         | 
| 28 | 
            -
                  end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
              end
         | 
| 32 | 
            -
            end
         | 
| @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            module Mercurius
         | 
| 2 | 
            -
              module Testing
         | 
| 3 | 
            -
                module Service
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                  def deliver(notification, *device_tokens)
         | 
| 6 | 
            -
                    Mercurius::Testing::Base.deliveries << Mercurius::Testing::Delivery.new(notification, Array(device_tokens).flatten)
         | 
| 7 | 
            -
                    Mercurius::Testing::Result.new notification
         | 
| 8 | 
            -
                  end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  def deliver_topic(notification, topic)
         | 
| 11 | 
            -
                    Mercurius::Testing::Base.deliveries << Mercurius::Testing::Delivery.new(notification, [topic])
         | 
| 12 | 
            -
                    Mercurius::Testing::Result.new notification
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
            end
         |