timeful 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +112 -0
  4. data/Rakefile +31 -0
  5. data/app/jobs/timeful/deliver_activity_to_subscribers_job.rb +15 -0
  6. data/app/models/timeful/activity.rb +34 -0
  7. data/app/models/timeful/application_record.rb +6 -0
  8. data/app/models/timeful/feed_item.rb +13 -0
  9. data/config/routes.rb +2 -0
  10. data/db/migrate/20160927141608_create_timeful_activities.rb +16 -0
  11. data/db/migrate/20160927154912_create_timeful_feed_items.rb +15 -0
  12. data/lib/generators/timeful/install_generator.rb +10 -0
  13. data/lib/timeful.rb +28 -0
  14. data/lib/timeful/engine.rb +6 -0
  15. data/lib/timeful/model/actor.rb +35 -0
  16. data/lib/timeful/model/subscriber.rb +21 -0
  17. data/lib/timeful/relation_proxy.rb +26 -0
  18. data/lib/timeful/version.rb +4 -0
  19. data/spec/dummy/README.rdoc +28 -0
  20. data/spec/dummy/Rakefile +6 -0
  21. data/spec/dummy/app/activities/post_activity.rb +5 -0
  22. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  23. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  24. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  25. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  26. data/spec/dummy/app/models/application_record.rb +3 -0
  27. data/spec/dummy/app/models/post.rb +2 -0
  28. data/spec/dummy/app/models/user.rb +4 -0
  29. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  30. data/spec/dummy/bin/bundle +3 -0
  31. data/spec/dummy/bin/rails +4 -0
  32. data/spec/dummy/bin/rake +4 -0
  33. data/spec/dummy/bin/setup +29 -0
  34. data/spec/dummy/config.ru +4 -0
  35. data/spec/dummy/config/application.rb +22 -0
  36. data/spec/dummy/config/boot.rb +5 -0
  37. data/spec/dummy/config/database.example.yml +19 -0
  38. data/spec/dummy/config/database.yml +19 -0
  39. data/spec/dummy/config/environment.rb +5 -0
  40. data/spec/dummy/config/environments/development.rb +41 -0
  41. data/spec/dummy/config/environments/production.rb +79 -0
  42. data/spec/dummy/config/environments/test.rb +42 -0
  43. data/spec/dummy/config/initializers/assets.rb +11 -0
  44. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  45. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  46. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  47. data/spec/dummy/config/initializers/inflections.rb +16 -0
  48. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  49. data/spec/dummy/config/initializers/session_store.rb +3 -0
  50. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  51. data/spec/dummy/config/locales/en.yml +23 -0
  52. data/spec/dummy/config/routes.rb +3 -0
  53. data/spec/dummy/config/secrets.yml +22 -0
  54. data/spec/dummy/db/migrate/20160927141815_create_timeful_activities.timeful.rb +17 -0
  55. data/spec/dummy/db/migrate/20160927155215_create_timeful_feed_items.timeful.rb +16 -0
  56. data/spec/dummy/db/migrate/20160927160026_create_users.rb +8 -0
  57. data/spec/dummy/db/migrate/20160927160031_create_posts.rb +8 -0
  58. data/spec/dummy/db/schema.rb +50 -0
  59. data/spec/dummy/log/development.log +361 -0
  60. data/spec/dummy/log/test.log +3554 -0
  61. data/spec/dummy/public/404.html +67 -0
  62. data/spec/dummy/public/422.html +67 -0
  63. data/spec/dummy/public/500.html +66 -0
  64. data/spec/dummy/public/favicon.ico +0 -0
  65. data/spec/examples.txt +12 -0
  66. data/spec/factories/posts.rb +5 -0
  67. data/spec/factories/timeful/activities.rb +8 -0
  68. data/spec/factories/timeful/feed_items.rb +7 -0
  69. data/spec/factories/users.rb +5 -0
  70. data/spec/jobs/timeful/deliver_activity_to_subscribers_job_spec.rb +17 -0
  71. data/spec/models/timeful/activity_spec.rb +8 -0
  72. data/spec/models/timeful/feed_item_spec.rb +8 -0
  73. data/spec/rails_helper.rb +21 -0
  74. data/spec/spec_helper.rb +73 -0
  75. data/spec/support/active_job.rb +3 -0
  76. data/spec/support/database_cleaner.rb +19 -0
  77. data/spec/support/factory_girl.rb +5 -0
  78. data/spec/support/faker.rb +1 -0
  79. data/spec/support/shoulda.rb +8 -0
  80. data/spec/timeful/model/actor_spec.rb +20 -0
  81. data/spec/timeful/model/subscriber_spec.rb +17 -0
  82. data/spec/timeful/relation_proxy_spec.rb +34 -0
  83. data/spec/timeful/timeful_spec.rb +12 -0
  84. metadata +337 -0
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe Timeful::Model::Subscriber do
3
+ subject { create(:user) }
4
+
5
+ describe '#feed_items' do
6
+ it "returns the items in the user's feeds" do
7
+ feed_item = create(:feed_item, feedable: subject)
8
+ expect(subject.feed_items).to match_array([feed_item])
9
+ end
10
+
11
+ it 'orders items by newest to oldest' do
12
+ oldest_item = create(:feed_item, feedable: subject)
13
+ newest_item = create(:feed_item, feedable: subject)
14
+ expect(subject.feed_items).to eq([newest_item, oldest_item])
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe Timeful::RelationProxy do
3
+ subject { described_class.new(object) }
4
+
5
+ describe '#find_each' do
6
+ context 'when the object responds to #find_each' do
7
+ let(:object) do
8
+ Class.new do
9
+ def find_each
10
+ yield 1
11
+ end
12
+ end.new
13
+ end
14
+
15
+ it 'calls #find_each on the object' do
16
+ expect { |block| subject.find_each(&block) }.to yield_with_args(1)
17
+ end
18
+ end
19
+
20
+ context 'when the object does not respond to #find_each' do
21
+ let(:object) do
22
+ Class.new do
23
+ def each
24
+ yield 1
25
+ end
26
+ end.new
27
+ end
28
+
29
+ it 'calls #each on the object' do
30
+ expect { |block| subject.find_each(&block) }.to yield_with_args(1)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe Timeful do
3
+ describe '.configure' do
4
+ it 'yields the module for configuration' do
5
+ expect {
6
+ described_class.configure do |config|
7
+ config.jobs_queue = :timeful
8
+ end
9
+ }.to change(described_class, :jobs_queue).to(:timeful)
10
+ end
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,337 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: timeful
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Alessandro Desantis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-09-28 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.0.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 6.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 4.0.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 6.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: rubocop
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rubocop-rspec
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec-rails
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: fuubar
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: faker
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: database_cleaner
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: factory_girl_rails
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: pg
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: shoulda-matchers
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ description:
160
+ email:
161
+ - desa.alessandro@gmail.com
162
+ executables: []
163
+ extensions: []
164
+ extra_rdoc_files: []
165
+ files:
166
+ - MIT-LICENSE
167
+ - README.md
168
+ - Rakefile
169
+ - app/jobs/timeful/deliver_activity_to_subscribers_job.rb
170
+ - app/models/timeful/activity.rb
171
+ - app/models/timeful/application_record.rb
172
+ - app/models/timeful/feed_item.rb
173
+ - config/routes.rb
174
+ - db/migrate/20160927141608_create_timeful_activities.rb
175
+ - db/migrate/20160927154912_create_timeful_feed_items.rb
176
+ - lib/generators/timeful/install_generator.rb
177
+ - lib/timeful.rb
178
+ - lib/timeful/engine.rb
179
+ - lib/timeful/model/actor.rb
180
+ - lib/timeful/model/subscriber.rb
181
+ - lib/timeful/relation_proxy.rb
182
+ - lib/timeful/version.rb
183
+ - spec/dummy/README.rdoc
184
+ - spec/dummy/Rakefile
185
+ - spec/dummy/app/activities/post_activity.rb
186
+ - spec/dummy/app/assets/javascripts/application.js
187
+ - spec/dummy/app/assets/stylesheets/application.css
188
+ - spec/dummy/app/controllers/application_controller.rb
189
+ - spec/dummy/app/helpers/application_helper.rb
190
+ - spec/dummy/app/models/application_record.rb
191
+ - spec/dummy/app/models/post.rb
192
+ - spec/dummy/app/models/user.rb
193
+ - spec/dummy/app/views/layouts/application.html.erb
194
+ - spec/dummy/bin/bundle
195
+ - spec/dummy/bin/rails
196
+ - spec/dummy/bin/rake
197
+ - spec/dummy/bin/setup
198
+ - spec/dummy/config.ru
199
+ - spec/dummy/config/application.rb
200
+ - spec/dummy/config/boot.rb
201
+ - spec/dummy/config/database.example.yml
202
+ - spec/dummy/config/database.yml
203
+ - spec/dummy/config/environment.rb
204
+ - spec/dummy/config/environments/development.rb
205
+ - spec/dummy/config/environments/production.rb
206
+ - spec/dummy/config/environments/test.rb
207
+ - spec/dummy/config/initializers/assets.rb
208
+ - spec/dummy/config/initializers/backtrace_silencers.rb
209
+ - spec/dummy/config/initializers/cookies_serializer.rb
210
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
211
+ - spec/dummy/config/initializers/inflections.rb
212
+ - spec/dummy/config/initializers/mime_types.rb
213
+ - spec/dummy/config/initializers/session_store.rb
214
+ - spec/dummy/config/initializers/wrap_parameters.rb
215
+ - spec/dummy/config/locales/en.yml
216
+ - spec/dummy/config/routes.rb
217
+ - spec/dummy/config/secrets.yml
218
+ - spec/dummy/db/migrate/20160927141815_create_timeful_activities.timeful.rb
219
+ - spec/dummy/db/migrate/20160927155215_create_timeful_feed_items.timeful.rb
220
+ - spec/dummy/db/migrate/20160927160026_create_users.rb
221
+ - spec/dummy/db/migrate/20160927160031_create_posts.rb
222
+ - spec/dummy/db/schema.rb
223
+ - spec/dummy/log/development.log
224
+ - spec/dummy/log/test.log
225
+ - spec/dummy/public/404.html
226
+ - spec/dummy/public/422.html
227
+ - spec/dummy/public/500.html
228
+ - spec/dummy/public/favicon.ico
229
+ - spec/examples.txt
230
+ - spec/factories/posts.rb
231
+ - spec/factories/timeful/activities.rb
232
+ - spec/factories/timeful/feed_items.rb
233
+ - spec/factories/users.rb
234
+ - spec/jobs/timeful/deliver_activity_to_subscribers_job_spec.rb
235
+ - spec/models/timeful/activity_spec.rb
236
+ - spec/models/timeful/feed_item_spec.rb
237
+ - spec/rails_helper.rb
238
+ - spec/spec_helper.rb
239
+ - spec/support/active_job.rb
240
+ - spec/support/database_cleaner.rb
241
+ - spec/support/factory_girl.rb
242
+ - spec/support/faker.rb
243
+ - spec/support/shoulda.rb
244
+ - spec/timeful/model/actor_spec.rb
245
+ - spec/timeful/model/subscriber_spec.rb
246
+ - spec/timeful/relation_proxy_spec.rb
247
+ - spec/timeful/timeful_spec.rb
248
+ homepage: https://github.com/alessandro1997/timeful
249
+ licenses:
250
+ - MIT
251
+ metadata: {}
252
+ post_install_message:
253
+ rdoc_options: []
254
+ require_paths:
255
+ - lib
256
+ required_ruby_version: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
261
+ required_rubygems_version: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
266
+ requirements: []
267
+ rubyforge_project:
268
+ rubygems_version: 2.5.1
269
+ signing_key:
270
+ specification_version: 4
271
+ summary: A Rails engine for building timelines.
272
+ test_files:
273
+ - spec/spec_helper.rb
274
+ - spec/jobs/timeful/deliver_activity_to_subscribers_job_spec.rb
275
+ - spec/timeful/relation_proxy_spec.rb
276
+ - spec/timeful/timeful_spec.rb
277
+ - spec/timeful/model/actor_spec.rb
278
+ - spec/timeful/model/subscriber_spec.rb
279
+ - spec/factories/timeful/feed_items.rb
280
+ - spec/factories/timeful/activities.rb
281
+ - spec/factories/posts.rb
282
+ - spec/factories/users.rb
283
+ - spec/support/shoulda.rb
284
+ - spec/support/active_job.rb
285
+ - spec/support/factory_girl.rb
286
+ - spec/support/database_cleaner.rb
287
+ - spec/support/faker.rb
288
+ - spec/models/timeful/activity_spec.rb
289
+ - spec/models/timeful/feed_item_spec.rb
290
+ - spec/examples.txt
291
+ - spec/rails_helper.rb
292
+ - spec/dummy/db/migrate/20160927160031_create_posts.rb
293
+ - spec/dummy/db/migrate/20160927141815_create_timeful_activities.timeful.rb
294
+ - spec/dummy/db/migrate/20160927155215_create_timeful_feed_items.timeful.rb
295
+ - spec/dummy/db/migrate/20160927160026_create_users.rb
296
+ - spec/dummy/db/schema.rb
297
+ - spec/dummy/bin/rake
298
+ - spec/dummy/bin/rails
299
+ - spec/dummy/bin/setup
300
+ - spec/dummy/bin/bundle
301
+ - spec/dummy/app/views/layouts/application.html.erb
302
+ - spec/dummy/app/activities/post_activity.rb
303
+ - spec/dummy/app/models/application_record.rb
304
+ - spec/dummy/app/models/post.rb
305
+ - spec/dummy/app/models/user.rb
306
+ - spec/dummy/app/helpers/application_helper.rb
307
+ - spec/dummy/app/controllers/application_controller.rb
308
+ - spec/dummy/app/assets/stylesheets/application.css
309
+ - spec/dummy/app/assets/javascripts/application.js
310
+ - spec/dummy/public/422.html
311
+ - spec/dummy/public/favicon.ico
312
+ - spec/dummy/public/500.html
313
+ - spec/dummy/public/404.html
314
+ - spec/dummy/README.rdoc
315
+ - spec/dummy/config.ru
316
+ - spec/dummy/config/boot.rb
317
+ - spec/dummy/config/initializers/inflections.rb
318
+ - spec/dummy/config/initializers/backtrace_silencers.rb
319
+ - spec/dummy/config/initializers/cookies_serializer.rb
320
+ - spec/dummy/config/initializers/session_store.rb
321
+ - spec/dummy/config/initializers/assets.rb
322
+ - spec/dummy/config/initializers/wrap_parameters.rb
323
+ - spec/dummy/config/initializers/mime_types.rb
324
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
325
+ - spec/dummy/config/application.rb
326
+ - spec/dummy/config/secrets.yml
327
+ - spec/dummy/config/environments/development.rb
328
+ - spec/dummy/config/environments/production.rb
329
+ - spec/dummy/config/environments/test.rb
330
+ - spec/dummy/config/locales/en.yml
331
+ - spec/dummy/config/database.yml
332
+ - spec/dummy/config/environment.rb
333
+ - spec/dummy/config/database.example.yml
334
+ - spec/dummy/config/routes.rb
335
+ - spec/dummy/Rakefile
336
+ - spec/dummy/log/test.log
337
+ - spec/dummy/log/development.log