pntfr 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 881840f1cd5381a2e47d78f26b8abaa26cd2b02b
4
- data.tar.gz: 9f8bb4c8aca929683314e84e203b8e6a9255b337
3
+ metadata.gz: 1f3b8477063d23af20f997756ac2525bd3b32780
4
+ data.tar.gz: 5f1680126704e0ebca33794342a03a96a471ab9c
5
5
  SHA512:
6
- metadata.gz: 42006755a948b74d3f00b47c0db693d538278981d43ce1a383967cb95ab2d13efe61f016eb7b0dd6c38bc72c6bfefb602f0051e9d6aecefd619575f4399d827b
7
- data.tar.gz: cd3fdf9794ec96cb0d38cec160eee42e26bab0cac6e71ff9925067982203de44524f8d65ef44d6113d6684883e0e3a52e5fabd30a29a96a681b91717928a4b55
6
+ metadata.gz: 4587cc3c9d9e1fc1707813312c914b10ae80bf849a9e56d3c2f2651fd31e8b2174fa404cfa9fa5b34cbc48b2cd28e2d003eda718f5aaf5c0914a42bd5eddee88
7
+ data.tar.gz: 5958abd16c317ca5eaf9b748b4fb8df87c4665208b4a9a9bd3b3422d0b88b2e3601820ca16020315e43e356616505cf4f8546d29efecf08966069d9bae7ce7c2
data/lib/pntfr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pntfr
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -1,14 +1,16 @@
1
1
  #
2
2
  # VirtualSession implementation for Android
3
3
  #
4
-
4
+ require 'gcm'
5
5
  module Pntfr
6
6
  module VirtualSession
7
7
  class Android < Pntfr::VirtualSession::Base
8
+ FILE_EXTENSION_REGEXP= /(\.[^\.]+)\z/
9
+
8
10
  def initialize session
9
11
  super
10
12
  @notification_key= Pntfr.config.gcm[:notification_key]
11
- @gcm= GCM.new(@notification_key) unless Pntfr.test_env?
13
+ @gcm= ::GCM.new(@notification_key) unless Pntfr.test_env?
12
14
  end
13
15
 
14
16
  def msg content
@@ -16,17 +18,30 @@ module Pntfr
16
18
  :title => content[:title],
17
19
  :description => content[:description],
18
20
  }
21
+ @data[:sound]= parse_sound_file(content[:sound]) unless content[:sound].nil?
19
22
  self
20
23
  end
21
24
  def notify
22
25
  options = {data: @data}
23
26
  if Pntfr.test_env?
24
27
  Pntfr.add_delivery(@push_id, options)
28
+ VirtualSession::SuccessResponse.new
25
29
  else
26
- @gcm.send_notification(@push_id, options)
30
+ rs= @gcm.send_notification([@push_id], options)
31
+ parse_response rs
27
32
  end
28
33
  end
29
34
 
35
+ #---------------------------------------------------------
36
+ private
37
+ #---------------------------------------------------------
38
+ def parse_response rs
39
+ VirtualSession::GcmResponse.new(rs)
40
+ end
41
+
42
+ def parse_sound_file filename
43
+ filename.gsub(FILE_EXTENSION_REGEXP, '')
44
+ end
30
45
  end
31
46
  end
32
47
  end
@@ -11,5 +11,7 @@ module Pntfr
11
11
  end
12
12
  end
13
13
  end
