notify_user 0.0.1 → 0.0.5

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.
Files changed (79) hide show
  1. checksums.yaml +7 -0
  2. data/app/assets/javascripts/notify_user/notification.js +7 -0
  3. data/app/assets/stylesheets/notify_user/notify_user.css +50 -0
  4. data/app/controllers/notify_user/base_notifications_controller.rb +144 -0
  5. data/app/controllers/notify_user/notifications_controller.rb +7 -32
  6. data/app/helpers/notify_user/application_helper.rb +9 -0
  7. data/app/mailers/notify_user/notification_mailer.rb +2 -0
  8. data/app/models/notify_user/apns.rb +37 -0
  9. data/app/models/notify_user/base_notification.rb +136 -32
  10. data/app/models/notify_user/unsubscribe.rb +55 -0
  11. data/app/models/notify_user/user_hash.rb +36 -0
  12. data/app/serializers/notify_user/notification_serializer.rb +2 -2
  13. data/app/views/notify_user/action_mailer/aggregate_notification.html.erb +2 -1
  14. data/app/views/notify_user/action_mailer/notification.html.erb +1 -1
  15. data/app/views/notify_user/base_notifications/index.html.erb +20 -0
  16. data/app/views/notify_user/base_notifications/unsubscribe.html.erb +19 -0
  17. data/config/routes.rb +8 -0
  18. data/lib/generators/notify_user/install/install_generator.rb +20 -3
  19. data/lib/generators/notify_user/install/templates/{migration.rb → create_notify_user_notifications.rb} +1 -1
  20. data/lib/generators/notify_user/install/templates/create_notify_user_unsubscribes.rb +10 -0
  21. data/lib/generators/notify_user/install/templates/create_notify_user_user_hashes.rb +12 -0
  22. data/lib/generators/notify_user/install/templates/initializer.rb +2 -0
  23. data/lib/generators/notify_user/install/templates/notifications_controller.rb +9 -0
  24. data/lib/generators/notify_user/json_update/USAGE +5 -0
  25. data/lib/generators/notify_user/json_update/json_update_generator.rb +36 -0
  26. data/lib/generators/notify_user/json_update/templates/add_json_column_to_notifications.rb +9 -0
  27. data/lib/generators/notify_user/json_update/templates/move_params_to_json.rb +8 -0
  28. data/lib/generators/notify_user/notification/notification_generator.rb +2 -0
  29. data/lib/generators/notify_user/notification/templates/email_layout_template.html.erb.erb +6 -0
  30. data/lib/generators/notify_user/notification/templates/notification.rb.erb +2 -1
  31. data/lib/notify_user.rb +4 -1
  32. data/lib/notify_user/channels/action_mailer/action_mailer_channel.rb +2 -1
  33. data/lib/notify_user/channels/apns/apns_channel.rb +17 -0
  34. data/lib/notify_user/engine.rb +2 -0
  35. data/lib/notify_user/railtie.rb +10 -0
  36. data/lib/notify_user/version.rb +1 -1
  37. data/lib/tasks/notify_user.rake +15 -0
  38. data/spec/controllers/notify_user/notifications_controller_spec.rb +89 -1
  39. data/spec/dummy/rails-4.0.2/Gemfile +2 -2
  40. data/spec/dummy/rails-4.0.2/app/controllers/notify_user/notifications_controller.rb +9 -0
  41. data/spec/dummy/rails-4.0.2/app/notifications/new_post_notification.rb +2 -1
  42. data/spec/dummy/rails-4.0.2/app/views/notify_user/layouts/action_mailer.html.erb +6 -0
  43. data/spec/dummy/rails-4.0.2/config/database.yml +42 -13
  44. data/spec/dummy/rails-4.0.2/config/database2.yml +57 -0
  45. data/spec/dummy/rails-4.0.2/config/initializers/notify_user.rb +2 -0
  46. data/spec/dummy/rails-4.0.2/config/initializers/secret_token.rb +1 -1
  47. data/spec/dummy/rails-4.0.2/db/migrate/{20140105070446_create_users.rb → 20140428015529_create_users.rb} +0 -0
  48. data/spec/dummy/rails-4.0.2/db/migrate/{20140105070448_create_notify_user_notifications.rb → 20140428015531189189694000_create_notify_user_notifications.rb} +1 -1
  49. data/spec/dummy/rails-4.0.2/db/migrate/20140428015531190190743000_create_notify_user_unsubscribes.rb +10 -0
  50. data/spec/dummy/rails-4.0.2/db/migrate/20140428015531191191953000_create_notify_user_user_hashes.rb +12 -0
  51. data/spec/dummy/rails-4.0.2/db/schema.rb +23 -2
  52. data/spec/dummy/rails-4.0.2/log/test.log +787 -1414
  53. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/13195a56ea8581e42f709ea01ea4604f +0 -0
  54. data/{app/assets/stylesheets/notify_user/application.css → spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705} +0 -0
  55. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/148f39f7dc2ea6cb194598111dbd4598 +0 -0
  56. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/1d6bc1877ba2bbb89f393e10e8303d39 +0 -0
  57. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  58. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/311d2b645a860b78f79ff156f12092ce +0 -0
  59. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  60. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/39651f0f2ac78423732234ebf092c632 +0 -0
  61. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/5c85b1b5ac27b699c5f800c4e7ec82fb +0 -0
  62. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/68752c7ddc300bee3e9823db8befc306 +0 -0
  63. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/6961013077b8573ed19d1e33abb8ebc5 +0 -0
  64. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/7a316b3629b980c6d3a28924cb5fbbd8 +0 -0
  65. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/8698d6fed0ef2f173a377160752b959f +0 -0
  66. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/8bab520aad78da438df1c428288cf229 +0 -0
  67. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  68. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  69. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  70. data/spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/fa138a16887e031c0ae1b4caccfb4c05 +0 -0
  71. data/spec/mailers/notify_user/notification_mailer_spec.rb +1 -0
  72. data/spec/models/notify_user/notification_spec.rb +122 -1
  73. data/spec/models/notify_user/unsubscribe_spec.rb +40 -0
  74. data/spec/models/notify_user/user_hash_spec.rb +35 -0
  75. data/spec/spec_helper.rb +5 -0
  76. data/spec/support/database.yml +21 -0
  77. data/spec/support/rails_template.rb +9 -0
  78. metadata +196 -65
  79. data/spec/dummy/rails-4.0.2/db/test.sqlite3 +0 -0
