hertz 1.0.2 → 2.0.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.
Files changed (38) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +27 -42
  3. data/Rakefile +5 -3
  4. data/app/models/hertz/delivery.rb +1 -0
  5. data/app/models/hertz/notification.rb +2 -0
  6. data/db/migrate/20160415174901_create_hertz_notifications.rb +1 -1
  7. data/db/migrate/20160627084018_create_hertz_notification_deliveries.rb +1 -1
  8. data/db/migrate/20160628084342_rename_notification_deliveries_to_deliveries.rb +1 -1
  9. data/lib/generators/hertz/install_generator.rb +2 -1
  10. data/lib/generators/hertz/templates/initializer.rb +1 -0
  11. data/lib/hertz.rb +1 -0
  12. data/lib/hertz/engine.rb +1 -0
  13. data/lib/hertz/notifiable.rb +1 -0
  14. data/lib/hertz/notification_deliverer.rb +2 -1
  15. data/lib/hertz/version.rb +2 -1
  16. data/spec/dummy/config/database.travis.yml +4 -0
  17. data/spec/factories/hertz/deliveries.rb +3 -2
  18. data/spec/factories/hertz/notifications.rb +3 -2
  19. data/spec/factories/users.rb +2 -1
  20. data/spec/hertz/hertz_spec.rb +2 -1
  21. data/spec/hertz/notifiable_spec.rb +25 -26
  22. data/spec/hertz/notification_deliverer_spec.rb +40 -47
  23. data/spec/models/hertz/notification_spec.rb +67 -57
  24. data/spec/spec_helper.rb +3 -0
  25. data/spec/support/factory_bot.rb +5 -0
  26. metadata +57 -72
  27. data/app/assets/javascripts/hertz/application.js +0 -13
  28. data/app/assets/stylesheets/hertz/application.css +0 -15
  29. data/app/controllers/hertz/application_controller.rb +0 -6
  30. data/app/helpers/hertz/application_helper.rb +0 -5
  31. data/app/views/layouts/hertz/application.html.erb +0 -14
  32. data/spec/dummy/config/database.yml +0 -19
  33. data/spec/dummy/log/development.log +0 -61
  34. data/spec/dummy/log/test.log +0 -217
  35. data/spec/examples.txt +0 -20
  36. data/spec/models/hertz/delivery_spec.rb +0 -12
  37. data/spec/support/factory_girl.rb +0 -5
  38. data/spec/support/shoulda.rb +0 -8
@@ -1,81 +1,91 @@
1
1
  # frozen_string_literal: true
2
- module Hertz
3
- RSpec.describe Notification do
4
- subject { build(:notification) }
5
-
6
- describe '#read?' do
7
- it 'returns whether read_at is present' do
8
- expect {
9
- subject.read_at = Time.zone.now
10
- }.to change(subject, :read?).from(false).to(true)
11
- end
2
+
3
+ RSpec.describe Hertz::Notification do
4
+ subject { build(:notification) }
5
+
6
+ describe '#read?' do
7
+ it 'returns whether read_at is present' do
8
+ expect {
9
+ subject.read_at = Time.zone.now
10
+ }.to change(subject, :read?).from(false).to(true)
12
11
  end
12
+ end
13
13
 
14
- describe '#unread?' do
15
- it 'returns whether read_at is nil' do
16
- expect {
17
- subject.read_at = Time.zone.now
18
- }.to change(subject, :unread?).from(true).to(false)
19
- end
14
+ describe '#unread?' do
15
+ it 'returns whether read_at is nil' do
16
+ expect {
17
+ subject.read_at = Time.zone.now
18
+ }.to change(subject, :unread?).from(true).to(false)
20
19
  end
20
+ end
21
21
 
22
- describe '#mark_as_read' do
23
- subject { create(:notification) }
22
+ describe '#mark_as_read' do
23
+ subject { create(:notification) }
24
24
 
25
- it 'touches read_at' do
26
- expect {
27
- subject.mark_as_read
28
- }.to change(subject, :read_at).to(
29
- an_instance_of(ActiveSupport::TimeWithZone)
30
- )
31
- end
25
+ it 'touches read_at' do
26
+ expect {
27
+ subject.mark_as_read
28
+ }.to change(subject, :read_at).to(
29
+ an_instance_of(ActiveSupport::TimeWithZone)
30
+ )
32
31
  end
32
+ end
33
33
 
34
- describe '#mark_as_unread' do
35
- subject { create(:notification, :read) }
34
+ describe '#mark_as_unread' do
35
+ subject { create(:notification, :read) }
36
36
 
37
- it 'nullifies read_at' do
38
- expect {
39
- subject.mark_as_unread
40
- }.to change(subject, :read_at).to(nil)
41
- end
37
+ it 'nullifies read_at' do
38
+ expect {
39
+ subject.mark_as_unread
40
+ }.to change(subject, :read_at).to(nil)
42
41
  end
