end
def trim(type, account_id)
- return unless redis.zcard(key(type, account_id)) > FeedManager::MAX_ITEMS
- last = redis.zrevrange(key(type, account_id), FeedManager::MAX_ITEMS - 1, FeedManager::MAX_ITEMS - 1)
- redis.zremrangebyscore(key(type, account_id), '-inf', "(#{last.last}")
+ redis.zremrangebyrank(key(type, account_id), '0', (-(FeedManager::MAX_ITEMS + 1)).to_s)
end
def push_update_required?(timeline_type, account_id)
end
end
end
+
+ describe '#push' do
+ it 'trims timelines if they will have more than FeedManager::MAX_ITEMS' do
+ account = Fabricate(:account)
+ status = Fabricate(:status)
+ members = FeedManager::MAX_ITEMS.times.map { |count| [count, count] }
+ Redis.current.zadd("feed:type:#{account.id}", members)
+
+ FeedManager.instance.push('type', account, status)
+
+ expect(Redis.current.zcard("feed:type:#{account.id}")).to eq FeedManager::MAX_ITEMS
+ end
+ end
end