@@ -24,6 +24,7 @@ describe NotifyUser::NotificationMailer do
24
24
  end
25
25
 
26
26
  it "renders with a layout" do
27
+ NotifyUser::NotificationMailer.any_instance.stub(:notification).and_return(notification)
27
28
  mail.body.raw_source.should include "This is the default generated layout"
28
29
  end
29
30
 
@@ -5,6 +5,52 @@ module NotifyUser
5
5
 
6
6
  let(:user) { User.create({email: "user@example.com" })}
7
7
  let(:notification) { NewPostNotification.create({target: user}) }
8
+ Rails.application.routes.default_url_options[:host]= 'localhost:5000'
9
+
10
+ before :each do
11
+ BaseNotification.any_instance.stub(:mobile_message).and_return("New Notification")
12
+ BaseNotification.channel(:apns, {aggregate_per: false})
13
+ end
14
+
15
+ describe "params" do
16
+
17
+ it "doesn't fail if searching for param variable that doesn't exist" do
18
+ notification.params[:unknown].should eq nil
19
+ end
20
+
21
+ it "doesn't fail if searching for a param that doesn't exist if other params are present" do
22
+ notification.params = {name: "hello_world"}
23
+ notification.params[:unknown].should eq nil
24
+ end
25
+
26
+ it "can reference params using string when submitted as json" do
27
+ notification.params = {"listing_id" => 1}
28
+ notification.save
29
+
30
+ NewPostNotification.last.params["listing_id"].should eq 1
31
+ end
32
+
33
+ it "can reference params using symbol when submitted as json" do
34
+ notification.params = {"listing_id" => 1}
35
+ notification.save
36
+
37
+ NewPostNotification.last.params[:listing_id].should eq 1
38
+ end
39
+
40
+ it "can reference params using symbol when submitted as hash" do
41
+ notification.params = {:listing_id => 1}
42
+ notification.save
43
+
44
+ NewPostNotification.last.params[:listing_id].should eq 1
45
+ end
46
+
47
+ it "can reference params using string when subbmited as hash" do
48
+ notification.params = {:listing_id => 1}
49
+ notification.save
50
+
51
+ NewPostNotification.last.params["listing_id"].should eq 1
52
+ end
53
+ end
8
54
 
9
55
  describe "#notify" do
10
56
 
@@ -20,6 +66,7 @@ module NotifyUser
20
66
  .with(notification.class.aggregate_per)
21
67
  .and_call_original