14
- require File.dirname(__FILE__) + '/android'
15
- require File.dirname(__FILE__) + '/ios'
14
+ require 'pntfr/virtual_session/success_response'
15
+ require 'pntfr/virtual_session/android'
16
+ require 'pntfr/virtual_session/gcm_response'
17
+ require 'pntfr/virtual_session/ios'
@@ -0,0 +1,31 @@
1
+ module Pntfr
2
+ module VirtualSession
3
+ class BaseResponse
4
+ # communication with notification service was OK?
5
+ # implies no +failure?+
6
+ def success?
7
+ raise 'not implemented!'
8
+ end
9
+ # message has been sent?
10
+ def msg_sent?
11
+ raise 'not implemented!'
12
+ end
13
+ # communication with notification service failed?
14
+ # implies no +succcess?+
15
+ def failure?
16
+ raise 'not implemented!'
17
+ end
18
+ # Was there an error with the notification?
19
+ # implies +succcess?+ but no +msg_sent?+
20
+ def error?
21
+ raise 'not implemented!'
22
+ end
23
+ # which was the error?
24
+ def error
25
+ end
26
+ # which was the failure?
27
+ def failure
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,44 @@
1
+ #
2
+ # Google Cloud Messaging json response wrapper.
3
+ #
4
+ require 'pntfr/virtual_session/base_response'
5
+ require 'json'
6
+
7
+ module Pntfr
8
+ module VirtualSession
9
+ class GcmResponse < BaseResponse
10
+ def initialize json
11
+ @status_code= json[:status_code]
12
+ @response= json[:response]
13
+ @body= json[:body]
14
+ if success?
15
+ @parsed_body= JSON.parse(@body)
16
+ @body_result= @parsed_body['results'].first
17
+ end
18
+ end
19
+ def success?
20
+ @status_code == 200
21
+ end
22
+ def bad_sender_account?
23
+ @status_code == 401
24
+ end
25
+ def failure?
26
+ @status_code == 400 or @status_code >= 500
27
+ end
28
+ def msg_sent?
29
+ success? && @parsed_body['success'] == 1
30
+ end
31
+ def error?
32
+ success? and !msg_sent? and @body_result.has_key?('error')
33
+ end
34
+ def error
35
+ if error?
36
+ @body_result['error']
37
+ end
38
+ end
39
+ def failure
40
+ "#{@body}->#{@response}"
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,10 +1,12 @@
1
1
  #
2
2
  # VirtualSession implementation for iOS
3
3
  #
4
+ require 'apns'
4
5
  module Pntfr
5
6
  module VirtualSession
6
7
  class Ios < Pntfr::VirtualSession::Base
7
8
  def msg content
9
+ configure_apns
8
10
  reset_msg
9
11
  @alert= content[:title]
10
12
  @alert+= "\n#{content[:description]}"
@@ -27,14 +29,22 @@ module Pntfr
27
29
  if Pntfr.test_env?
28
30
  Pntfr.add_delivery(@push_id, n)
29
31
  else
30
- APNS.send_notification(@push_id, n)
32
+ ::APNS.send_notification(@push_id, n)
31
33
  end
34
+ SuccessResponse.new
32
35
  end
33
36
 
34
37
  #-------------------------------------------------
35
38
  private
36
39
  #-------------------------------------------------
37
40
 
41
+ def configure_apns
42
+ config= Pntfr.config.apns
43
+ APNS.host = config[:host]
44
+ APNS.pem = config[:pem]
45
+ APNS.port = config[:port]
46
+ APNS.pass = config[:pass]
47
+ end
38
48
  def reset_msg
39
49
  @alert= @sound= @badge= nil
40
50
  end
@@ -0,0 +1,31 @@
1
+ #
2
+ # Always success.
3
+ # To be used on cases where no response to be parsed is received.
4
+ #
5
+ require 'pntfr/virtual_session/base_response'
6
+
7
+ module Pntfr
8
+ module VirtualSession
9
+ class SuccessResponse < BaseResponse
10
+ # communication with notification service was OK?
11
+ # implies no +failure?+
12
+ def success?
13
+ true
14
+ end
15
+ # message has been sent?
16
+ def msg_sent?
17
+ true
18
+ end
19
+ # communication with notification service failed?
20
+ # implies no +succcess?+
21
+ def failure?
22
+ false
23
+ end
24
+ # Was there an error with the notification?
25
+ # implies +succcess?+ but no +msg_sent?+
26
+ def error?
27
+ false
28
+ end
29
+ end
30
+ end
31
+ end
data/pntfr.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_runtime_dependency 'apns', '~> 1.0', '>= 1.0.0'
22
22
  spec.add_runtime_dependency 'gcm', '~> 0.0', '>= 0.0.9'
23
+ spec.add_runtime_dependency 'json', '~> 1.8.1'
23
24
  spec.add_development_dependency 'bundler', '~> 1.6'
24
25
  spec.add_development_dependency 'rake'
25
26
  end
@@ -6,9 +6,6 @@ module Pntfr
6
6
  Pntfr.configure {}