42
+ end
43
43
 
44
- describe '#delivered_with?' do
45
- subject { create(:notification) }
44
+ describe '#delivered_with?' do
45
+ subject { create(:notification) }
46
46
 
47
- it 'returns whether it has been delivered with that courier' do
48
- expect {
49
- create(:delivery, notification: subject, courier: :test)
50
- }.to change { subject.delivered_with?(:test) }.from(false).to(true)
51
- end
47
+ it 'returns whether it has been delivered with that courier' do
48
+ expect {
49
+ create(:delivery, notification: subject, courier: :test)
50
+ }.to change { subject.delivered_with?(:test) }.from(false).to(true)
52
51
  end
52
+ end
53
53
 
54
- describe '#mark_delivered_with' do
55
- subject { create(:notification) }
54
+ describe '#mark_delivered_with' do
55
+ subject { create(:notification) }
56
56
 
57
- it 'creates a delivery for that courier' do
58
- expect {
59
- subject.mark_delivered_with(:test)
60
- }.to change(subject.deliveries, :count).by(1)
61
- end
57
+ it 'creates a delivery for that courier' do
58
+ expect {
59
+ subject.mark_delivered_with(:test)
60
+ }.to change(subject.deliveries, :count).by(1)
62
61
  end
62
+ end
63
+
64
+ describe '.read' do
65
+ before { create(:notification) }
63
66
 
64
- describe '.unread' do
65
- let!(:unread_notification) { create(:notification) }
66
- let!(:read_notification) { create(:notification, :read) }
67
+ let!(:read_notification) { create(:notification, :read) }
67
68
 
68
- it 'returns the unread notifications' do
69
- expect(described_class.unread).to eq([unread_notification])
70
- end
69
+ it 'returns the unread notifications' do
70
+ expect(described_class.read).to eq([read_notification])
71
71
  end
72
+ end
73
+
74
+ describe '.unread' do
75
+ let!(:unread_notification) { create(:notification) }
72
76
 
73
- it 'delivers itself upon creation' do
74
- expect(Hertz::NotificationDeliverer).to receive(:deliver)
75
- .with(subject)
76
- .once
77
+ before { create(:notification, :read) }
77
78
 
78
- subject.save!
79
+ it 'returns the unread notifications' do
80
+ expect(described_class.unread).to eq([unread_notification])
79
81
  end
80
82
  end
83
+
84
+ it 'delivers itself upon creation' do
85
+ expect(Hertz::NotificationDeliverer).to receive(:deliver)
86
+ .with(subject)
87
+ .once
88
+
89
+ subject.save!
90
+ end
81
91
  end
@@ -16,6 +16,9 @@
16
16
  # users commonly want.
17
17
  #
18
18
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
+ require 'coveralls'
20
+ Coveralls.wear!
21
+
19
22
  RSpec.configure do |config|
20
23
  # rspec-expectations config goes here. You can use an alternate
21
24
  # assertion/expectation library such as wrong or the stdlib/minitest
@@ -0,0 +1,5 @@
1
+ require 'factory_bot_rails'
2
+
3
+ RSpec.configure do |config|
4
+ config.include FactoryBot::Syntax::Methods
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hertz
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alessandro Desantis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-19 00:00:00.000000000 Z
11
+ date: 2018-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -31,7 +31,7 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 6.0.0
33
33
  - !ruby/object:Gem::Dependency
34
- name: rubocop
34
+ name: coveralls
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
@@ -45,7 +45,7 @@ dependencies:
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
47
  - !ruby/object:Gem::Dependency
48
- name: rubocop-rspec
48
+ name: database_cleaner
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
@@ -59,7 +59,7 @@ dependencies:
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: rspec-rails
62
+ name: factory_bot_rails
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - ">="
@@ -73,7 +73,7 @@ dependencies:
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: fuubar
76
+ name: faker
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
@@ -87,7 +87,7 @@ dependencies:
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
- name: faker
90
+ name: fuubar
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="
@@ -101,21 +101,21 @@ dependencies:
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
- name: database_cleaner
104
+ name: pg
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">="
107
+ - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: '0.21'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ">="
114
+ - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '0'
116
+ version: '0.21'
117
117
  - !ruby/object:Gem::Dependency
118
- name: factory_girl_rails
118
+ name: rspec-rails
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - ">="
@@ -129,7 +129,7 @@ dependencies:
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  - !ruby/object:Gem::Dependency
132
- name: pg
132
+ name: rubocop
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - ">="
@@ -143,7 +143,7 @@ dependencies:
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
145
  - !ruby/object:Gem::Dependency
146
- name: shoulda-matchers
146
+ name: rubocop-rspec
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - ">="
@@ -166,13 +166,8 @@ files:
166
166
  - MIT-LICENSE
