activity_feed 1.4.0 → 2.0.0.rc1
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/.rvmrc +1 -0
- data/README.markdown +212 -174
- data/Rakefile +5 -1
- data/activity_feed.gemspec +8 -14
- data/lib/activity_feed/configuration.rb +65 -0
- data/lib/activity_feed/feed.rb +89 -20
- data/lib/activity_feed/item.rb +44 -0
- data/lib/activity_feed/utility.rb +25 -0
- data/lib/activity_feed/version.rb +1 -1
- data/lib/activity_feed.rb +10 -109
- data/spec/activity_feed/configuration_spec.rb +14 -0
- data/spec/activity_feed/feed_spec.rb +270 -0
- data/spec/activity_feed/item_spec.rb +65 -0
- data/spec/activity_feed/utility_spec.rb +24 -0
- data/spec/spec_helper.rb +28 -66
- data/spec/support/active_record.rb +38 -0
- data/spec/support/mongoid.rb +38 -0
- data/spec/version_spec.rb +2 -2
- metadata +24 -155
- data/lib/activity_feed/active_record/item.rb +0 -17
- data/lib/activity_feed/memory/item.rb +0 -36
- data/lib/activity_feed/mongo_mapper/item.rb +0 -30
- data/lib/activity_feed/mongoid/item.rb +0 -31
- data/lib/activity_feed/ohm/item.rb +0 -41
- data/spec/activity_feed/custom/item.rb +0 -36
- data/spec/activity_feed_spec.rb +0 -295
- data/spec/fabricators/item_fabricator.rb +0 -43
- data/spec/feed_spec.rb +0 -106
- data/spec/item_spec.rb +0 -55
data/spec/activity_feed_spec.rb
DELETED
@@ -1,295 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'timecop'
|
3
|
-
|
4
|
-
describe ActivityFeed do
|
5
|
-
it 'should have defaults set' do
|
6
|
-
ActivityFeed.namespace.should eql('activity')
|
7
|
-
ActivityFeed.key.should eql('feed')
|
8
|
-
ActivityFeed.persistence = :memory
|
9
|
-
ActivityFeed.persistence.should be(ActivityFeed::Memory::Item)
|
10
|
-
ActivityFeed.aggregate_key.should eql('aggregate')
|
11
|
-
ActivityFeed.aggregate.should == []
|
12
|
-
end
|
13
|
-
|
14
|
-
describe 'creating' do
|
15
|
-
it 'should allow you to create a new item using :memory' do
|
16
|
-
user_id = 1
|
17
|
-
ActivityFeed.persistence = :memory
|
18
|
-
|
19
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(0)
|
20
|
-
activity_feed_item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
21
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(1)
|
22
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id, true)).should be(1)
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'should allow you to create a new item using :mongo_mapper' do
|
26
|
-
user_id = 1
|
27
|
-
ActivityFeed.persistence = :mongo_mapper
|
28
|
-
|
29
|
-
ActivityFeed::MongoMapper::Item.count.should be(0)
|
30
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(0)
|
31
|
-
activity_feed_item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
32
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(1)
|
33
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id, true)).should be(1)
|
34
|
-
ActivityFeed::MongoMapper::Item.count.should be(1)
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'should allow you to create a new item using :mongoid' do
|
38
|
-
user_id = 1
|
39
|
-
ActivityFeed.persistence = :mongoid
|
40
|
-
|
41
|
-
ActivityFeed::Mongoid::Item.count.should be(0)
|
42
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(0)
|
43
|
-
activity_feed_item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
44
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(1)
|
45
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id, true)).should be(1)
|
46
|
-
ActivityFeed::Mongoid::Item.count.should be(1)
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should allow you to create a new item using :active_record' do
|
50
|
-
user_id = 1
|
51
|
-
ActivityFeed.persistence = :active_record
|
52
|
-
|
53
|
-
ActivityFeed::ActiveRecord::Item.count.should be(0)
|
54
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(0)
|
55
|
-
activity_feed_item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
56
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(1)
|
57
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id, true)).should be(1)
|
58
|
-
ActivityFeed::ActiveRecord::Item.count.should be(1)
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'should allow you to create a new item using :ohm' do
|
62
|
-
user_id = 1
|
63
|
-
ActivityFeed.persistence = :ohm
|
64
|
-
|
65
|
-
ActivityFeed::Ohm::Item.all.count.should be(0)
|
66
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(0)
|
67
|
-
activity_feed_item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
68
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(1)
|
69
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id, true)).should be(1)
|
70
|
-
ActivityFeed::Ohm::Item.all.count.should be(1)
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'should allow you to create a new item and not aggregate the item' do
|
74
|
-
user_id = 1
|
75
|
-
ActivityFeed.persistence = :ohm
|
76
|
-
|
77
|
-
ActivityFeed::Ohm::Item.all.count.should be(0)
|
78
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(0)
|
79
|
-
activity_feed_item = ActivityFeed.create_item({:user_id => user_id, :text => 'This is text for my activity feed'}, false)
|
80
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(1)
|
81
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id, true)).should be(0)
|
82
|
-
ActivityFeed::Ohm::Item.all.count.should be(1)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
describe 'loading' do
|
87
|
-
it 'should allow you to load an item using :memory' do
|
88
|
-
user_id = 1
|
89
|
-
ActivityFeed.persistence = :memory
|
90
|
-
|
91
|
-
item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
92
|
-
loaded_item = ActivityFeed.load_item(item.to_json)
|
93
|
-
loaded_item.should == JSON.parse(item.to_json)
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'should allow you to load an item using :mongo_mapper' do
|
97
|
-
user_id = 1
|
98
|
-
ActivityFeed.persistence = :mongo_mapper
|
99
|
-
|
100
|
-
item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
101
|
-
loaded_item = ActivityFeed.load_item(item.id)
|
102
|
-
loaded_item.should == item
|
103
|
-
end
|
104
|
-
|
105
|
-
it 'should allow you to load an item using :mongoid' do
|
106
|
-
user_id = 1
|
107
|
-
ActivityFeed.persistence = :mongoid
|
108
|
-
|
109
|
-
item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
110
|
-
loaded_item = ActivityFeed.load_item(item.id)
|
111
|
-
loaded_item.should == item
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'should allow you to load an item using :active_record' do
|
115
|
-
user_id = 1
|
116
|
-
ActivityFeed.persistence = :active_record
|
117
|
-
|
118
|
-
item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
119
|
-
loaded_item = ActivityFeed.load_item(item.id)
|
120
|
-
loaded_item.should == item
|
121
|
-
end
|
122
|
-
|
123
|
-
it 'should allow you to load an item using :ohm' do
|
124
|
-
user_id = 1
|
125
|
-
ActivityFeed.persistence = :ohm
|
126
|
-
|
127
|
-
item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
128
|
-
loaded_item = ActivityFeed.load_item(item.id)
|
129
|
-
loaded_item.should == item
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
describe 'custom persistence' do
|
134
|
-
it 'should allow you to define a custom persistence handler class' do
|
135
|
-
ActivityFeed.persistence = :custom
|
136
|
-
end
|
137
|
-
|
138
|
-
it 'should allow you to create a new item using a custom persistence handler class' do
|
139
|
-
user_id = 1
|
140
|
-
ActivityFeed.persistence = :custom
|
141
|
-
|
142
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(0)
|
143
|
-
activity_feed_item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
144
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(1)
|
145
|
-
ActivityFeed.aggregate_item(activity_feed_item)
|
146
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id, true)).should be(1)
|
147
|
-
end
|
148
|
-
|
149
|
-
it 'should allow you to load an item using a custom persistence handler class' do
|
150
|
-
user_id = 1
|
151
|
-
ActivityFeed.persistence = :custom
|
152
|
-
|
153
|
-
item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
154
|
-
loaded_item = ActivityFeed.load_item(item.to_json)
|
155
|
-
loaded_item.should == JSON.parse(item.to_json)
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
describe 'feed' do
|
160
|
-
it 'should allow you to create a new ActivityFeed::Feed instance' do
|
161
|
-
user_id = 1
|
162
|
-
ActivityFeed.persistence = :ohm
|
163
|
-
|
164
|
-
item = ActivityFeed.create_item(:user_id => user_id, :text => 'This is text for my activity feed')
|
165
|
-
feed = ActivityFeed.feed(user_id)
|
166
|
-
|
167
|
-
feed.total_items.should be(1)
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
describe "create_item" do
|
172
|
-
let(:user_id) { 1 }
|
173
|
-
let(:friend_ids) { [99, 1337] }
|
174
|
-
let(:item_attrs) {
|
175
|
-
{ "user_id" => user_id, "text" => 'This is my happy activity' }
|
176
|
-
}
|
177
|
-
|
178
|
-
context "with no explicit aggregation set" do
|
179
|
-
it "just creates the item and saves it to the user's feed" do
|
180
|
-
ActivityFeed.create_item(item_attrs)
|
181
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(user_id)).should be(1)
|
182
|
-
feed = ActivityFeed::Feed.new(user_id)
|
183
|
-
feed.page(1).first.should == item_attrs
|
184
|
-
end
|
185
|
-
end
|
186
|
-
|
187
|
-
context "with the optional second parameter set to a falsy value" do
|
188
|
-
it "only creates the item--without adding it to the aggregation feed" do
|
189
|
-
ActivityFeed.create_item(item_attrs, false)
|
190
|
-
feed = ActivityFeed::Feed.new(user_id)
|
191
|
-
feed.page(1).size.should be(1) # user-only feed
|
192
|
-
feed.page(1, true).should be_empty # aggregation feed
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
|
-
context "with a list of aggregation ids as a second parameter" do
|
197
|
-
it "creates the item and aggregates it out to all the feeds" do
|
198
|
-
ActivityFeed.create_item(item_attrs, friend_ids)
|
199
|
-
( friend_ids << user_id ).each do |id|
|
200
|
-
feed = ActivityFeed::Feed.new(id)
|
201
|
-
feed.page(1, true).first.should == item_attrs
|
202
|
-
end
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
206
|
-
|
207
|
-
describe "delete_item" do
|
208
|
-
let(:user_id) { 1 }
|
209
|
-
let(:item_attrs) {
|
210
|
-
{ "user_id" => user_id, "text" => 'This is my happy activity' }
|
211
|
-
}
|
212
|
-
|
213
|
-
context "non-memory backed persistence" do
|
214
|
-
before(:each) do
|
215
|
-
ActivityFeed.persistence = :ohm
|
216
|
-
@item = ActivityFeed.create_item(item_attrs, true)
|
217
|
-
end
|
218
|
-
|
219
|
-
it "should allow you to delete an item from the personal activity feed" do
|
220
|
-
feed = ActivityFeed::Feed.new(user_id)
|
221
|
-
feed.total_items.should == 1
|
222
|
-
ActivityFeed.delete_item(user_id, @item.id)
|
223
|
-
feed.total_items.should == 0
|
224
|
-
end
|
225
|
-
|
226
|
-
it "should allow you to delete an item from the personal aggregate feed" do
|
227
|
-
feed = ActivityFeed::Feed.new(user_id)
|
228
|
-
feed.total_items(true).should == 1
|
229
|
-
ActivityFeed.delete_item(user_id, @item.id, true)
|
230
|
-
feed.total_items(true).should == 0
|
231
|
-
end
|
232
|
-
end
|
233
|
-
end
|
234
|
-
|
235
|
-
describe "update_item" do
|
236
|
-
let(:user_id) { 1 }
|
237
|
-
let(:item_attrs) {
|
238
|
-
{ "user_id" => user_id, "text" => 'This is my happy activity' }
|
239
|
-
}
|
240
|
-
|
241
|
-
it "should allow you to update an item from the personal activity feed" do
|
242
|
-
ActivityFeed.persistence = :ohm
|
243
|
-
|
244
|
-
item_1 = ActivityFeed.create_item(item_attrs, false)
|
245
|
-
Timecop.travel(DateTime.now + 10)
|
246
|
-
item_2 = ActivityFeed.create_item(item_attrs, false)
|
247
|
-
Timecop.travel(DateTime.now + 10)
|
248
|
-
item_3 = ActivityFeed.create_item(item_attrs, false)
|
249
|
-
Timecop.travel(DateTime.now + 10)
|
250
|
-
|
251
|
-
feed = ActivityFeed::Feed.new(user_id)
|
252
|
-
feed.page(1).first.id.should == '3'
|
253
|
-
|
254
|
-
ActivityFeed.update_item(user_id, 1, DateTime.now.to_i)
|
255
|
-
feed.page(1).first.id.should == '1'
|
256
|
-
Timecop.return
|
257
|
-
end
|
258
|
-
|
259
|
-
it "should allow you to update an item from the personal activity feed using :mongoid" do
|
260
|
-
ActivityFeed.persistence = :mongoid
|
261
|
-
|
262
|
-
item_1 = ActivityFeed.create_item(item_attrs, false)
|
263
|
-
Timecop.travel(DateTime.now + 10)
|
264
|
-
item_2 = ActivityFeed.create_item(item_attrs, false)
|
265
|
-
Timecop.travel(DateTime.now + 10)
|
266
|
-
item_3 = ActivityFeed.create_item(item_attrs, false)
|
267
|
-
Timecop.travel(DateTime.now + 10)
|
268
|
-
|
269
|
-
feed = ActivityFeed::Feed.new(user_id)
|
270
|
-
feed.page(1).first.id.should == item_3.id
|
271
|
-
|
272
|
-
ActivityFeed.update_item(user_id, item_1.id, DateTime.now.to_i)
|
273
|
-
feed.page(1).first.id.should == item_1.id
|
274
|
-
Timecop.return
|
275
|
-
end
|
276
|
-
|
277
|
-
it "should allow you to update an item from the personal aggregate feed" do
|
278
|
-
ActivityFeed.persistence = :ohm
|
279
|
-
|
280
|
-
item_1 = ActivityFeed.create_item(item_attrs, true)
|
281
|
-
Timecop.travel(DateTime.now + 10)
|
282
|
-
item_2 = ActivityFeed.create_item(item_attrs, true)
|
283
|
-
Timecop.travel(DateTime.now + 10)
|
284
|
-
item_3 = ActivityFeed.create_item(item_attrs, true)
|
285
|
-
Timecop.travel(DateTime.now + 10)
|
286
|
-
|
287
|
-
feed = ActivityFeed::Feed.new(user_id)
|
288
|
-
feed.page(1, true).first.id.should == '3'
|
289
|
-
|
290
|
-
ActivityFeed.update_item(user_id, 1, DateTime.now.to_i, true)
|
291
|
-
feed.page(1, true).first.id.should == '1'
|
292
|
-
Timecop.return
|
293
|
-
end
|
294
|
-
end
|
295
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
Fabricator(ActivityFeed::ActiveRecord::Item) do
|
2
|
-
user_id { sequence(:user_id) }
|
3
|
-
nickname { sequence(:nickname) { |i| "nickname_#{i}" } }
|
4
|
-
type { 'activity' }
|
5
|
-
title { 'item title' }
|
6
|
-
text { 'feed item' }
|
7
|
-
url { 'http://url' }
|
8
|
-
icon { 'http://icon' }
|
9
|
-
sticky { false }
|
10
|
-
end
|
11
|
-
|
12
|
-
Fabricator(ActivityFeed::Memory::Item) do
|
13
|
-
user_id { sequence(:user_id) }
|
14
|
-
nickname { sequence(:nickname) { |i| "nickname_#{i}" } }
|
15
|
-
type { 'activity' }
|
16
|
-
title { 'item title' }
|
17
|
-
text { 'feed item' }
|
18
|
-
url { 'http://url' }
|
19
|
-
icon { 'http://icon' }
|
20
|
-
sticky { false }
|
21
|
-
end
|
22
|
-
|
23
|
-
Fabricator(ActivityFeed::MongoMapper::Item) do
|
24
|
-
user_id { sequence(:user_id) }
|
25
|
-
nickname { sequence(:nickname) { |i| "nickname_#{i}" } }
|
26
|
-
type { 'activity' }
|
27
|
-
title { 'item title' }
|
28
|
-
text { 'feed item' }
|
29
|
-
url { 'http://url' }
|
30
|
-
icon { 'http://icon' }
|
31
|
-
sticky { false }
|
32
|
-
end
|
33
|
-
|
34
|
-
Fabricator(ActivityFeed::Ohm::Item) do
|
35
|
-
user_id { sequence(:user_id) }
|
36
|
-
nickname { sequence(:nickname) { |i| "nickname_#{i}" } }
|
37
|
-
type { 'activity' }
|
38
|
-
title { 'item title' }
|
39
|
-
text { 'feed item' }
|
40
|
-
url { 'http://url' }
|
41
|
-
icon { 'http://icon' }
|
42
|
-
sticky { false }
|
43
|
-
end
|
data/spec/feed_spec.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActivityFeed::Feed do
|
4
|
-
it 'should pull up the correct list of ActivityFeed::Memory::Item when calling #page using :memory' do
|
5
|
-
1.upto(5) do |index|
|
6
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
7
|
-
end
|
8
|
-
|
9
|
-
feed = ActivityFeed::Feed.new(1)
|
10
|
-
feed.page(1).size.should be(5)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'should pull up the correct list of ActivityFeed::ActiveRecord::Item when calling #page using :active_record' do
|
14
|
-
ActivityFeed.persistence = :active_record
|
15
|
-
ActivityFeed::ActiveRecord::Item.count.should be(0)
|
16
|
-
1.upto(5) do |index|
|
17
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
18
|
-
end
|
19
|
-
ActivityFeed::ActiveRecord::Item.count.should be(5)
|
20
|
-
|
21
|
-
feed = ActivityFeed::Feed.new(1)
|
22
|
-
feed.page(1).size.should be(5)
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'should pull up the correct list of ActivityFeed::MongoMapper::Item when calling #page using :mongo_mapper' do
|
26
|
-
ActivityFeed.persistence = :mongo_mapper
|
27
|
-
ActivityFeed::MongoMapper::Item.count.should be(0)
|
28
|
-
1.upto(5) do |index|
|
29
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
30
|
-
end
|
31
|
-
ActivityFeed::MongoMapper::Item.count.should be(5)
|
32
|
-
|
33
|
-
feed = ActivityFeed::Feed.new(1)
|
34
|
-
feed.page(1).size.should be(5)
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'should pull up the correct list of ActivityFeed::Mongoid::Item when calling #page using :mongoid' do
|
38
|
-
ActivityFeed.persistence = :mongoid
|
39
|
-
ActivityFeed::Mongoid::Item.count.should be(0)
|
40
|
-
1.upto(5) do |index|
|
41
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
42
|
-
end
|
43
|
-
ActivityFeed::Mongoid::Item.count.should be(5)
|
44
|
-
|
45
|
-
feed = ActivityFeed::Feed.new(1)
|
46
|
-
feed.page(1).size.should be(5)
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should pull up the correct list of ActivityFeed::Ohm::Item when calling #page using :ohm' do
|
50
|
-
ActivityFeed.persistence = :ohm
|
51
|
-
ActivityFeed::Ohm::Item.all.count.should be(0)
|
52
|
-
1.upto(5) do |index|
|
53
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
54
|
-
end
|
55
|
-
ActivityFeed::Ohm::Item.all.count.should be(5)
|
56
|
-
|
57
|
-
feed = ActivityFeed::Feed.new(1)
|
58
|
-
feed.page(1).size.should be(5)
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'should return the correct number for #total_items' do
|
62
|
-
1.upto(3) do |index|
|
63
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
64
|
-
end
|
65
|
-
|
66
|
-
feed = ActivityFeed::Feed.new(1)
|
67
|
-
feed.total_items.should be(3)
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'should return the correct number for #total_pages' do
|
71
|
-
1.upto(Leaderboard::DEFAULT_PAGE_SIZE + 1) do |index|
|
72
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
73
|
-
end
|
74
|
-
|
75
|
-
feed = ActivityFeed::Feed.new(1)
|
76
|
-
feed.total_pages.should be(2)
|
77
|
-
end
|
78
|
-
|
79
|
-
describe 'feed aggregation' do
|
80
|
-
it 'should pull up the correct list of items from an aggregated activity feed' do
|
81
|
-
ActivityFeed.persistence = :ohm
|
82
|
-
1.upto(5) do |index|
|
83
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
84
|
-
another_item = ActivityFeed.create_item(:user_id => 2, :nickname => 'nickname_2', :text => "test_another_item_#{index}")
|
85
|
-
ActivityFeed.aggregate_item(another_item, 1)
|
86
|
-
end
|
87
|
-
|
88
|
-
feed = ActivityFeed::Feed.new(1)
|
89
|
-
feed.total_pages(true).should be(1)
|
90
|
-
feed.total_items(true).should be(10)
|
91
|
-
feed.page(1, true).size.should be(10)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
describe 'custom persistence' do
|
96
|
-
it 'should allow you to pull up the correct list of ActivityFeed::Custom::Item when calling #page using :custom' do
|
97
|
-
ActivityFeed.persistence = :custom
|
98
|
-
1.upto(5) do |index|
|
99
|
-
item = ActivityFeed.create_item(:user_id => 1, :nickname => 'nickname_1', :text => "text_#{index}")
|
100
|
-
end
|
101
|
-
|
102
|
-
feed = ActivityFeed::Feed.new(1)
|
103
|
-
feed.page(1).size.should be(5)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
data/spec/item_spec.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'ActivityFeed::Item' do
|
4
|
-
it 'should allow you to create a new Item' do
|
5
|
-
item = Fabricate.build(ActivityFeed.persistence)
|
6
|
-
item.save.should be_true
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'should allow for a large amount of text' do
|
10
|
-
item = Fabricate.build(ActivityFeed.persistence, :text => '*' * 8192)
|
11
|
-
item.text.should eql('*' * 8192)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should add the feed item ID to redis' do
|
15
|
-
item = Fabricate.build(ActivityFeed.persistence)
|
16
|
-
|
17
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(item.user_id)).should be(0)
|
18
|
-
item.save
|
19
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(item.user_id)).should be(1)
|
20
|
-
ActivityFeed.aggregate_item(item)
|
21
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(item.user_id, true)).should be(1)
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'should have default attributes for .title .url .icon and .sticky' do
|
25
|
-
item = Fabricate.build(ActivityFeed.persistence)
|
26
|
-
|
27
|
-
item.title.should eql('item title')
|
28
|
-
item.url.should eql('http://url')
|
29
|
-
item.icon.should eql('http://icon')
|
30
|
-
item.sticky.should be_false
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should not create a new item in Redis after saving, only on create' do
|
34
|
-
item = Fabricate.build(ActivityFeed::Memory::Item)
|
35
|
-
|
36
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(item.user_id)).should be(0)
|
37
|
-
item.save
|
38
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(item.user_id)).should be(1)
|
39
|
-
ActivityFeed.aggregate_item(item)
|
40
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(item.user_id, true)).should be(1)
|
41
|
-
|
42
|
-
item.text = 'updated text'
|
43
|
-
item.save
|
44
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(item.user_id)).should be(1)
|
45
|
-
ActivityFeed.aggregate_item(item)
|
46
|
-
ActivityFeed.redis.zcard(ActivityFeed.feed_key(item.user_id, true)).should be(1)
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should output all the attributes for an item for Ohm' do
|
50
|
-
item = Fabricate.build(ActivityFeed::Ohm::Item)
|
51
|
-
|
52
|
-
hash = JSON.parse(item.to_json)
|
53
|
-
hash.keys.size.should be(8)
|
54
|
-
end
|
55
|
-
end
|