7
7
  end
8
8
 
9
- #
10
- # COMMON
11
- #
12
9
  def test_android_sessions_should_instantiate_android_virtual_sessions
13
10
  session= DeviceSession.new(Pntfr::Platforms::ANDROID)
14
11
  vsess= Pntfr::Notifier.to(session)
@@ -20,38 +17,5 @@ module Pntfr
20
17
  assert vsess.is_a?(Pntfr::VirtualSession::Ios)
21
18
  end
22
19
 
23
- #
24
- # ANDROID
25
- #
26
- def test_received_content_shoud_be_sent_to_gcm
27
- push_id= 'ANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROID'
28
- session= DeviceSession.new(Pntfr::Platforms::ANDROID, push_id)
29
-
30
- Pntfr::Notifier.to(session).msg({:title => 'Some Title', :description => 'A description'}).notify
31
-
32
- notifs= Pntfr.deliveries[push_id]
33
- refute_nil notifs, "A notification should have been delivered for #{push_id}"
34
- notif= notifs.last
35
- assert_equal "Some Title", notif[:data][:title]
36
- assert_equal "A description", notif[:data][:description]
37
- end
38
-
39
- #
40
- # IOS
41
- #
42
- def test_received_content_shoud_be_ready_to_be_sent_to_apns
43
- push_id= 'IOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSios'
44
- session= DeviceSession.new(Pntfr::Platforms::IOS, push_id)
45
-
46
- Pntfr::Notifier.to(session).msg({:title => 'thatitle', :description => 'thadescription', :sound => 'click.aiff', :badge => 33}).notify
47
-
48
- ios_notifs= Pntfr.deliveries[push_id]
49
- refute_nil ios_notifs, "A notification should have been delivered for #{push_id}"
50
- ios_notif= ios_notifs.last
51
- assert_equal "thatitle\nthadescription", ios_notif[:alert]
52
- assert_equal 'click.aiff', ios_notif[:sound]
53
- assert_equal 33, ios_notif[:badge]
54
- end
55
-
56
20
  end
57
21
  end
