rails-push-notifications 0.2.0

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.
@@ -0,0 +1,96 @@
1
+
2
+ module RailsPushNotifications
3
+ describe Notification, type: :model do
4
+
5
+ class FakeResults
6
+ attr_reader :value1, :success, :failed
7
+
8
+ def initialize(value1, success, failed)
9
+ @value1 = value1
10
+ @success = success
11
+ @failed = failed
12
+ end
13
+
14
+ def ==(other)
15
+ other != nil && other.is_a?(FakeResults) &&
16
+ @value1 == other.value1 && @success == other.success &&
17
+ @failed == failed || super(other)
18
+ end
19
+ end
20
+
21
+ let(:notification) { build :apns_notification }
22
+
23
+ describe 'app relationship' do
24
+ it 'requires an app' do
25
+ notification.app = nil
26
+ expect(notification).to_not be_valid
27
+ end
28
+
29
+ it 'belongs to an app' do
30
+ expect(notification.app).to be_a APNSApp
31
+ end
32
+ end
33
+
34
+ describe 'data' do
35
+ it 'requires data' do
36
+ notification.data = nil
37
+ expect(notification).to_not be_valid
38
+ end
39
+
40
+ it 'has to be a Hash' do
41
+ expect do
42
+ notification.data = 'dummy text'
43
+ end.to raise_error ActiveRecord::SerializationTypeMismatch
44
+ end
45
+ end
46
+
47
+ describe 'destinations' do
48
+ it 'requires destinations' do
49
+ notification.destinations = nil
50
+ expect(notification).to_not be_valid
51
+ end
52
+
53
+ it 'has to be an array' do
54
+ expect do
55
+ notification.destinations = 'dummy destinations'
56
+ end.to raise_error ActiveRecord::SerializationTypeMismatch
57
+ end
58
+
59
+ it 'has to contain at least one destination' do
60
+ notification.destinations = []
61
+ expect(notification).to_not be_valid
62
+ end
63
+ end
64
+
65
+ describe 'sent' do
66
+ it 'is false by default' do
67
+ notification.save
68
+ expect(notification.sent).to eq false
69
+ end
70
+
71
+ it 'is sent if results assigned' do
72
+ notification.save
73
+ expect do
74
+ notification.results = FakeResults.new(1, 2, 3)
75
+ notification.save
76
+ end.to change { notification.reload.sent }.from(false).to true
77
+ end
78
+ end
79
+
80
+ describe 'results' do
81
+
82
+ let(:success) { 1 }
83
+ let(:failed) { 3 }
84
+ let(:results) { FakeResults.new 'abc', success, failed }
85
+
86
+ it 'serializes any object' do
87
+ notification.results = results
88
+ notification.save
89
+ notification.reload
90
+ expect(notification.results).to eq results
91
+ expect(notification.success).to eq success
92
+ expect(notification.failed).to eq failed
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,47 @@
1
+ require 'rails'
2
+ require 'rails/all'
3
+ require 'action_view/testing/resolvers'
4
+
5
+ require 'rails-push-notifications'
6
+
7
+ module RailsPushNotificationsApp
8
+ class Application < Rails::Application
9
+ config.root = File.expand_path("../../..", __FILE__)
10
+ config.cache_classes = true
11
+
12
+ config.eager_load = false
13
+ config.static_cache_control = "public, max-age=3600"
14
+
15
+ config.consider_all_requests_local = true
16
+ config.action_controller.perform_caching = false
17
+
18
+ config.action_dispatch.show_exceptions = false
19
+
20
+ config.action_controller.allow_forgery_protection = false
21
+
22
+ config.active_support.deprecation = :stderr
23
+
24
+ config.middleware.delete "Rack::Lock"
25
+ config.middleware.delete "ActionDispatch::Flash"
26
+ config.middleware.delete "ActionDispatch::BestStandardsSupport"
27
+ config.secret_key_base = '49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk'
28
+ routes.append do
29
+ get "/" => "application#index"
30
+ end
31
+ end
32
+ end
33
+
34
+ class ApplicationController < ActionController::Base
35
+ include Rails.application.routes.url_helpers
36
+ layout 'application'
37
+ self.view_paths = [ActionView::FixtureResolver.new(
38
+ "layouts/application.html.erb" => '<%= yield %>',
39
+ "welcome/index.html.erb"=> 'Hello from index.html.erb',
40
+ )]
41
+
42
+ def index
43
+ end
44
+
45
+ end
46
+
47
+ RailsPushNotificationsApp::Application.initialize!
@@ -0,0 +1,45 @@
1
+
2
+ require 'codeclimate-test-reporter'
3
+ CodeClimate::TestReporter.start
4
+
5
+ Bundler.setup
6
+
7
+ ENV['RAILS_ENV'] = 'test'
8
+ ENV['DATABASE_URL'] = 'sqlite3::memory:'
9
+
10
+ require 'rails_apps/rails4'
11
+ require 'rspec/rails'
12
+ Bundler.require :default, :development
13
+ require 'webmock/rspec'
14
+ require 'ruby-push-notifications'
15
+
16
+ Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
17
+
18
+ require 'rails-push-notifications'
19
+
20
+ ActiveRecord::Base.establish_connection(
21
+ :adapter => 'sqlite3',
22
+ :database => ':memory:'
23
+ )
24
+
25
+ files = Dir.glob(File.join(File.dirname(__FILE__), '..', 'lib', 'generators', 'rails-push-notifications', 'templates', 'migrations', '*.rb'))
26
+
27
+ migrations = []
28
+ files.each_with_index do |file, version|
29
+ name, scope = file.scan(/([_a-z0-9]*)\.?([_a-z0-9]*)?\.rb\z/).first
30
+
31
+ name = name.camelize
32
+
33
+ migrations << ActiveRecord::MigrationProxy.new(name, version, file, scope)
34
+ end
35
+
36
+ migrations.sort_by(&:version)
37
+
38
+ ActiveRecord::Migrator.new(:up, migrations).migrate
39
+
40
+ RSpec.configure do |config|
41
+ config.use_transactional_fixtures = true
42
+ config.order = :random
43
+ end
44
+
45
+ WebMock.disable_net_connect!(:allow => "codeclimate.com")
@@ -0,0 +1,5 @@
1
+ RSpec.configure do |config|
2
+ config.include FactoryGirl::Syntax::Methods
3
+ end
4
+
5
+ FactoryGirl.find_definitions
metadata ADDED
@@ -0,0 +1,196 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails-push-notifications
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Carlos Alonso
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ruby-push-notifications
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: factory_girl
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '4.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: generator_spec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.9'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.9'
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.20'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.20'
125
+ description: Free Open Source Rails gem for performing push notifications for both
126
+ iOS and Android devices
127
+ email:
128
+ - info@mrcalonso.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - MIT-LICENSE
134
+ - README.md
135
+ - Rakefile
136
+ - lib/generators/rails-push-notifications/USAGE
137
+ - lib/generators/rails-push-notifications/migrations_generator.rb
138
+ - lib/generators/rails-push-notifications/templates/migrations/create_rails_push_notifications_apps.rb
139
+ - lib/generators/rails-push-notifications/templates/migrations/create_rails_push_notifications_notifications.rb
140
+ - lib/rails-push-notifications.rb
141
+ - lib/rails-push-notifications/apps.rb
142
+ - lib/rails-push-notifications/apps/apns_app.rb
143
+ - lib/rails-push-notifications/apps/base_app.rb
144
+ - lib/rails-push-notifications/apps/gcm_app.rb
145
+ - lib/rails-push-notifications/apps/mpns_app.rb
146
+ - lib/rails-push-notifications/notification.rb
147
+ - lib/rails-push-notifications/rails_push_notifications_railtie.rb
148
+ - lib/rails-push-notifications/version.rb
149
+ - spec/apps/apns_app_spec.rb
150
+ - spec/apps/gcm_app_spec.rb
151
+ - spec/apps/mpns_app_spec.rb
152
+ - spec/factories/apps.rb
153
+ - spec/factories/notifications.rb
154
+ - spec/generators/migrations_generator_spec.rb
155
+ - spec/log/test.log
156
+ - spec/notification_spec.rb
157
+ - spec/rails_apps/rails4.rb
158
+ - spec/spec_helper.rb
159
+ - spec/support/factory_girl.rb
160
+ homepage: https://github.com/calonso/rails-push-notifications
161
+ licenses:
162
+ - MIT
163
+ metadata: {}
164
+ post_install_message:
165
+ rdoc_options: []
166
+ require_paths:
167
+ - lib
168
+ required_ruby_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 1.9.3
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ requirements: []
179
+ rubyforge_project:
180
+ rubygems_version: 2.2.2
181
+ signing_key:
182
+ specification_version: 4
183
+ summary: Professional iOS and Android push notifications for Ruby on Rails
184
+ test_files:
185
+ - spec/apps/apns_app_spec.rb
186
+ - spec/apps/gcm_app_spec.rb
187
+ - spec/apps/mpns_app_spec.rb
188
+ - spec/factories/apps.rb
189
+ - spec/factories/notifications.rb
190
+ - spec/generators/migrations_generator_spec.rb
191
+ - spec/log/test.log
192
+ - spec/notification_spec.rb
193
+ - spec/rails_apps/rails4.rb
194
+ - spec/spec_helper.rb
195
+ - spec/support/factory_girl.rb
196
+ has_rdoc: