activity_feed 3.0.0 → 3.0.1
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.
- data/CHANGELOG.markdown +10 -0
- data/README.markdown +13 -1
- data/activity_feed.gemspec +4 -4
- data/lib/activity_feed/feed.rb +9 -0
- data/lib/activity_feed/version.rb +1 -1
- data/spec/activity_feed/feed_spec.rb +115 -52
- data/spec/version_spec.rb +1 -1
- metadata +6 -5
data/CHANGELOG.markdown
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 3.0.1 (2013-07-17)
|
|
4
|
+
|
|
5
|
+
More useful aliases:
|
|
6
|
+
|
|
7
|
+
* `ActivityFeed.for` as an alias for `ActivityFeed.feed`
|
|
8
|
+
* `ActivityFeed.between` as an alias for `ActivityFeed.feed_between_timestamps`
|
|
9
|
+
* `ActivityFeed.trim` as an alias for `ActivityFeed.trim_feed`
|
|
10
|
+
* `ActivityFeed.expire_in` and `ActivityFeed.expire_feed_in` as aliases for `ActivityFeed.expire_feed`
|
|
11
|
+
* `ActivityFeed.expire_at` as an alias for `ActivityFeed.expire_feed_at`
|
|
12
|
+
|
|
3
13
|
## 3.0.0 (2013-07-12)
|
|
4
14
|
|
|
5
15
|
* Allow for bulk-loading of feed items. The `ActivityFeed.item_loader`
|
data/README.markdown
CHANGED
|
@@ -286,7 +286,6 @@ feeds in which that activity feed item may have been aggregated.
|
|
|
286
286
|
|
|
287
287
|
ActivityFeed.update_item(user_id, item_id, timestamp, aggregate = ActivityFeed.aggregate)
|
|
288
288
|
ActivityFeed.add_item(user_id, item_id, timestamp, aggregate = ActivityFeed.aggregate)
|
|
289
|
-
# add_item is an alias for update_item
|
|
290
289
|
|
|
291
290
|
ActivityFeed.aggregate_item(user_id, item_id, timestamp)
|
|
292
291
|
ActivityFeed.remove_item(user_id, item_id)
|
|
@@ -295,16 +294,29 @@ ActivityFeed.check_item?(user_id, item_id, aggregate = ActivityFeed.aggregate)
|
|
|
295
294
|
# Feed-related
|
|
296
295
|
|
|
297
296
|
ActivityFeed.feed(user_id, page, aggregate = ActivityFeed.aggregate)
|
|
297
|
+
ActivityFeed.for(user_id, page, aggregate = ActivityFeed.aggregate)
|
|
298
|
+
|
|
298
299
|
ActivityFeed.full_feed(user_id, aggregate = ActivityFeed.aggregate)
|
|
300
|
+
|
|
299
301
|
ActivityFeed.feed_between_timestamps(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
|
|
302
|
+
ActivityFeed.between(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
|
|
303
|
+
|
|
300
304
|
ActivityFeed.total_pages_in_feed(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size)
|
|
301
305
|
ActivityFeed.total_pages(user_id, aggregate = ActivityFeed.aggregate, page_size = ActivityFeed.page_size)
|
|
306
|
+
|
|
302
307
|
ActivityFeed.total_items_in_feed(user_id, aggregate = ActivityFeed.aggregate)
|
|
303
308
|
ActivityFeed.total_items(user_id, aggregate = ActivityFeed.aggregate)
|
|
309
|
+
|
|
304
310
|
ActivityFeed.trim_feed(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
|
|
311
|
+
ActivityFeed.trim(user_id, starting_timestamp, ending_timestamp, aggregate = ActivityFeed.aggregate)
|
|
312
|
+
|
|
305
313
|
ActivityFeed.expire_feed(user_id, seconds, aggregate = ActivityFeed.aggregate)
|
|
306
314
|
ActivityFeed.expire_feed_in(user_id, seconds, aggregate = ActivityFeed.aggregate)
|
|
315
|
+
ActivityFeed.expire_in(user_id, seconds, aggregate = ActivityFeed.aggregate)
|
|
316
|
+
|
|
307
317
|
ActivityFeed.expire_feed_at(user_id, timestamp, aggregate = ActivityFeed.aggregate)
|
|
318
|
+
ActivityFeed.expire_at(user_id, timestamp, aggregate = ActivityFeed.aggregate)
|
|
319
|
+
|
|
308
320
|
ActivityFeed.remove_feeds(user_id)
|
|
309
321
|
```
|
|
310
322
|
|
data/activity_feed.gemspec
CHANGED
|
@@ -10,15 +10,15 @@ Gem::Specification.new do |s|
|
|
|
10
10
|
s.homepage = 'https://github.com/agoragames/activity_feed'
|
|
11
11
|
s.summary = %q{Activity feeds backed by Redis}
|
|
12
12
|
s.description = %q{Activity feeds backed by Redis}
|
|
13
|
+
s.license = 'MIT'
|
|
13
14
|
|
|
14
15
|
s.rubyforge_project = 'activity_feed'
|
|
15
16
|
|
|
16
17
|
s.files = `git ls-files`.split("\n")
|
|
17
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
18
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
19
|
-
|
|
20
20
|
s.require_paths = ['lib']
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
s.add_development_dependency('rake')
|
|
23
23
|
s.add_development_dependency('rspec')
|
|
24
24
|
s.add_development_dependency('activesupport')
|
|
@@ -29,12 +29,12 @@ Gem::Specification.new do |s|
|
|
|
29
29
|
|
|
30
30
|
s.add_development_dependency('activerecord')
|
|
31
31
|
s.add_development_dependency('sqlite3')
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
s.add_development_dependency('database_cleaner')
|
|
34
34
|
|
|
35
35
|
if '1.8.7'.eql?(RUBY_VERSION)
|
|
36
36
|
s.add_development_dependency('SystemTimer')
|
|
37
37
|
end
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
s.add_dependency('leaderboard')
|
|
40
40
|
end
|
data/lib/activity_feed/feed.rb
CHANGED
|
@@ -16,6 +16,8 @@ module ActivityFeed
|
|
|
16
16
|
load_feed_items(feed_items)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
+
alias_method :for, :feed
|
|
20
|
+
|
|
19
21
|
# Retrieve the entire activity feed for a given +user_id+. You can configure
|
|
20
22
|
# +ActivityFeed.items_loader+ with a Proc to retrieve items from, for example,
|
|
21
23
|
# your ORM (e.g. ActiveRecord) or your ODM (e.g. Mongoid), and have the page
|
|
@@ -49,6 +51,8 @@ module ActivityFeed
|
|
|
49
51
|
load_feed_items(feed_items)
|
|
50
52
|
end
|
|
51
53
|
|
|
54
|
+
alias_method :between, :feed_between_timestamps
|
|
55
|
+
|
|
52
56
|
# Return the total number of pages in the activity feed.
|
|
53
57
|
#
|
|
54
58
|
# @param user_id [String] User ID.
|
|
@@ -94,6 +98,8 @@ module ActivityFeed
|
|
|
94
98
|
ActivityFeed.feederboard_for(user_id, aggregate).remove_members_in_score_range(starting_timestamp, ending_timestamp)
|
|
95
99
|
end
|
|
96
100
|
|
|
101
|
+
alias_method :trim, :trim_feed
|
|
102
|
+
|
|
97
103
|
# Expire an activity feed after a set number of seconds.
|
|
98
104
|
#
|
|
99
105
|
# @param user_id [String] User ID.
|
|
@@ -103,6 +109,7 @@ module ActivityFeed
|
|
|
103
109
|
ActivityFeed.redis.expire(ActivityFeed.feed_key(user_id, aggregate), seconds)
|
|
104
110
|
end
|
|
105
111
|
|
|
112
|
+
alias_method :expire_in, :expire_feed
|
|
106
113
|
alias_method :expire_feed_in, :expire_feed
|
|
107
114
|
|
|
108
115
|
# Expire an activity feed at a given timestamp.
|
|
@@ -114,6 +121,8 @@ module ActivityFeed
|
|
|
114
121
|
ActivityFeed.redis.expireat(ActivityFeed.feed_key(user_id, aggregate), timestamp)
|
|
115
122
|
end
|
|
116
123
|
|
|
124
|
+
alias_method :expire_at, :expire_feed_at
|
|
125
|
+
|
|
117
126
|
private
|
|
118
127
|
|
|
119
128
|
# Load feed items from the `ActivityFeed.items_loader` if available,
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe ActivityFeed::Feed do
|
|
4
|
-
describe '#feed' do
|
|
4
|
+
describe '#feed and #for' do
|
|
5
5
|
describe 'without aggregation' do
|
|
6
6
|
it 'should return an activity feed with the items correctly ordered' do
|
|
7
|
+
feed = ActivityFeed.feed('david', 1)
|
|
8
|
+
feed.length.should eql(0)
|
|
9
|
+
|
|
7
10
|
add_items_to_feed('david')
|
|
8
11
|
|
|
9
|
-
feed
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
[:feed, :for].each do |method|
|
|
13
|
+
feed = ActivityFeed.send(method, 'david', 1)
|
|
14
|
+
feed.length.should eql(5)
|
|
15
|
+
feed[0].to_i.should eql(5)
|
|
16
|
+
feed[4].to_i.should eql(1)
|
|
17
|
+
end
|
|
13
18
|
end
|
|
14
19
|
end
|
|
15
20
|
|
|
16
21
|
describe 'with aggregation' do
|
|
17
22
|
it 'should return an aggregate activity feed with the items correctly ordered' do
|
|
23
|
+
feed = ActivityFeed.feed('david', 1, true)
|
|
24
|
+
feed.length.should eql(0)
|
|
25
|
+
|
|
18
26
|
add_items_to_feed('david', 5, true)
|
|
19
27
|
|
|
20
28
|
feed = ActivityFeed.feed('david', 1, true)
|
|
@@ -28,6 +36,9 @@ describe ActivityFeed::Feed do
|
|
|
28
36
|
describe '#full_feed' do
|
|
29
37
|
describe 'without aggregation' do
|
|
30
38
|
it 'should return the full activity feed' do
|
|
39
|
+
feed = ActivityFeed.full_feed('david', false)
|
|
40
|
+
feed.length.should eql(0)
|
|
41
|
+
|
|
31
42
|
add_items_to_feed('david', 30)
|
|
32
43
|
|
|
33
44
|
feed = ActivityFeed.full_feed('david', false)
|
|
@@ -39,6 +50,9 @@ describe ActivityFeed::Feed do
|
|
|
39
50
|
|
|
40
51
|
describe 'with aggregation' do
|
|
41
52
|
it 'should return the full activity feed' do
|
|
53
|
+
feed = ActivityFeed.full_feed('david', true)
|
|
54
|
+
feed.length.should eql(0)
|
|
55
|
+
|
|
42
56
|
add_items_to_feed('david', 30, true)
|
|
43
57
|
|
|
44
58
|
feed = ActivityFeed.full_feed('david', true)
|
|
@@ -49,9 +63,12 @@ describe ActivityFeed::Feed do
|
|
|
49
63
|
end
|
|
50
64
|
end
|
|
51
65
|
|
|
52
|
-
describe '#feed_between_timestamps' do
|
|
66
|
+
describe '#feed_between_timestamps and #between' do
|
|
53
67
|
describe 'without aggregation' do
|
|
54
68
|
it 'should return activity feed items between the starting and ending timestamps' do
|
|
69
|
+
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, false)
|
|
70
|
+
feed.length.should eql(0)
|
|
71
|
+
|
|
55
72
|
Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
|
|
56
73
|
ActivityFeed.update_item('david', 1, Time.now.to_i)
|
|
57
74
|
Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
|
|
@@ -64,15 +81,20 @@ describe ActivityFeed::Feed do
|
|
|
64
81
|
ActivityFeed.update_item('david', 5, Time.now.to_i)
|
|
65
82
|
Timecop.return
|
|
66
83
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
84
|
+
[:feed_between_timestamps, :between].each do |method|
|
|
85
|
+
feed = ActivityFeed.send(method, 'david', Time.local(2012, 6, 19, 4, 43, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, false)
|
|
86
|
+
feed.length.should eql(2)
|
|
87
|
+
feed[0].to_i.should eql(4)
|
|
88
|
+
feed[1].to_i.should eql(3)
|
|
89
|
+
end
|
|
71
90
|
end
|
|
72
91
|
end
|
|
73
92
|
|
|
74
93
|
describe 'with aggregation' do
|
|
75
94
|
it 'should return activity feed items between the starting and ending timestamps' do
|
|
95
|
+
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)
|
|
96
|
+
feed.length.should eql(0)
|
|
97
|
+
|
|
76
98
|
Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
|
|
77
99
|
ActivityFeed.update_item('david', 1, Time.now.to_i, true)
|
|
78
100
|
Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
|
|
@@ -85,10 +107,12 @@ describe ActivityFeed::Feed do
|
|
|
85
107
|
ActivityFeed.update_item('david', 5, Time.now.to_i, true)
|
|
86
108
|
Timecop.return
|
|
87
109
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
110
|
+
[:feed_between_timestamps, :between].each do |method|
|
|
111
|
+
feed = ActivityFeed.send(method, 'david', Time.local(2012, 6, 19, 4, 43, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, true)
|
|
112
|
+
feed.length.should eql(2)
|
|
113
|
+
feed[0].to_i.should eql(4)
|
|
114
|
+
feed[1].to_i.should eql(3)
|
|
115
|
+
end
|
|
92
116
|
end
|
|
93
117
|
end
|
|
94
118
|
end
|
|
@@ -96,6 +120,9 @@ describe ActivityFeed::Feed do
|
|
|
96
120
|
describe '#total_pages_in_feed and #total_pages' do
|
|
97
121
|
describe 'without aggregation' do
|
|
98
122
|
it 'should return the correct number of pages in the activity feed' do
|
|
123
|
+
ActivityFeed.total_pages_in_feed('david').should eql(0)
|
|
124
|
+
ActivityFeed.total_pages('david').should eql(0)
|
|
125
|
+
|
|
99
126
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1)
|
|
100
127
|
|
|
101
128
|
ActivityFeed.total_pages_in_feed('david').should eql(2)
|
|
@@ -105,6 +132,9 @@ describe ActivityFeed::Feed do
|
|
|
105
132
|
|
|
106
133
|
describe 'with aggregation' do
|
|
107
134
|
it 'should return the correct number of pages in the aggregate activity feed' do
|
|
135
|
+
ActivityFeed.total_pages_in_feed('david', true).should eql(0)
|
|
136
|
+
ActivityFeed.total_pages('david', true).should eql(0)
|
|
137
|
+
|
|
108
138
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1, true)
|
|
109
139
|
|
|
110
140
|
ActivityFeed.total_pages_in_feed('david', true).should eql(2)
|
|
@@ -114,6 +144,9 @@ describe ActivityFeed::Feed do
|
|
|
114
144
|
|
|
115
145
|
describe 'changing page_size parameter' do
|
|
116
146
|
it 'should return the correct number of pages in the activity feed' do
|
|
147
|
+
ActivityFeed.total_pages_in_feed('david', false, 4).should eql(0)
|
|
148
|
+
ActivityFeed.total_pages('david', false, 4).should eql(0)
|
|
149
|
+
|
|
117
150
|
add_items_to_feed('david', 25)
|
|
118
151
|
|
|
119
152
|
ActivityFeed.total_pages_in_feed('david', false, 4).should eql(7)
|
|
@@ -122,7 +155,7 @@ describe ActivityFeed::Feed do
|
|
|
122
155
|
end
|
|
123
156
|
end
|
|
124
157
|
|
|
125
|
-
describe '#remove_feeds' do
|
|
158
|
+
describe '#remove_feeds and #remove' do
|
|
126
159
|
it 'should remove the activity feeds for a given user ID' do
|
|
127
160
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1, true)
|
|
128
161
|
|
|
@@ -139,6 +172,9 @@ describe ActivityFeed::Feed do
|
|
|
139
172
|
describe '#total_items_in_feed and #total_items' do
|
|
140
173
|
describe 'without aggregation' do
|
|
141
174
|
it 'should return the correct number of items in the activity feed' do
|
|
175
|
+
ActivityFeed.total_items_in_feed('david').should eql(0)
|
|
176
|
+
ActivityFeed.total_items('david').should eql(0)
|
|
177
|
+
|
|
142
178
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1)
|
|
143
179
|
|
|
144
180
|
ActivityFeed.total_items_in_feed('david').should eql(Leaderboard::DEFAULT_PAGE_SIZE + 1)
|
|
@@ -148,6 +184,9 @@ describe ActivityFeed::Feed do
|
|
|
148
184
|
|
|
149
185
|
describe 'with aggregation' do
|
|
150
186
|
it 'should return the correct number of items in the aggregate activity feed' do
|
|
187
|
+
ActivityFeed.total_items_in_feed('david', true).should eql(0)
|
|
188
|
+
ActivityFeed.total_items('david', true).should eql(0)
|
|
189
|
+
|
|
151
190
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE + 1, true)
|
|
152
191
|
|
|
153
192
|
ActivityFeed.total_items_in_feed('david', true).should eql(Leaderboard::DEFAULT_PAGE_SIZE + 1)
|
|
@@ -159,45 +198,49 @@ describe ActivityFeed::Feed do
|
|
|
159
198
|
describe '#trim_feed' do
|
|
160
199
|
describe 'without aggregation' do
|
|
161
200
|
it 'should trim activity feed items between the starting and ending timestamps' do
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
201
|
+
[:trim_feed, :trim].each do |method|
|
|
202
|
+
Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
|
|
203
|
+
ActivityFeed.update_item('david', 1, Time.now.to_i)
|
|
204
|
+
Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
|
|
205
|
+
ActivityFeed.update_item('david', 2, Time.now.to_i)
|
|
206
|
+
Timecop.travel(Time.local(2012, 6, 19, 5, 30, 0))
|
|
207
|
+
ActivityFeed.update_item('david', 3, Time.now.to_i)
|
|
208
|
+
Timecop.travel(Time.local(2012, 6, 19, 6, 37, 0))
|
|
209
|
+
ActivityFeed.update_item('david', 4, Time.now.to_i)
|
|
210
|
+
Timecop.travel(Time.local(2012, 6, 19, 8, 17, 0))
|
|
211
|
+
ActivityFeed.update_item('david', 5, Time.now.to_i)
|
|
212
|
+
Timecop.return
|
|
213
|
+
|
|
214
|
+
ActivityFeed.send(method, 'david', Time.local(2012, 6, 19, 4, 29, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i)
|
|
215
|
+
feed = ActivityFeed.feed('david', 1)
|
|
216
|
+
feed.length.should eql(2)
|
|
217
|
+
feed[0].to_i.should eql(5)
|
|
218
|
+
feed[1].to_i.should eql(1)
|
|
219
|
+
end
|
|
179
220
|
end
|
|
180
221
|
end
|
|
181
222
|
|
|
182
223
|
describe 'with aggregation' do
|
|
183
224
|
it 'should trim activity feed items between the starting and ending timestamps' do
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
225
|
+
[:trim_feed, :trim].each do |method|
|
|
226
|
+
Timecop.travel(Time.local(2012, 6, 19, 4, 0, 0))
|
|
227
|
+
ActivityFeed.update_item('david', 1, Time.now.to_i, true)
|
|
228
|
+
Timecop.travel(Time.local(2012, 6, 19, 4, 30, 0))
|
|
229
|
+
ActivityFeed.update_item('david', 2, Time.now.to_i, true)
|
|
230
|
+
Timecop.travel(Time.local(2012, 6, 19, 5, 30, 0))
|
|
231
|
+
ActivityFeed.update_item('david', 3, Time.now.to_i, true)
|
|
232
|
+
Timecop.travel(Time.local(2012, 6, 19, 6, 37, 0))
|
|
233
|
+
ActivityFeed.update_item('david', 4, Time.now.to_i, true)
|
|
234
|
+
Timecop.travel(Time.local(2012, 6, 19, 8, 17, 0))
|
|
235
|
+
ActivityFeed.update_item('david', 5, Time.now.to_i, true)
|
|
236
|
+
Timecop.return
|
|
237
|
+
|
|
238
|
+
ActivityFeed.send(method, 'david', Time.local(2012, 6, 19, 4, 29, 0).to_i, Time.local(2012, 6, 19, 8, 16, 0).to_i, true)
|
|
239
|
+
feed = ActivityFeed.feed('david', 1, true)
|
|
240
|
+
feed.length.should eql(2)
|
|
241
|
+
feed[0].to_i.should eql(5)
|
|
242
|
+
feed[1].to_i.should eql(1)
|
|
243
|
+
end
|
|
201
244
|
end
|
|
202
245
|
end
|
|
203
246
|
end
|
|
@@ -251,7 +294,7 @@ describe ActivityFeed::Feed do
|
|
|
251
294
|
end
|
|
252
295
|
end
|
|
253
296
|
|
|
254
|
-
describe '#expire_feed and #expire_feed_in' do
|
|
297
|
+
describe '#expire_feed, #expire_in and #expire_feed_in' do
|
|
255
298
|
it 'should set an expiration on an activity feed using #expire_feed' do
|
|
256
299
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
|
257
300
|
|
|
@@ -262,6 +305,16 @@ describe ActivityFeed::Feed do
|
|
|
262
305
|
end
|
|
263
306
|
end
|
|
264
307
|
|
|
308
|
+
it 'should set an expiration on an activity feed using #expire_in' do
|
|
309
|
+
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
|
310
|
+
|
|
311
|
+
ActivityFeed.expire_in('david', 10)
|
|
312
|
+
ActivityFeed.redis.ttl(ActivityFeed.feed_key('david')).tap do |ttl|
|
|
313
|
+
ttl.should be > 1
|
|
314
|
+
ttl.should be <= 10
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
|
|
265
318
|
it 'should set an expiration on an activity feed using #expire_feed_in' do
|
|
266
319
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
|
267
320
|
|
|
@@ -273,8 +326,8 @@ describe ActivityFeed::Feed do
|
|
|
273
326
|
end
|
|
274
327
|
end
|
|
275
328
|
|
|
276
|
-
describe '#expire_feed_at' do
|
|
277
|
-
it 'should set an expiration timestamp on an activity feed' do
|
|
329
|
+
describe '#expire_feed_at and #expire_at' do
|
|
330
|
+
it 'should set an expiration timestamp on an activity feed using #expire_feed' do
|
|
278
331
|
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
|
279
332
|
|
|
280
333
|
ActivityFeed.expire_feed_at('david', (Time.now + 10).to_i)
|
|
@@ -283,5 +336,15 @@ describe ActivityFeed::Feed do
|
|
|
283
336
|
ttl.should be <= 10
|
|
284
337
|
end
|
|
285
338
|
end
|
|
339
|
+
|
|
340
|
+
it 'should set an expiration timestamp on an activity feed using #expire_at' do
|
|
341
|
+
add_items_to_feed('david', Leaderboard::DEFAULT_PAGE_SIZE)
|
|
342
|
+
|
|
343
|
+
ActivityFeed.expire_at('david', (Time.now + 10).to_i)
|
|
344
|
+
ActivityFeed.redis.ttl(ActivityFeed.feed_key('david')).tap do |ttl|
|
|
345
|
+
ttl.should be > 1
|
|
346
|
+
ttl.should be <= 10
|
|
347
|
+
end
|
|
348
|
+
end
|
|
286
349
|
end
|
|
287
350
|
end
|
data/spec/version_spec.rb
CHANGED
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: 3.0.
|
|
4
|
+
version: 3.0.1
|
|
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: 2013-07-
|
|
12
|
+
date: 2013-07-17 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rake
|
|
@@ -203,7 +203,8 @@ files:
|
|
|
203
203
|
- spec/support/mongoid.yml
|
|
204
204
|
- spec/version_spec.rb
|
|
205
205
|
homepage: https://github.com/agoragames/activity_feed
|
|
206
|
-
licenses:
|
|
206
|
+
licenses:
|
|
207
|
+
- MIT
|
|
207
208
|
post_install_message:
|
|
208
209
|
rdoc_options: []
|
|
209
210
|
require_paths:
|
|
@@ -216,7 +217,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
216
217
|
version: '0'
|
|
217
218
|
segments:
|
|
218
219
|
- 0
|
|
219
|
-
hash:
|
|
220
|
+
hash: -3957721059363882018
|
|
220
221
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
222
|
none: false
|
|
222
223
|
requirements:
|
|
@@ -225,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
225
226
|
version: '0'
|
|
226
227
|
segments:
|
|
227
228
|
- 0
|
|
228
|
-
hash:
|
|
229
|
+
hash: -3957721059363882018
|
|
229
230
|
requirements: []
|
|
230
231
|
rubyforge_project: activity_feed
|
|
231
232
|
rubygems_version: 1.8.25
|