@@ -0,0 +1,48 @@
1
+ require 'pntfr/device_session'
2
+ module Pntfr
3
+ module VirtualSession
4
+ class AndroidTest < Minitest::Test
5
+ def initialize method_name
6
+ super
7
+ Pntfr.configure {}
8
+ end
9
+
10
+ def test_received_content_shoud_be_sent_to_gcm
11
+ push_id= 'ANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROID'
12
+ session= DeviceSession.new(Pntfr::Platforms::ANDROID, push_id)
13
+
14
+ vsession= Pntfr::Notifier.to(session).msg({
15
+ :title => 'Some Title', :description => 'A description',
16
+ :sound => 'bell.caff'
17
+ })
18
+ rs= vsession.notify
19
+ assert rs.success? and rs.msg_sent?
20
+
21
+ notifs= Pntfr.deliveries[push_id]
22
+ refute_nil notifs, "A notification should have been delivered for #{push_id}"
23
+ notif= notifs.last
24
+ assert_equal 'Some Title', notif[:data][:title]
25
+ assert_equal 'A description', notif[:data][:description]
26
+ assert_equal 'bell', notif[:data][:sound]
27
+ end
28
+ def test_sound_attribute_shoud_be_sent_to_gcm
29
+ push_id= 'ANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROIDANDROID'
30
+ session= DeviceSession.new(Pntfr::Platforms::ANDROID, push_id)
31
+
32
+ vsession= Pntfr::Notifier.to(session).msg({
33
+ :title => 'Some Title', :description => 'A description',
34
+ :sound => 'bell.caff'
35
+ })
36
+ rs= vsession.notify
37
+ assert rs.success? and rs.msg_sent?
38
+
39
+ notifs= Pntfr.deliveries[push_id]
40
+ refute_nil notifs, "A notification should have been delivered for #{push_id}"
41
+ notif= notifs.last
42
+ assert_equal 'Some Title', notif[:data][:title]
43
+ assert_equal 'A description', notif[:data][:description]
44
+ assert_equal 'bell', notif[:data][:sound]
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,43 @@
1
+ require 'pntfr/device_session'
2
+ module Pntfr
3
+ module VirtualSession
4
+ class IosTest < Minitest::Test
5
+ def test_received_content_shoud_be_ready_to_be_sent_to_apns
6
+ push_id= 'IOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSiosIOSios'
7
+ session= DeviceSession.new(Pntfr::Platforms::IOS, push_id)
8
+
9
+ rs= Pntfr::Notifier.to(session).msg({:title => 'thatitle', :description => 'thadescription', :sound => 'click.aiff', :badge => 33}).notify
10
+ assert rs.success? and rs.msg_sent?
11
+
12
+ ios_notifs= Pntfr.deliveries[push_id]
13
+ refute_nil ios_notifs, "A notification should have been delivered for #{push_id}"
14
+ ios_notif= ios_notifs.last
15
+ assert_equal "thatitle\nthadescription", ios_notif[:alert]
16
+ assert_equal 'click.aiff', ios_notif[:sound]
17
+ assert_equal 33, ios_notif[:badge]
18
+ end
19
+
20
+ def test_ios_information_from_previous_msg_should_be_reset_when_sending_a_new_msg
21
+ session= IosDeviceSession.new(Pntfr::Platforms::IOS, name, 3)
22
+ vsession= Pntfr::Notifier.to(session)
23
+
24
+ rs= vsession.msg(title: 't1', description: 'd1', sound: 's1').notify
25
+ assert rs.success? and rs.msg_sent?
26
+ rs= vsession.msg(title: 't2', description: 'd2').notify
27
+ assert rs.success? and rs.msg_sent?
28
+
29
+ notifs= Pntfr.deliveries[session.push_id]
30
+ assert_equal 5, session.num_notifs
31
+ assert_equal 2, notifs.size
32
+ notif= notifs.first
33
+ assert_equal "t1\nd1", notif[:alert]
34
+ assert_equal 's1', notif[:sound]
35
+ assert_equal 4, notif[:badge]
36
+ notif= notifs.last
37
+ assert_equal "t2\nd2", notif[:alert]
38
+ assert_equal 'default', notif[:sound]
39
+ assert_equal 5, notif[:badge]
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,49 @@
1
+ module Pntfr
2
+ class ResponseTest < Minitest::Test
3
+ #
4
+ # Success response
5
+ #
6
+ def test_success_response_should_have_sent_msg_and_no_error
7
+ rs= VirtualSession::SuccessResponse.new
8
+ assert rs.success? and rs.msg_sent?
9
+ refute rs.error?
10
+ refute rs.failure?
11
+ assert_nil rs.error
12
+ end
13
+ #
14
+ # Android response
15
+ #
16
+ def test_gcm_200_responses_with_success_should_have_success_and_no_error
17
+ json= {:body=>"{\"multicast_id\":1020305051281243425,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1418221082312345%88882f99f9fd7ecd\"}]}", :headers=>{"content-type"=>["application/json; charset=UTF-8"], "date"=>["Wed, 10 Dec 2014 14:18:02 GMT"], "expires"=>["Wed, 10 Dec 2014 14:18:02 GMT"], "cache-control"=>["private, max-age=0"], "x-content-type-options"=>["nosniff"], "x-frame-options"=>["SAMEORIGIN"], "x-xss-protection"=>["1; mode=block"], "server"=>["GSE"], "alternate-protocol"=>["443:quic,p=0.02"], "connection"=>["close"]}, :status_code=>200, :response=>"success", :canonical_ids=>[], :not_registered_ids=>[]}
18
+ rs= VirtualSession::GcmResponse.new(json)
19
+ assert rs.success?
20
+ refute rs.error?
21
+ assert_nil rs.error
22
+ end
23
+ def test_gcm_200_responses_with_invalid_registration_should_have_failed_and_report_error
24
+ json= {:body=>"{\"multicast_id\":6867269885611677069,\"success\":0,\"failure\":1,\"canonical_ids\":0,\"results\":[{\"error\":\"InvalidRegistration\"}]}", :headers=>{"content-type"=>["application/json; charset=UTF-8"], "date"=>["Tue, 09 Dec 2014 21:28:02 GMT"], "expires"=>["Tue, 09 Dec 2014 21:28:02 GMT"], "cache-control"=>["private, max-age=0"], "x-content-type-options"=>["nosniff"], "x-frame-options"=>["SAMEORIGIN"], "x-xss-protection"=>["1; mode=block"], "server"=>["GSE"], "alternate-protocol"=>["443:quic,p=0.02"], "connection"=>["close"]}, :status_code=>200, :response=>"success", :canonical_ids=>[], :not_registered_ids=>[]}
25
+ rs= VirtualSession::GcmResponse.new(json)
26
+ refute rs.failure?
27
+ refute rs.msg_sent?
28
+ assert rs.success? and rs.error?
29
+ assert_equal 'InvalidRegistration', rs.error
30
+ end
31
+ def test_gcm_200_responses_with_mismatch_sender_id_should_have_failed_and_report_error
32
+ json= {:body=>"{\"multicast_id\":5372261104801760966,\"success\":0,\"failure\":1,\"canonical_ids\":0,\"results\":[{\"error\":\"MismatchSenderId\"}]}", :headers=>{"content-type"=>["application/json; charset=UTF-8"], "date"=>["Tue, 09 Dec 2014 20:41:01 GMT"], "expires"=>["Tue, 09 Dec 2014 20:41:01 GMT"], "cache-control"=>["private, max-age=0"], "x-content-type-options"=>["nosniff"], "x-frame-options"=>["SAMEORIGIN"], "x-xss-protection"=>["1; mode=block"], "server"=>["GSE"], "alternate-protocol"=>["443:quic,p=0.02"], "connection"=>["close"]}, :status_code=>200, :response=>"success", :canonical_ids=>[], :not_registered_ids=>[]}
33
+ rs= VirtualSession::GcmResponse.new(json)
34
+ assert rs.success?
35
+ refute rs.msg_sent?
36
+ assert rs.error?
37
+ refute rs.failure?
38
+ assert_equal 'MismatchSenderId', rs.error
39
+ end
40
+ def test_gcm_400_responses_should_have_failed_and_report_error
41
+ json= {:body=>"\"registration_ids\" field is not a JSON array\n", :headers=>{"content-type"=>["text/plain; charset=UTF-8"], "date"=>["Tue, 09 Dec 2014 21:27:30 GMT"], "expires"=>["Tue, 09 Dec 2014 21:27:30 GMT"], "cache-control"=>["private, max-age=0"], "x-content-type-options"=>["nosniff"], "x-frame-options"=>["SAMEORIGIN"], "x-xss-protection"=>["1; mode=block"], "server"=>["GSE"], "alternate-protocol"=>["443:quic,p=0.02"], "connection"=>["close"]}, :status_code=>400, :response=>"Only applies for JSON requests. Indicates that the request could not be parsed as JSON, or it contained invalid fields."}
42
+ rs= VirtualSession::GcmResponse.new(json)
43
+ refute rs.success? and rs.error?
44
+ assert rs.failure?
45
+ expected= "\"registration_ids\" field is not a JSON array\n->Only applies for JSON requests. Indicates that the request could not be parsed as JSON, or it contained invalid fields."
46
+ assert_equal expected, rs.failure
47
+ end
48
+ end
49
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pntfr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - oliver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-09 00:00:00.000000000 Z
11
+ date: 2014-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apns
@@ -50,6 +50,20 @@ dependencies:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
52
  version: 0.0.9
53
+ - !ruby/object:Gem::Dependency
54
+ name: json
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 1.8.1
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: 1.8.1
53
67
  - !ruby/object:Gem::Dependency
54
68
  name: bundler
55
69
  requirement: !ruby/object:Gem::Requirement
@@ -97,17 +111,18 @@ files:
97
111
  - lib/pntfr/version.rb
98
112
  - lib/pntfr/virtual_session/android.rb
99
113
  - lib/pntfr/virtual_session/base.rb
114
+ - lib/pntfr/virtual_session/base_response.rb
115
+ - lib/pntfr/virtual_session/gcm_response.rb
100
116
  - lib/pntfr/virtual_session/ios.rb
101
- - nbproject/private/private.properties
102
- - nbproject/private/rake-d.txt
103
- - nbproject/project.properties
104
- - nbproject/project.xml
117
+ - lib/pntfr/virtual_session/success_response.rb
105
118
  - pntfr.gemspec
106
119
  - test/pntfr/device_session.rb
107
- - test/pntfr/ios_badge_test.rb
108
- - test/pntfr/ios_test.rb
109
120
  - test/pntfr/platforms_test.rb
110
121
  - test/pntfr/push_notifier_test.rb
122
+ - test/pntfr/virtual_session/android_test.rb
123
+ - test/pntfr/virtual_session/ios_badge_test.rb
124
+ - test/pntfr/virtual_session/ios_test.rb
125
+ - test/pntfr/virtual_session/response_test.rb
111
126
  - test/pntfr_configuration_test.rb
112
127
  - test/test_helper.rb
113
128
  homepage: http://www.coditramuntana.com
@@ -137,9 +152,11 @@ summary: Push notifier is a simple adapter for APNS and GCM gems, that way you c
137
152
  use same api to send push notifications to both devices.
138
153
  test_files:
139
154
  - test/pntfr/device_session.rb
140
- - test/pntfr/ios_badge_test.rb
141
- - test/pntfr/ios_test.rb
142
155
  - test/pntfr/platforms_test.rb
143
156
  - test/pntfr/push_notifier_test.rb
157
+ - test/pntfr/virtual_session/android_test.rb
158
+ - test/pntfr/virtual_session/ios_badge_test.rb
159
+ - test/pntfr/virtual_session/ios_test.rb
160
+ - test/pntfr/virtual_session/response_test.rb
144
161
  - test/pntfr_configuration_test.rb
145
162
  - test/test_helper.rb
@@ -1,2 +0,0 @@
1
- file.reference.pntfr-lib=/home/oliver/prog/coditramuntana/gems/pntfr/lib
2
- file.reference.pntfr-test=/home/oliver/prog/coditramuntana/gems/pntfr/test
@@ -1,5 +0,0 @@
1
- build=Build pntfr-0.0.1.gem into the pkg directory.
2
- default=Run tests
3
- install=Build and install pntfr-0.0.1.gem into system gems.
4
- release=Create tag v0.0.1 and build and push pntfr-0.0.1.gem to Rubygems
5
- test=Run tests
@@ -1,7 +0,0 @@
1
- file.reference.pntfr-lib=lib
2
- file.reference.pntfr-test=test
3
- main.file=
4
- platform.active=Ruby_0
5
- source.encoding=UTF-8
6
- src.dir=${file.reference.pntfr-lib}
7
- test.src.dir=${file.reference.pntfr-test}
@@ -1,15 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project xmlns="http://www.netbeans.org/ns/project/1">
3
- <type>org.netbeans.modules.ruby.rubyproject</type>
4
- <configuration>
5
- <data xmlns="http://www.netbeans.org/ns/ruby-project/1">
6
- <name>Pntfr</name>
7
- <source-roots>
8
- <root id="src.dir"/>
9
- </source-roots>
10
- <test-roots>
11
- <root id="test.src.dir"/>
12
- </test-roots>
13
- </data>
14
- </configuration>
15
- </project>
@@ -1,25 +0,0 @@
1
- module Pntfr
2
- module VirtualSession
3
- class IosTest < Minitest::Test
4
- def test_ios_information_from_previous_msg_should_be_reset_when_sending_a_new_msg
5
- session= IosDeviceSession.new(Pntfr::Platforms::IOS, name, 3)
6
- vsession= Pntfr::Notifier.to(session)
7
-
8
- vsession.msg(title: 't1', description: 'd1', sound: 's1').notify
9
- vsession.msg(title: 't2', description: 'd2').notify
10
-
11
- notifs= Pntfr.deliveries[session.push_id]
12
- assert_equal 5, session.num_notifs
13
- assert_equal 2, notifs.size
14
- notif= notifs.first
15
- assert_equal "t1\nd1", notif[:alert]
16
- assert_equal 's1', notif[:sound]
17
- assert_equal 4, notif[:badge]
18
- notif= notifs.last
19
- assert_equal "t2\nd2", notif[:alert]
20
- assert_equal 'default', notif[:sound]
21
- assert_equal 5, notif[:badge]
22
- end
23
- end
24
- end
25
- end