22
68
  ActionMailerChannel.should_receive(:deliver)
69
+ Apns.should_receive(:push_notification)
23
70
  notification.notify
24
71
  end
25
72
 
@@ -47,12 +94,47 @@ module NotifyUser
47
94
 
48
95
  it "sends a singular email if no more notifications were queued since the original was delayed" do
49
96
  Sidekiq::Testing.inline!
50
-
97
+ Apns.should_receive(:push_notification)
51
98
  NotificationMailer.should_receive(:notification_email).with(notification, anything).and_call_original
52
99
  BaseNotification.notify_aggregated(notification.id)
53
100
  end
54
101
 
55
102
  end
103
+
104
+ describe ".delovery_notification_channel" do
105
+
106
+ it "doesn't send if unsubscribed from channel" do
107
+ unsubscribe = NotifyUser::Unsubscribe.create({target: user, type: "NewPostNotification"})
108
+ ActionMailerChannel.should_not_receive(:deliver)
109
+ BaseNotification.deliver_notification_channel(notification.id, "action_mailer")
110
+ end
111
+
112
+ it "does send if subscribed to channel" do
113
+ ActionMailerChannel.should_receive(:deliver)
114
+ BaseNotification.deliver_notification_channel(notification.id, "action_mailer")
115
+ end
116
+
117
+ end
118
+
119
+ describe " .notify_aggregated_channel" do
120
+
121
+ it "sends an aggregated email if more than one notification queued up" do
122
+ Sidekiq::Testing.inline!
123
+
124
+ NewPostNotification.create({target: user, type: 'NewPostNotification'})
125
+
126
+ BaseNotification.should_receive(:deliver_notifications_channel).and_call_original
127
+ BaseNotification.notify_aggregated_channel(notification.id, 'action_mailer')
128
+ end
129
+
130
+ it "sends a single email if more not pending notifications" do
131
+ Sidekiq::Testing.inline!
132
+
133
+ BaseNotification.should_receive(:deliver_notification_channel).and_call_original
134
+ BaseNotification.notify_aggregated_channel(notification.id, 'action_mailer')
135
+ end
136
+ end
137
+
56
138
  end
57
139
 
58
140
  end
@@ -60,12 +142,51 @@ module NotifyUser
60
142
  describe "#notify!" do
61
143
 
62
144
  it "sends immediately, ignoring aggregation" do
145
+ Apns.should_receive(:push_notification)
63
146
  BaseNotification.should_not_receive(:delay_for)
64
147
  ActionMailerChannel.should_receive(:deliver)
65
148
  notification.notify!
66
149
  end
67
150
 
151
+ it "doesn't send if unsubscribed from type" do
152
+ unsubscribe = NotifyUser::Unsubscribe.create({target: user, type: "NewPostNotification"})
153
+ ActionMailerChannel.should_not_receive(:deliver)
154
+ ApnsChannel.should_not_receive(:deliver)
155
+
156
+ notification.notify!
157
+
158
+ end
159
+
160
+ it "doesn't send if unsubscribed from mailer channel" do
161
+ unsubscribe = NotifyUser::Unsubscribe.create({target: user, type: "action_mailer"})
162
+ ActionMailerChannel.should_not_receive(:deliver)
163
+ ApnsChannel.should_receive(:deliver)
164
+ notification.notify!
165
+ end
166
+
68
167
  end
69
168
 
169
+ describe "generate hash" do
170
+ it "creates a new hash if an active hash doesn't already exist" do
171
+ user_hash = notification.generate_unsubscribe_hash
172
+ user_hash.should_not eq nil
173
+ end
174
+
175
+ it "uses the old hash if an active hash already exists" do
176
+ user_hash = notification.generate_unsubscribe_hash
177
+
178
+ another_hash = notification.generate_unsubscribe_hash
179
+ another_hash.token.should eq user_hash.token
180
+ end
181
+
182
+ it "creates a new hash if no active hash exists" do
183
+ user_hash = notification.generate_unsubscribe_hash
184
+ user_hash.deactivate
185
+
186
+ another_hash = notification.generate_unsubscribe_hash
187
+ another_hash.token.should_not eq user_hash.token
188
+
189
+ end
190
+ end
70
191
  end
71
192
  end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ module NotifyUser
