discourse/spec/jobs/purge_expired_ignored_users_spec.rb
Daniel Waterworth e219588142 DEV: Prefabrication (test optimization) (#7414)
* Introduced fab!, a helper that creates database state for a group

It's almost identical to let_it_be, except:

 1. It creates a new object for each test by default,
 2. You can disable it using PREFABRICATION=0
2019-05-07 13:12:20 +10:00

59 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
require_dependency 'jobs/scheduled/purge_expired_ignored_users'
describe Jobs::PurgeExpiredIgnoredUsers do
subject { Jobs::PurgeExpiredIgnoredUsers.new.execute({}) }
context "with no ignored users" do
it "does nothing" do
expect { subject }.to_not change { IgnoredUser.count }
end
end
context "when some ignored users exist" do
fab!(:tarek) { Fabricate(:user, username: "tarek") }
fab!(:matt) { Fabricate(:user, username: "matt") }
fab!(:john) { Fabricate(:user, username: "john") }
before do
Fabricate(:ignored_user, user: tarek, ignored_user: matt)
Fabricate(:ignored_user, user: tarek, ignored_user: john)
end
context "when no expired ignored users" do
it "does nothing" do
expect { subject }.to_not change { IgnoredUser.count }
end
end
context "when there are expired ignored users" do
fab!(:fred) { Fabricate(:user, username: "fred") }
it "purges expired ignored users" do
freeze_time(5.months.ago) do
Fabricate(:ignored_user, user: tarek, ignored_user: fred)
end
subject
expect(IgnoredUser.find_by(ignored_user: fred)).to be_nil
end
end
context "when there are expired ignored users by expiring_at" do
fab!(:fred) { Fabricate(:user, username: "fred") }
it "purges expired ignored users" do
Fabricate(:ignored_user, user: tarek, ignored_user: fred, expiring_at: 1.month.from_now)
freeze_time(2.months.from_now) do
subject
expect(IgnoredUser.find_by(ignored_user: fred)).to be_nil
end
end
end
end
end