diff options
author | Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp> | 2018-02-24 13:40:18 +0900 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2018-02-24 05:40:18 +0100 |
commit | f8f0572ee09122dd8fda51aec899f939c6ab03bf (patch) | |
tree | d723b5168ccb4a9be1d9e3ca1b85add74e0363d9 /spec/lib | |
parent | e668180044560e28bdc5eef94744c210013efcda (diff) |
Do not push status to feed if its reblog is already inserted (#6488)
A complemental change for precompute_feed_service_spec.rb also fixes its random failure which is caused by the Snowlake randomization of the order of an original status and its reblog.
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/feed_manager_spec.rb | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/spec/lib/feed_manager_spec.rb b/spec/lib/feed_manager_spec.rb index c6bc388e0..6ead5bbd9 100644 --- a/spec/lib/feed_manager_spec.rb +++ b/spec/lib/feed_manager_spec.rb @@ -157,7 +157,7 @@ RSpec.describe FeedManager do end end - describe '#push' do + describe '#push_to_home' do it 'trims timelines if they will have more than FeedManager::MAX_ITEMS' do account = Fabricate(:account) status = Fabricate(:status) @@ -248,6 +248,39 @@ RSpec.describe FeedManager do expect(FeedManager.instance.push_to_home(account, reblogs.last)).to be true end end + + it "does not push when the given status's reblog is already inserted" do + account = Fabricate(:account) + reblog = Fabricate(:status) + status = Fabricate(:status, reblog: reblog) + FeedManager.instance.push_to_home(account, status) + + expect(FeedManager.instance.push_to_home(account, reblog)).to eq false + end + end + + describe '#push_to_list' do + it "does not push when the given status's reblog is already inserted" do + list = Fabricate(:list) + reblog = Fabricate(:status) + status = Fabricate(:status, reblog: reblog) + FeedManager.instance.push_to_list(list, status) + + expect(FeedManager.instance.push_to_list(list, reblog)).to eq false + end + end + + describe '#merge_into_timeline' do + it "does not push source account's statuses whose reblogs are already inserted" do + account = Fabricate(:account, id: 0) + reblog = Fabricate(:status) + status = Fabricate(:status, reblog: reblog) + FeedManager.instance.push_to_home(account, status) + + FeedManager.instance.merge_into_timeline(account, reblog.account) + + expect(Redis.current.zscore("feed:home:0", reblog.id)).to eq nil + end end describe '#trim' do |