4
+ describe Unsubscribe do
5
+
6
+ let(:user) { User.create({email: "user@example.com" })}
7
+ let(:notification) { NotifyUser.send_notification('new_post_notification').to(user).with(name: "Mr. Blobby") }
8
+ let(:unsubscribe) { NotifyUser::Unsubscribe.create({target: user, type: "NewPostNotification"}) }
9
+
10
+
11
+ describe "unsubscribed" do
12
+ before :each do
13
+ unsubscribe.save
14
+ end
15
+
16
+ it "doesn't create notification object if unsubscribed" do
17
+ notification.save
18
+ notification.errors[:target].first.should eq " has unsubscribed from this type"
19
+ end
20
+
21
+ it "doesnt create object if notification type isn't unsubscribable" do
22
+ unsubscribe = NotifyUser::Unsubscribe.create({target: user, type: "UnsubscribableNotification"})
23
+ NotifyUser::Unsubscribe.last.type.should_not eq "UnsubscribableNotification"
24
+ end
25
+
26
+ it "toggles the status of a subscription" do
27
+ unsubscribe = NotifyUser::Unsubscribe.create({target: user, type: "NewPostNotification"})
28
+ NotifyUser::Unsubscribe.toggle_status(user, "NewPostNotification")
29
+ NotifyUser::Unsubscribe.has_unsubscribed_from(user, 'NewPostNotification').should eq []
30
+ end
31
+ end
32
+
33
+ describe "subscribed" do
34
+ it "creates notification if subscribed" do
35
+ notification.save
36
+ notification.errors.count.should eq 0
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ module NotifyUser
4
+ describe UserHash do
5
+
6
+ let(:user) { User.create({email: "user@example.com" })}
7
+ let(:user_hash) { NotifyUser::UserHash.create({target: user, type: "NewPostNotification"})}
8
+
9
+ describe "check hash" do
10
+ before :each do
11
+ user_hash.save
12
+ end
13
+
14
+ it "returns true if hash hasn't be used before" do
15
+ NotifyUser::UserHash.confirm_hash(user_hash.token,"NewPostNotification").should eq true
16
+ end
17
+
18
+ it "returns false if hash has been used before" do
19
+ user_hash.deactivate
20
+ NotifyUser::UserHash.confirm_hash(user_hash.token,"NewPostNotification").should eq false
21
+ end
22
+
23
+ it "deactivates hash setting active to false" do
24
+ user_hash.deactivate
25
+ user_hash.active.should eq false
26
+ end
27
+
28
+ it "generates a 44 character hash on create" do
29
+ user_hash.token.length.should eq 44
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
data/spec/spec_helper.rb CHANGED
@@ -11,6 +11,8 @@ Bundler.setup
11
11
  ENV['RAILS_ENV'] = 'test'
12
12
  ENV['RAILS_ROOT'] = File.expand_path("../dummy/rails-#{ENV['RAILS_VERSION']}", __FILE__)
13
13
 
14
+
15
+
14
16
  # Create the test app if it doesn't exists
15
17
  unless File.exists?(ENV['RAILS_ROOT'])
16
18
  system 'rake setup'