167
167
  - README.md
168
168
  - Rakefile
169
- - app/assets/javascripts/hertz/application.js
170
- - app/assets/stylesheets/hertz/application.css
171
- - app/controllers/hertz/application_controller.rb
172
- - app/helpers/hertz/application_helper.rb
173
169
  - app/models/hertz/delivery.rb
174
170
  - app/models/hertz/notification.rb
175
- - app/views/layouts/hertz/application.html.erb
176
171
  - config/routes.rb
177
172
  - db/migrate/20160415174901_create_hertz_notifications.rb
178
173
  - db/migrate/20160627084018_create_hertz_notification_deliveries.rb
@@ -202,7 +197,7 @@ files:
202
197
  - spec/dummy/config/application.rb
203
198
  - spec/dummy/config/boot.rb
204
199
  - spec/dummy/config/database.example.yml
205
- - spec/dummy/config/database.yml
200
+ - spec/dummy/config/database.travis.yml
206
201
  - spec/dummy/config/environment.rb
207
202
  - spec/dummy/config/environments/development.rb
208
203
  - spec/dummy/config/environments/production.rb
@@ -226,27 +221,22 @@ files:
226
221
  - spec/dummy/db/migrate/20160627084119_create_hertz_notification_deliveries.hertz.rb
227
222
  - spec/dummy/db/migrate/20160628084413_rename_notification_deliveries_to_deliveries.hertz.rb
228
223
  - spec/dummy/db/schema.rb
229
- - spec/dummy/log/development.log
230
- - spec/dummy/log/test.log
231
224
  - spec/dummy/public/404.html
232
225
  - spec/dummy/public/422.html
233
226
  - spec/dummy/public/500.html
234
227
  - spec/dummy/public/favicon.ico
235
- - spec/examples.txt
236
228
  - spec/factories/hertz/deliveries.rb
237
229
  - spec/factories/hertz/notifications.rb
238
230
  - spec/factories/users.rb
239
231
  - spec/hertz/hertz_spec.rb
240
232
  - spec/hertz/notifiable_spec.rb
241
233
  - spec/hertz/notification_deliverer_spec.rb
242
- - spec/models/hertz/delivery_spec.rb
243
234
  - spec/models/hertz/notification_spec.rb
244
235
  - spec/rails_helper.rb
245
236
  - spec/spec_helper.rb
246
237
  - spec/support/database_cleaner.rb
247
- - spec/support/factory_girl.rb
238
+ - spec/support/factory_bot.rb
248
239
  - spec/support/faker.rb
249
- - spec/support/shoulda.rb
250
240
  homepage: https://github.com/alessandro1997/hertz
251
241
  licenses:
252
242
  - MIT
@@ -267,71 +257,66 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
257
  version: '0'
268
258
  requirements: []
269
259
  rubyforge_project:
270
- rubygems_version: 2.6.8
260
+ rubygems_version: 2.7.7
271
261
  signing_key:
272
262
  specification_version: 4
273
263
  summary: A Rails engine for in-app notifications.
274
264
  test_files:
275
- - spec/support/factory_girl.rb
276
- - spec/support/database_cleaner.rb
277
- - spec/support/faker.rb
278
- - spec/support/shoulda.rb
279
- - spec/dummy/bin/rake
280
- - spec/dummy/bin/bundle
281
- - spec/dummy/bin/setup
282
- - spec/dummy/bin/rails
283
- - spec/dummy/README.rdoc
284
- - spec/dummy/log/test.log
285
- - spec/dummy/log/development.log
286
- - spec/dummy/Rakefile
287
- - spec/dummy/app/assets/javascripts/application.js
288
- - spec/dummy/app/assets/stylesheets/application.css
289
- - spec/dummy/app/helpers/application_helper.rb
265
+ - spec/spec_helper.rb
290
266
  - spec/dummy/app/models/test_notification.rb
291
267
  - spec/dummy/app/models/user.rb
268
+ - spec/dummy/app/controllers/application_controller.rb
292
269
  - spec/dummy/app/views/hertz/notification_mailer/test_notification.html.erb
293
270
  - spec/dummy/app/views/layouts/application.html.erb
294
- - spec/dummy/app/controllers/application_controller.rb
295
- - spec/dummy/config/application.rb
296
- - spec/dummy/config/routes.rb
271
+ - spec/dummy/app/assets/javascripts/application.js
272
+ - spec/dummy/app/assets/stylesheets/application.css
273
+ - spec/dummy/app/helpers/application_helper.rb
274
+ - spec/dummy/bin/rake
275
+ - spec/dummy/bin/setup
276
+ - spec/dummy/bin/bundle
277
+ - spec/dummy/bin/rails
297
278
  - spec/dummy/config/secrets.yml
298
- - spec/dummy/config/database.yml
299
- - spec/dummy/config/initializers/wrap_parameters.rb
300
- - spec/dummy/config/initializers/cookies_serializer.rb
301
- - spec/dummy/config/initializers/session_store.rb
302
- - spec/dummy/config/initializers/hertz.rb
303
- - spec/dummy/config/initializers/assets.rb
304
- - spec/dummy/config/initializers/mime_types.rb
305
- - spec/dummy/config/initializers/backtrace_silencers.rb
306
- - spec/dummy/config/initializers/inflections.rb
307
- - spec/dummy/config/initializers/filter_parameter_logging.rb
308
- - spec/dummy/config/environment.rb
279
+ - spec/dummy/config/routes.rb
309
280
  - spec/dummy/config/locales/en.yml
310
- - spec/dummy/config/environments/development.rb
281
+ - spec/dummy/config/database.example.yml
311
282
  - spec/dummy/config/environments/production.rb
283
+ - spec/dummy/config/environments/development.rb
312
284
  - spec/dummy/config/environments/test.rb
313
- - spec/dummy/config/database.example.yml
285
+ - spec/dummy/config/database.travis.yml
286
+ - spec/dummy/config/environment.rb
287
+ - spec/dummy/config/application.rb
314
288
  - spec/dummy/config/boot.rb
289
+ - spec/dummy/config/initializers/backtrace_silencers.rb
290
+ - spec/dummy/config/initializers/mime_types.rb
291
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
292
+ - spec/dummy/config/initializers/session_store.rb
293
+ - spec/dummy/config/initializers/wrap_parameters.rb
294
+ - spec/dummy/config/initializers/assets.rb
295
+ - spec/dummy/config/initializers/cookies_serializer.rb
296
+ - spec/dummy/config/initializers/hertz.rb
297
+ - spec/dummy/config/initializers/inflections.rb
298
+ - spec/dummy/config.ru
299
+ - spec/dummy/Rakefile
315
300
  - spec/dummy/public/favicon.ico
316
301
  - spec/dummy/public/422.html
317
- - spec/dummy/public/404.html
318
302
  - spec/dummy/public/500.html
303
+ - spec/dummy/public/404.html
304
+ - spec/dummy/db/schema.rb
319
305
  - spec/dummy/db/migrate/20160508094342_remove_email_from_users.rb
320
- - spec/dummy/db/migrate/20160418122437_add_email_to_users.rb
321
- - spec/dummy/db/migrate/20160415175358_create_hertz_notifications.hertz.rb
322
306
  - spec/dummy/db/migrate/20160628084413_rename_notification_deliveries_to_deliveries.hertz.rb
307
+ - spec/dummy/db/migrate/20160418122437_add_email_to_users.rb
323
308
  - spec/dummy/db/migrate/20160415175837_create_users.rb
309
+ - spec/dummy/db/migrate/20160415175358_create_hertz_notifications.hertz.rb
324
310
  - spec/dummy/db/migrate/20160627084119_create_hertz_notification_deliveries.hertz.rb
325
- - spec/dummy/db/schema.rb
326
- - spec/dummy/config.ru
327
- - spec/spec_helper.rb
328
- - spec/factories/hertz/notifications.rb
329
- - spec/factories/hertz/deliveries.rb
330
- - spec/factories/users.rb
331
- - spec/examples.txt
332
- - spec/models/hertz/notification_spec.rb
333
- - spec/models/hertz/delivery_spec.rb
311
+ - spec/dummy/README.rdoc
312
+ - spec/hertz/notifiable_spec.rb
334
313
  - spec/hertz/notification_deliverer_spec.rb
335
314
  - spec/hertz/hertz_spec.rb
336
- - spec/hertz/notifiable_spec.rb
315
+ - spec/models/hertz/notification_spec.rb
316
+ - spec/support/factory_bot.rb
317
+ - spec/support/faker.rb
318
+ - spec/support/database_cleaner.rb
319
+ - spec/factories/hertz/deliveries.rb
320
+ - spec/factories/hertz/notifications.rb
321
+ - spec/factories/users.rb
337
322
  - spec/rails_helper.rb
@@ -1,13 +0,0 @@
1
- // This is a manifest file that'll be compiled into application.js, which will include all the files
2
- // listed below.
3
- //
4
- // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
- // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
- //
7
- // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // compiled file.
9
- //
10
- // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
- // about supported directives.
12
- //
13
- //= require_tree .
@@ -1,15 +0,0 @@
1
- /*
2
- * This is a manifest file that'll be compiled into application.css, which will include all the files
3
- * listed below.
4
- *
5
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
- * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
- *
8
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any styles
10
- * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
- * file per style scope.
12
- *
13
- *= require_tree .
14
- *= require_self
15
- */