Add rspecs for FollowRecommendationsScheduler (#23890)
This commit is contained in:
		
							parent
							
								
									5bf8f34842
								
							
						
					
					
						commit
						eaea285368
					
				
					 2 changed files with 45 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -5,5 +5,6 @@ Fabricator(:user) do
 | 
			
		|||
  email        { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
 | 
			
		||||
  password     '123456789'
 | 
			
		||||
  confirmed_at { Time.zone.now }
 | 
			
		||||
  agreement    true
 | 
			
		||||
  current_sign_in_at { Time.zone.now }
 | 
			
		||||
  agreement true
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
require 'rails_helper'
 | 
			
		||||
 | 
			
		||||
describe Scheduler::FollowRecommendationsScheduler do
 | 
			
		||||
  let!(:target_accounts) do
 | 
			
		||||
    Fabricate.times(3, :account) do
 | 
			
		||||
      statuses(count: 6)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  let!(:follower_accounts) do
 | 
			
		||||
    Fabricate.times(5, :account) do
 | 
			
		||||
      statuses(count: 6)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe '#perform' do
 | 
			
		||||
    subject(:scheduled_run) { described_class.new.perform }
 | 
			
		||||
 | 
			
		||||
    context 'when there are accounts to recommend' do
 | 
			
		||||
      before do
 | 
			
		||||
        # Follow the target accounts by follow accounts to make them recommendable
 | 
			
		||||
        follower_accounts.each do |follower_account|
 | 
			
		||||
          target_accounts.each do |target_account|
 | 
			
		||||
            Fabricate(:follow, account: follower_account, target_account: target_account)
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      it 'creates recommendations' do
 | 
			
		||||
        expect { scheduled_run }.to change(FollowRecommendation, :count).from(0).to(target_accounts.size)
 | 
			
		||||
        expect(redis.zrange('follow_recommendations:en', 0, -1)).to match_array(target_accounts.pluck(:id).map(&:to_s))
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    context 'when there are no accounts to recommend' do
 | 
			
		||||
      it 'does not create follow recommendations' do
 | 
			
		||||
        expect { scheduled_run }.to_not change(FollowRecommendation, :count)
 | 
			
		||||
        expect(redis.zrange('follow_recommendations:en', 0, -1)).to be_empty
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
		Reference in a new issue