Browse Source

Add rspecs for FollowRecommendationsScheduler (#23890)

closed-social-glitch-2
Stanislav Dobrovolschii 1 year ago
committed by GitHub
parent
commit
d9271126ce
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 1 deletions
  1. +2
    -1
      spec/fabricators/user_fabricator.rb
  2. +43
    -0
      spec/workers/scheduler/follow_recommendations_scheduler_spec.rb

+ 2
- 1
spec/fabricators/user_fabricator.rb View File

@ -5,5 +5,6 @@ Fabricator(:user) do
email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } } email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
password '123456789' password '123456789'
confirmed_at { Time.zone.now } confirmed_at { Time.zone.now }
agreement true
current_sign_in_at { Time.zone.now }
agreement true
end end

+ 43
- 0
spec/workers/scheduler/follow_recommendations_scheduler_spec.rb View File

@ -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…
Cancel
Save