@@ -23,8 +25,11 @@ require File.expand_path("#{ENV['RAILS_ROOT']}/config/environment.rb", __FILE__
23
25
  puts "Testing with Rails #{Rails::VERSION::STRING} and Ruby #{RUBY_VERSION}"
24
26
 
25
27
  require 'rspec/rails'
28
+ require 'capybara/rails'
26
29
  require 'factory_girl_rails'
27
30
  require 'sidekiq/testing'
31
+ require "awesome_print"
32
+
28
33
  Sidekiq::Testing.inline!
29
34
 
30
35
  RSpec.configure do |config|
@@ -0,0 +1,21 @@
1
+ development:
2
+ adapter: postgresql
3
+ encoding: unicode
4
+ database: notify_user_development
5
+ pool: 5
6
+ timeout: 5000
7
+
8
+ test:
9
+ adapter: postgresql
10
+ encoding: unicode
11
+ database: notify_user_test
12
+ pool: 5
13
+ timeout: 5000
14
+
15
+
16
+ production:
17
+ adapter: postgresql
18
+ encoding: unicode
19
+ database: notify_user_production
20
+ pool: 5
21
+ timeout: 5000
@@ -1,8 +1,17 @@
1
+ #removes the username and password fields from database.yml
2
+ system("cat #{ENV['RAILS_ROOT']}/config/database.yml | grep -v 'username' > #{ENV['RAILS_ROOT']}/config/database2.yml ")
3
+ system("cat #{ENV['RAILS_ROOT']}/config/database2.yml | grep -v 'password' > #{ENV['RAILS_ROOT']}/config/database.yml ")
4
+
5
+ rake "db:drop:all"
6
+ rake "db:create:all"
7
+
1
8
  generate :model, 'user email:string'
2
9
 
3
10
  generate "notify_user:install"
4
11
  generate "notify_user:notification NewPostNotification"
5
12
 
13
+ gem_dir = File.expand_path('..',File.dirname(__FILE__))
14
+
6
15
  # Finalise
7
16
  rake "db:migrate"
8
17
  rake "db:test:prepare"
metadata CHANGED
@@ -1,115 +1,183 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notify_user
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Tom Spacek
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-01-15 00:00:00.000000000 Z
11
+ date: 2014-04-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
- requirement: &70361717136460 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.2'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70361717136460
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '3.2'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: state_machine
27
- requirement: &70361717135940 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *70361717135940
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: sidekiq
38
- requirement: &70361717135380 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ">="
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *70361717135380
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: kaminari
49
- requirement: &70361717134840 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - ">="
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :runtime
56
63
  prerelease: false
57
- version_requirements: *70361717134840
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: active_model_serializers
60
- requirement: &70361717134340 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - ">="
64
74
  - !ruby/object:Gem::Version
65
75
  version: '0'
66
76
  type: :runtime
67
77
  prerelease: false
68
- version_requirements: *70361717134340
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: sqlite3
71
- requirement: &70361717133820 !ruby/object:Gem::Requirement
72
- none: false
84
+ name: urbanairship
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
- - - ! '>='
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pg
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
75
102
  - !ruby/object:Gem::Version
76
103
  version: '0'
77
104
  type: :development
78
105
  prerelease: false
79
- version_requirements: *70361717133820
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
80
111
  - !ruby/object:Gem::Dependency
81
112
  name: rspec-rails
82
- requirement: &70361717133300 !ruby/object:Gem::Requirement
83
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
84
114
  requirements:
85
- - - ! '>='
115
+ - - ">="
86
116
  - !ruby/object:Gem::Version
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *70361717133300
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
91
125
  - !ruby/object:Gem::Dependency
92
126
  name: rspec-sidekiq
93
- requirement: &70361717132760 !ruby/object:Gem::Requirement
94
- none: false
127
+ requirement: !ruby/object:Gem::Requirement
95
128
  requirements:
96
- - - ! '>='
129
+ - - ">="
97
130
  - !ruby/object:Gem::Version
98
131
  version: '0'
99
132
  type: :development
100
133
  prerelease: false
101
- version_requirements: *70361717132760
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
102
139
  - !ruby/object:Gem::Dependency
103
140
  name: factory_girl_rails
104
- requirement: &70361717132260 !ruby/object:Gem::Requirement
105
- none: false
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: capybara
155
+ requirement: !ruby/object:Gem::Requirement
106
156
  requirements:
107
- - - ! '>='
157
+ - - ">="
108
158
  - !ruby/object:Gem::Version
109
159
  version: '0'
110
160
  type: :development
111
161
  prerelease: false
112
- version_requirements: *70361717132260
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: awesome_print
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
113
181
  description: Drop-in solution for user notifications. Handles notifying by email,
114
182
  SMS and APNS, plus per-user notification frequency settings and views for checking
115
183
  new notifications.
@@ -119,38 +187,59 @@ executables: []
119
187
  extensions: []
120
188
  extra_rdoc_files: []
121
189
  files:
190
+ - MIT-LICENSE
191
+ - README.rdoc
192
+ - Rakefile
122
193
  - app/assets/javascripts/notify_user/application.js
123
- - app/assets/stylesheets/notify_user/application.css
194
+ - app/assets/javascripts/notify_user/notification.js
195
+ - app/assets/stylesheets/notify_user/notify_user.css
196
+ - app/controllers/notify_user/base_notifications_controller.rb
124
197
  - app/controllers/notify_user/notifications_controller.rb
125
198
  - app/helpers/notify_user/application_helper.rb
126
199
  - app/mailers/notify_user/notification_mailer.rb
200
+ - app/models/notify_user/apns.rb
127
201
  - app/models/notify_user/base_notification.rb
202
+ - app/models/notify_user/unsubscribe.rb
203
+ - app/models/notify_user/user_hash.rb
128
204
  - app/serializers/notify_user/notification_serializer.rb
129
205
  - app/views/layouts/notify_user/application.html.erb
130
206
  - app/views/notify_user/action_mailer/aggregate_notification.html.erb
131
207
  - app/views/notify_user/action_mailer/notification.html.erb
208
+ - app/views/notify_user/base_notifications/index.html.erb
209
+ - app/views/notify_user/base_notifications/unsubscribe.html.erb
132
210
  - config/routes.rb
211
+ - lib/generators/notify_user/install/USAGE
133
212
  - lib/generators/notify_user/install/install_generator.rb
213
+ - lib/generators/notify_user/install/templates/create_notify_user_notifications.rb
214
+ - lib/generators/notify_user/install/templates/create_notify_user_unsubscribes.rb
215
+ - lib/generators/notify_user/install/templates/create_notify_user_user_hashes.rb
134
216
  - lib/generators/notify_user/install/templates/initializer.rb
135
- - lib/generators/notify_user/install/templates/migration.rb
136
- - lib/generators/notify_user/install/USAGE
217
+ - lib/generators/notify_user/install/templates/notifications_controller.rb
218
+ - lib/generators/notify_user/json_update/USAGE
219
+ - lib/generators/notify_user/json_update/json_update_generator.rb
220
+ - lib/generators/notify_user/json_update/templates/add_json_column_to_notifications.rb
221
+ - lib/generators/notify_user/json_update/templates/move_params_to_json.rb
222
+ - lib/generators/notify_user/notification/USAGE
137
223
  - lib/generators/notify_user/notification/notification_generator.rb
138
224
  - lib/generators/notify_user/notification/templates/email_layout_template.html.erb.erb
139
225
  - lib/generators/notify_user/notification/templates/email_template.html.erb.erb
140
226
  - lib/generators/notify_user/notification/templates/mobile_sdk_template.html.erb.erb
141
227
  - lib/generators/notify_user/notification/templates/notification.rb.erb
142
- - lib/generators/notify_user/notification/USAGE
228
+ - lib/notify_user.rb
143
229
  - lib/notify_user/channels/action_mailer/action_mailer_channel.rb
230
+ - lib/notify_user/channels/apns/apns_channel.rb
144
231
  - lib/notify_user/engine.rb
232
+ - lib/notify_user/railtie.rb
145
233
  - lib/notify_user/version.rb
146
- - lib/notify_user.rb
147
- - MIT-LICENSE
148
- - Rakefile
149
- - README.rdoc
234
+ - lib/tasks/notify_user.rake
150
235
  - spec/controllers/notify_user/notifications_controller_spec.rb
236
+ - spec/dummy/rails-4.0.2/Gemfile
237
+ - spec/dummy/rails-4.0.2/README.rdoc
238
+ - spec/dummy/rails-4.0.2/Rakefile
151
239
  - spec/dummy/rails-4.0.2/app/assets/javascripts/application.js
152
240
  - spec/dummy/rails-4.0.2/app/assets/stylesheets/application.css
153
241
  - spec/dummy/rails-4.0.2/app/controllers/application_controller.rb
242
+ - spec/dummy/rails-4.0.2/app/controllers/notify_user/notifications_controller.rb
154
243
  - spec/dummy/rails-4.0.2/app/helpers/application_helper.rb
155
244
  - spec/dummy/rails-4.0.2/app/models/user.rb
156
245
  - spec/dummy/rails-4.0.2/app/notifications/new_post_notification.rb
@@ -161,9 +250,11 @@ files:
161
250
  - spec/dummy/rails-4.0.2/bin/bundle
162
251
  - spec/dummy/rails-4.0.2/bin/rails
163
252
  - spec/dummy/rails-4.0.2/bin/rake
253
+ - spec/dummy/rails-4.0.2/config.ru
164
254
  - spec/dummy/rails-4.0.2/config/application.rb
165
255
  - spec/dummy/rails-4.0.2/config/boot.rb
166
256
  - spec/dummy/rails-4.0.2/config/database.yml
257
+ - spec/dummy/rails-4.0.2/config/database2.yml
167
258
  - spec/dummy/rails-4.0.2/config/environment.rb
168
259
  - spec/dummy/rails-4.0.2/config/environments/development.rb
169
260
  - spec/dummy/rails-4.0.2/config/environments/production.rb
@@ -178,61 +269,79 @@ files:
178
269
  - spec/dummy/rails-4.0.2/config/initializers/wrap_parameters.rb
179
270
  - spec/dummy/rails-4.0.2/config/locales/en.yml
180
271
  - spec/dummy/rails-4.0.2/config/routes.rb
181
- - spec/dummy/rails-4.0.2/config.ru
182
- - spec/dummy/rails-4.0.2/db/migrate/20140105070446_create_users.rb
183
- - spec/dummy/rails-4.0.2/db/migrate/20140105070448_create_notify_user_notifications.rb
272
+ - spec/dummy/rails-4.0.2/db/migrate/20140428015529_create_users.rb
273
+ - spec/dummy/rails-4.0.2/db/migrate/20140428015531189189694000_create_notify_user_notifications.rb
274
+ - spec/dummy/rails-4.0.2/db/migrate/20140428015531190190743000_create_notify_user_unsubscribes.rb
275
+ - spec/dummy/rails-4.0.2/db/migrate/20140428015531191191953000_create_notify_user_user_hashes.rb
184
276
  - spec/dummy/rails-4.0.2/db/schema.rb
185
277
  - spec/dummy/rails-4.0.2/db/seeds.rb
186
- - spec/dummy/rails-4.0.2/db/test.sqlite3
187
- - spec/dummy/rails-4.0.2/Gemfile
188
278
  - spec/dummy/rails-4.0.2/log/test.log
189
279
  - spec/dummy/rails-4.0.2/public/404.html
190
280
  - spec/dummy/rails-4.0.2/public/422.html
191
281
  - spec/dummy/rails-4.0.2/public/500.html
192
282
  - spec/dummy/rails-4.0.2/public/favicon.ico
193
283
  - spec/dummy/rails-4.0.2/public/robots.txt
194
- - spec/dummy/rails-4.0.2/Rakefile
195
- - spec/dummy/rails-4.0.2/README.rdoc
196
284
  - spec/dummy/rails-4.0.2/test/fixtures/users.yml
197
285
  - spec/dummy/rails-4.0.2/test/models/user_test.rb
198
286
  - spec/dummy/rails-4.0.2/test/test_helper.rb
287
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/13195a56ea8581e42f709ea01ea4604f
288
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
289
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/148f39f7dc2ea6cb194598111dbd4598
290
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/1d6bc1877ba2bbb89f393e10e8303d39
291
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
292
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/311d2b645a860b78f79ff156f12092ce
293
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
294
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/39651f0f2ac78423732234ebf092c632
295
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/5c85b1b5ac27b699c5f800c4e7ec82fb
296
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/68752c7ddc300bee3e9823db8befc306
297
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/6961013077b8573ed19d1e33abb8ebc5
298
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/7a316b3629b980c6d3a28924cb5fbbd8
299
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/8698d6fed0ef2f173a377160752b959f
300
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/8bab520aad78da438df1c428288cf229
301
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
302
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
303
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
304
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/fa138a16887e031c0ae1b4caccfb4c05
199
305
  - spec/factories/notify_user_notifications.rb
200
306
  - spec/fixtures/notify_user/notification_mailer/notification_email
201
307
  - spec/mailers/notify_user/notification_mailer_spec.rb
202
308
  - spec/models/notify_user/notification_spec.rb
309
+ - spec/models/notify_user/unsubscribe_spec.rb
310
+ - spec/models/notify_user/user_hash_spec.rb
203
311
  - spec/serializers/notify_user/notification_serializer_spec.rb
204
312
  - spec/setup_spec.rb
205
313
  - spec/spec_helper.rb
314
+ - spec/support/database.yml
206
315
  - spec/support/rails_template.rb
207
316
  homepage: http://www.papercloud.com.au
208
317
  licenses: []
318
+ metadata: {}
209
319
  post_install_message:
210
320
  rdoc_options: []
211
321
  require_paths:
212
322
  - lib
213
323
  required_ruby_version: !ruby/object:Gem::Requirement
214
- none: false
215
324
  requirements:
216
- - - ! '>='
325
+ - - ">="
217
326
  - !ruby/object:Gem::Version
218
327
  version: '0'
219
328
  required_rubygems_version: !ruby/object:Gem::Requirement
220
- none: false
221
329
  requirements:
222
- - - ! '>='
330
+ - - ">="
223
331
  - !ruby/object:Gem::Version
224
332
  version: '0'
225
333
  requirements: []
226
334
  rubyforge_project:
227
- rubygems_version: 1.8.15
335
+ rubygems_version: 2.2.2
228
336
  signing_key:
229
- specification_version: 3
337
+ specification_version: 4
230
338
  summary: A Rails engine for user notifications.
231
339
  test_files:
232
340
  - spec/controllers/notify_user/notifications_controller_spec.rb
233
341
  - spec/dummy/rails-4.0.2/app/assets/javascripts/application.js
234
342
  - spec/dummy/rails-4.0.2/app/assets/stylesheets/application.css
235
343
  - spec/dummy/rails-4.0.2/app/controllers/application_controller.rb
344
+ - spec/dummy/rails-4.0.2/app/controllers/notify_user/notifications_controller.rb
236
345
  - spec/dummy/rails-4.0.2/app/helpers/application_helper.rb
237
346
  - spec/dummy/rails-4.0.2/app/models/user.rb
238
347
  - spec/dummy/rails-4.0.2/app/notifications/new_post_notification.rb
@@ -246,6 +355,7 @@ test_files:
246
355
  - spec/dummy/rails-4.0.2/config/application.rb
247
356
  - spec/dummy/rails-4.0.2/config/boot.rb
248
357
  - spec/dummy/rails-4.0.2/config/database.yml
358
+ - spec/dummy/rails-4.0.2/config/database2.yml
249
359
  - spec/dummy/rails-4.0.2/config/environment.rb
250
360
  - spec/dummy/rails-4.0.2/config/environments/development.rb
251
361
  - spec/dummy/rails-4.0.2/config/environments/production.rb
@@ -261,11 +371,12 @@ test_files:
261
371
  - spec/dummy/rails-4.0.2/config/locales/en.yml
262
372
  - spec/dummy/rails-4.0.2/config/routes.rb
263
373
  - spec/dummy/rails-4.0.2/config.ru
264
- - spec/dummy/rails-4.0.2/db/migrate/20140105070446_create_users.rb
265
- - spec/dummy/rails-4.0.2/db/migrate/20140105070448_create_notify_user_notifications.rb
374
+ - spec/dummy/rails-4.0.2/db/migrate/20140428015529_create_users.rb
375
+ - spec/dummy/rails-4.0.2/db/migrate/20140428015531189189694000_create_notify_user_notifications.rb
376
+ - spec/dummy/rails-4.0.2/db/migrate/20140428015531190190743000_create_notify_user_unsubscribes.rb
377
+ - spec/dummy/rails-4.0.2/db/migrate/20140428015531191191953000_create_notify_user_user_hashes.rb
266
378
  - spec/dummy/rails-4.0.2/db/schema.rb
267
379
  - spec/dummy/rails-4.0.2/db/seeds.rb
268
- - spec/dummy/rails-4.0.2/db/test.sqlite3
269
380
  - spec/dummy/rails-4.0.2/Gemfile
270
381
  - spec/dummy/rails-4.0.2/log/test.log
271
382
  - spec/dummy/rails-4.0.2/public/404.html
@@ -278,12 +389,32 @@ test_files:
278
389
  - spec/dummy/rails-4.0.2/test/fixtures/users.yml
279
390
  - spec/dummy/rails-4.0.2/test/models/user_test.rb
280
391
  - spec/dummy/rails-4.0.2/test/test_helper.rb
392
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/13195a56ea8581e42f709ea01ea4604f
393
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
394
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/148f39f7dc2ea6cb194598111dbd4598
395
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/1d6bc1877ba2bbb89f393e10e8303d39
396
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af
397
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/311d2b645a860b78f79ff156f12092ce
398
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953
399
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/39651f0f2ac78423732234ebf092c632
400
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/5c85b1b5ac27b699c5f800c4e7ec82fb
401
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/68752c7ddc300bee3e9823db8befc306
402
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/6961013077b8573ed19d1e33abb8ebc5
403
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/7a316b3629b980c6d3a28924cb5fbbd8
404
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/8698d6fed0ef2f173a377160752b959f
405
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/8bab520aad78da438df1c428288cf229
406
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
407
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
408
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
409
+ - spec/dummy/rails-4.0.2/tmp/cache/assets/test/sprockets/fa138a16887e031c0ae1b4caccfb4c05
281
410
  - spec/factories/notify_user_notifications.rb
282
411
  - spec/fixtures/notify_user/notification_mailer/notification_email
283
412
  - spec/mailers/notify_user/notification_mailer_spec.rb
284
413
  - spec/models/notify_user/notification_spec.rb
414
+ - spec/models/notify_user/unsubscribe_spec.rb
415
+ - spec/models/notify_user/user_hash_spec.rb
285
416
  - spec/serializers/notify_user/notification_serializer_spec.rb
286
417
  - spec/setup_spec.rb
287
418
  - spec/spec_helper.rb
419
+ - spec/support/database.yml
288
420
  - spec/support/rails_template.rb
289
- has_rdoc: