activity_feed 2.2.2 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --color
2
- --format nested
2
+ --format nested
3
+ --order random
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.3.0 (2013-05-03)
4
+
5
+ * Added `check_item?(user_id, item_id, aggregate = ActivityFeed.aggregate)` to see if an item is in an activity feed.
6
+
7
+ ## 2.2.2 (2012-09-12)
8
+
9
+ * Added `add_item(...)` as an alias for `update_item(...)`.
10
+
3
11
  ## 2.2.1 (2012-08-27)
4
12
 
5
13
  * Added `total_pages` and `total_items` as aliases for `total_pages_in_feed` and `total_items_in_feed`, respectively.
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in activity_feed.gemspec
4
4
  gemspec
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2012 David Czarnecki
1
+ Copyright (c) 2011-2013 David Czarnecki
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -287,6 +287,7 @@ ActivityFeed.add_item(user_id, item_id, timestamp, aggregate = ActivityFeed.aggr
287
287
 
288
288
  ActivityFeed.aggregate_item(user_id, item_id, timestamp)
289
289
  ActivityFeed.remove_item(user_id, item_id)
290
+ ActivityFeed.check_item?(user_id, item_id, aggregate = ActivityFeed.aggregate)
290
291
 
291
292
  # Feed-related
292
293
 
@@ -315,4 +316,4 @@ ActivityFeed.remove_feeds(user_id)
315
316
 
316
317
  ## Copyright
317
318
 
318
- Copyright (c) 2011-2012 David Czarnecki. See LICENSE.txt for further details.
319
+ Copyright (c) 2011-2013 David Czarnecki. See LICENSE.txt for further details.
data/Rakefile CHANGED
@@ -12,6 +12,7 @@ end
12
12
 
13
13
  task :default => :spec
14
14
 
15
+ desc "Run the specs against Ruby 1.8.7 and 1.9.3"
15
16
  task :test_rubies do
16
17
  system "rvm ruby-1.8.7@activity_feed_gem,ruby-1.9.3@activity_feed_gem do rake spec"
17
18
  end
@@ -42,5 +42,17 @@ module ActivityFeed
42
42
  feederboard = ActivityFeed.feederboard_for(user_id, true)
43
43
  feederboard.remove_member(item_id)
44
44
  end
45
+
46
+ # Check to see if an item is in the activity feed for a given +user_id+.
47
+ #
48
+ # @param user_id [String] User ID.
49
+ # @param item_id [String] Item ID.
50
+ # @param aggregate [boolean, false] Whether or not to check the aggregate activity feed.
51
+ def check_item?(user_id, item_id, aggregate = ActivityFeed.aggregate)
52
+ feederboard_individual = ActivityFeed.feederboard_for(user_id, false)
53
+ feederboard_aggregate = ActivityFeed.feederboard_for(user_id, true)
54
+
55
+ aggregate ? feederboard_aggregate.check_member?(item_id) : feederboard_individual.check_member?(item_id)
56
+ end
45
57
  end
46
58
  end
@@ -1,3 +1,3 @@
1
1
  module ActivityFeed
2
- VERSION = "2.2.2"
2
+ VERSION = "2.3.0"
3
3
  end
@@ -53,15 +53,15 @@ describe ActivityFeed::Feed do
53
53
  describe 'without aggregation' do
54
54
  it 'should return activity feed items between the starting and ending timestamps' do
55
55
  Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
56
- ActivityFeed.update_item('david', 1, DateTime.now.to_i)
56
+ ActivityFeed.update_item('david', 1, Time.now.to_i)
57
57
  Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
58
- ActivityFeed.update_item('david', 2, DateTime.now.to_i)
58
+ ActivityFeed.update_item('david', 2, Time.now.to_i)
59
59
  Timecop.travel(Time.local(2012, 6, 19, 5, 30, 0))
60
- ActivityFeed.update_item('david', 3, DateTime.now.to_i)
60
+ ActivityFeed.update_item('david', 3, Time.now.to_i)
61
61
  Timecop.travel(Time.local(2012, 6, 19, 6, 37, 0))
62
- ActivityFeed.update_item('david', 4, DateTime.now.to_i)
62
+ ActivityFeed.update_item('david', 4, Time.now.to_i)
63
63
  Timecop.travel(Time.local(2012, 6, 19, 8, 17, 0))
64
- ActivityFeed.update_item('david', 5, DateTime.now.to_i)
64
+ ActivityFeed.update_item('david', 5, Time.now.to_i)
65
65
  Timecop.return
66
66
 
67
67
  feed = ActivityFeed.feed_between_timestamps('david', Time.local(2012, 6, 19, 4, 43, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i)
@@ -74,15 +74,15 @@ describe ActivityFeed::Feed do
74
74
  describe 'with aggregation' do
75
75
  it 'should return activity feed items between the starting and ending timestamps' do
76
76
  Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
77
- ActivityFeed.update_item('david', 1, DateTime.now.to_i, true)
77
+ ActivityFeed.update_item('david', 1, Time.now.to_i, true)
78
78
  Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
79
- ActivityFeed.update_item('david', 2, DateTime.now.to_i, true)
79
+ ActivityFeed.update_item('david', 2, Time.now.to_i, true)
80
80
  Timecop.travel(Time.local(2012, 6, 19, 5, 30, 0))
81
- ActivityFeed.update_item('david', 3, DateTime.now.to_i, true)
81
+ ActivityFeed.update_item('david', 3, Time.now.to_i, true)
82
82
  Timecop.travel(Time.local(2012, 6, 19, 6, 37, 0))
83
- ActivityFeed.update_item('david', 4, DateTime.now.to_i, true)
83
+ ActivityFeed.update_item('david', 4, Time.now.to_i, true)
84
84
  Timecop.travel(Time.local(2012, 6, 19, 8, 17, 0))
85
- ActivityFeed.update_item('david', 5, DateTime.now.to_i, true)
85
+ ActivityFeed.update_item('david', 5, Time.now.to_i, true)
86
86
  Timecop.return
87
87
 
88
88
  feed = ActivityFeed.feed_between_timestamps('david', Time.local(2012, 6, 19, 4, 43, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, true)
@@ -160,15 +160,15 @@ describe ActivityFeed::Feed do
160
160
  describe 'without aggregation' do
161
161
  it 'should trim activity feed items between the starting and ending timestamps' do
162
162
  Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
163
- ActivityFeed.update_item('david', 1, DateTime.now.to_i)
163
+ ActivityFeed.update_item('david', 1, Time.now.to_i)
164
164
  Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
165
- ActivityFeed.update_item('david', 2, DateTime.now.to_i)
165
+ ActivityFeed.update_item('david', 2, Time.now.to_i)
166
166
  Timecop.travel(Time.local(2012, 6, 19, 5, 30, 0))
167
- ActivityFeed.update_item('david', 3, DateTime.now.to_i)
167
+ ActivityFeed.update_item('david', 3, Time.now.to_i)
168
168
  Timecop.travel(Time.local(2012, 6, 19, 6, 37, 0))
169
- ActivityFeed.update_item('david', 4, DateTime.now.to_i)
169
+ ActivityFeed.update_item('david', 4, Time.now.to_i)
170
170
  Timecop.travel(Time.local(2012, 6, 19, 8, 17, 0))
171
- ActivityFeed.update_item('david', 5, DateTime.now.to_i)
171
+ ActivityFeed.update_item('david', 5, Time.now.to_i)
172
172
  Timecop.return
173
173
 
174
174
  ActivityFeed.trim_feed('david', Time.local(2012, 6, 19, 4, 29, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i)
@@ -182,15 +182,15 @@ describe ActivityFeed::Feed do
182
182
  describe 'with aggregation' do
183
183
  it 'should trim activity feed items between the starting and ending timestamps' do
184
184
  Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
185
- ActivityFeed.update_item('david', 1, DateTime.now.to_i, true)
185
+ ActivityFeed.update_item('david', 1, Time.now.to_i, true)
186
186
  Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
187
- ActivityFeed.update_item('david', 2, DateTime.now.to_i, true)
187
+ ActivityFeed.update_item('david', 2, Time.now.to_i, true)
188
188
  Timecop.travel(Time.local(2012, 6, 19, 5, 30, 0))
189
- ActivityFeed.update_item('david', 3, DateTime.now.to_i, true)
189
+ ActivityFeed.update_item('david', 3, Time.now.to_i, true)
190
190
  Timecop.travel(Time.local(2012, 6, 19, 6, 37, 0))
191
- ActivityFeed.update_item('david', 4, DateTime.now.to_i, true)
191
+ ActivityFeed.update_item('david', 4, Time.now.to_i, true)
192
192
  Timecop.travel(Time.local(2012, 6, 19, 8, 17, 0))
193
- ActivityFeed.update_item('david', 5, DateTime.now.to_i, true)
193
+ ActivityFeed.update_item('david', 5, Time.now.to_i, true)
194
194
  Timecop.return
195
195
 
196
196
  ActivityFeed.trim_feed('david', Time.local(2012, 6, 19, 4, 29, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, true)
@@ -6,7 +6,7 @@ describe ActivityFeed::Item do
6
6
  describe 'without aggregation' do
7
7
  it 'should correctly build an activity feed' do
8
8
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_false
9
- ActivityFeed.update_item('david', 1, DateTime.now.to_i)
9
+ ActivityFeed.update_item('david', 1, Time.now.to_i)
10
10
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_true
11
11
  end
12
12
  end
@@ -15,7 +15,7 @@ describe ActivityFeed::Item do
15
15
  it 'should correctly build an activity feed with an aggregate activity_feed' do
16
16
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_false
17
17
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david', true)).should be_false
18
- ActivityFeed.update_item('david', 1, DateTime.now.to_i, true)
18
+ ActivityFeed.update_item('david', 1, Time.now.to_i, true)
19
19
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_true
20
20
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david', true)).should be_true
21
21
  end
@@ -26,7 +26,7 @@ describe ActivityFeed::Item do
26
26
  describe 'without aggregation' do
27
27
  it 'should correctly build an activity feed' do
28
28
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_false
29
- ActivityFeed.add_item('david', 1, DateTime.now.to_i)
29
+ ActivityFeed.add_item('david', 1, Time.now.to_i)
30
30
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_true
31
31
  end
32
32
  end
@@ -36,7 +36,7 @@ describe ActivityFeed::Item do
36
36
  it 'should correctly add an item into an aggregate activity feed' do
37
37
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_false
38
38
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david', true)).should be_false
39
- ActivityFeed.aggregate_item('david', 1, DateTime.now.to_i)
39
+ ActivityFeed.aggregate_item('david', 1, Time.now.to_i)
40
40
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_false
41
41
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david', true)).should be_true
42
42
  end
@@ -47,7 +47,7 @@ describe ActivityFeed::Item do
47
47
  it 'should remove an item from an activity feed' do
48
48
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_false
49
49
  ActivityFeed.redis.zcard(ActivityFeed.feed_key('david')).should eql(0)
50
- ActivityFeed.update_item('david', 1, DateTime.now.to_i)
50
+ ActivityFeed.update_item('david', 1, Time.now.to_i)
51
51
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_true
52
52
  ActivityFeed.redis.zcard(ActivityFeed.feed_key('david')).should eql(1)
53
53
  ActivityFeed.remove_item('david', 1)
@@ -61,7 +61,7 @@ describe ActivityFeed::Item do
61
61
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david', true)).should be_false
62
62
  ActivityFeed.redis.zcard(ActivityFeed.feed_key('david')).should eql(0)
63
63
  ActivityFeed.redis.zcard(ActivityFeed.feed_key('david', true)).should eql(0)
64
- ActivityFeed.update_item('david', 1, DateTime.now.to_i, true)
64
+ ActivityFeed.update_item('david', 1, Time.now.to_i, true)
65
65
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david')).should be_true
66
66
  ActivityFeed.redis.exists(ActivityFeed.feed_key('david', true)).should be_true
67
67
  ActivityFeed.redis.zcard(ActivityFeed.feed_key('david')).should eql(1)
@@ -72,4 +72,24 @@ describe ActivityFeed::Item do
72
72
  end
73
73
  end
74
74
  end
75
+
76
+ describe '#check_item?' do
77
+ describe 'without aggregation' do
78
+ it 'should return whether or not an item exists in the feed' do
79
+ ActivityFeed.aggregate = false
80
+ ActivityFeed.check_item?('david', 1).should be_false
81
+ ActivityFeed.add_item('david', 1, Time.now.to_i)
82
+ ActivityFeed.check_item?('david', 1).should be_true
83
+ end
84
+ end
85
+
86
+ describe 'with aggregation' do
87
+ it 'should return whether or not an item exists in the feed' do
88
+ ActivityFeed.aggregate = true
89
+ ActivityFeed.check_item?('david', 1, true).should be_false
90
+ ActivityFeed.add_item('david', 1, Time.now.to_i)
91
+ ActivityFeed.check_item?('david', 1, true).should be_true
92
+ end
93
+ end
94
+ end
75
95
  end
@@ -6,7 +6,7 @@ require 'support/active_record'
6
6
 
7
7
  RSpec.configure do |config|
8
8
  config.mock_with :rspec
9
-
9
+
10
10
  config.before(:all) do
11
11
  DatabaseCleaner.strategy = :truncation
12
12
  DatabaseCleaner.clean_with(:truncation)
@@ -18,6 +18,7 @@ RSpec.configure do |config|
18
18
 
19
19
  ActivityFeed.configure do |configuration|
20
20
  configuration.item_loader = nil
21
+ configuration.aggregate = false
21
22
  configuration.redis = Redis.new(:db => 15)
22
23
  end
23
24
 
@@ -25,18 +26,18 @@ RSpec.configure do |config|
25
26
  end
26
27
 
27
28
  config.after(:each) do
28
- DatabaseCleaner.clean
29
+ DatabaseCleaner.clean
29
30
 
30
31
  ActivityFeed.redis.quit
31
32
  end
32
33
 
33
34
  # Helper method to add items to a given feed.
34
- #
35
+ #
35
36
  # @param items_to_add [int] Number of items to add to the feed.
36
37
  def add_items_to_feed(user_id, items_to_add = 5, aggregate = ActivityFeed.aggregate)
37
38
  1.upto(items_to_add) do |index|
38
- ActivityFeed.update_item(user_id, index, DateTime.now.to_i, aggregate)
39
- Timecop.travel(DateTime.now + 10)
39
+ ActivityFeed.update_item(user_id, index, Time.now.to_i, aggregate)
40
+ Timecop.travel(Time.now + 10)
40
41
  end
41
42
 
42
43
  Timecop.return
@@ -1,8 +1,12 @@
1
1
  require 'mongoid'
2
2
 
3
- Mongoid.configure do |config|
4
- config.master = Mongo::Connection.new.db("activity_feed_gem_test")
5
- end
3
+ # If using Mongoid 2.x
4
+ # Mongoid.configure do |config|
5
+ # config.master = Mongo::Connection.new.db("activity_feed_gem_test")
6
+ # end
7
+
8
+ # If using Mongoid 3.x
9
+ Mongoid.load!("#{File.dirname(__FILE__)}/mongoid.yml", :test)
6
10
 
7
11
  DatabaseCleaner[:mongoid].strategy = :truncation
8
12
 
@@ -23,7 +27,11 @@ module ActivityFeed
23
27
  field :icon, :type=> String
24
28
  field :sticky, :type=> Boolean
25
29
 
26
- index :user_id
30
+ # If using Mongoid 2.x
31
+ # index :user_id
32
+
33
+ # If using Mongoid 3.x
34
+ index({ user_id: 1})
27
35
 
28
36
  after_save :update_activity_feed
29
37
 
@@ -0,0 +1,6 @@
1
+ test:
2
+ sessions:
3
+ default:
4
+ database: activity_feed_gem_test
5
+ hosts:
6
+ - localhost:27017
@@ -2,6 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  describe 'ActivityFeed::VERSION' do
4
4
  it "should be the correct version" do
5
- ActivityFeed::VERSION.should == '2.2.2'
5
+ ActivityFeed::VERSION.should == '2.3.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activity_feed
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-12 00:00:00.000000000 Z
12
+ date: 2013-05-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -200,6 +200,7 @@ files:
200
200
  - spec/spec_helper.rb
201
201
  - spec/support/active_record.rb
202
202
  - spec/support/mongoid.rb
203
+ - spec/support/mongoid.yml
203
204
  - spec/version_spec.rb
204
205
  homepage: https://github.com/agoragames/activity_feed
205
206
  licenses: []
@@ -215,7 +216,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
215
216
  version: '0'
216
217
  segments:
217
218
  - 0
218
- hash: -3848997138192536076
219
+ hash: 4479539862674226365
219
220
  required_rubygems_version: !ruby/object:Gem::Requirement
220
221
  none: false
221
222
  requirements:
@@ -224,10 +225,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
225
  version: '0'
225
226
  segments:
226
227
  - 0
227
- hash: -3848997138192536076
228
+ hash: 4479539862674226365
228
229
  requirements: []
229
230
  rubyforge_project: activity_feed
230
- rubygems_version: 1.8.24
231
+ rubygems_version: 1.8.25
231
232
  signing_key:
232
233
  specification_version: 3
233
234
  summary: Activity feeds backed by Redis
@@ -239,4 +240,5 @@ test_files:
239
240
  - spec/spec_helper.rb
240
241
  - spec/support/active_record.rb
241
242
  - spec/support/mongoid.rb
243
+ - spec/support/mongoid.yml
242
244
  - spec/version_spec.rb