discourse/spec/jobs/tl3_promotions_spec.rb
Luciano Sousa b3d769ff4f Update rspec syntax to v3
update rspec syntax to v3

change syntax to rspec v3

oops. fix typo

mailers classes with rspec3 syntax

helpers with rspec3 syntax

jobs with rspec3 syntax

serializers with rspec3 syntax

views with rspec3 syntax

support to rspec3 syntax

category spec with rspec3 syntax
2015-01-05 11:59:30 -03:00

71 lines
2.3 KiB
Ruby

require 'spec_helper'
describe Jobs::Tl3Promotions do
subject(:run_job) { described_class.new.execute({}) }
it "promotes tl2 user who qualifies for tl3" do
_tl2_user = Fabricate(:user, trust_level: TrustLevel[2])
TrustLevel3Requirements.any_instance.stubs(:requirements_met?).returns(true)
Promotion.any_instance.expects(:change_trust_level!).with(TrustLevel[3], anything).once
run_job
end
it "doesn't promote tl1 and tl0 users who have met tl3 requirements" do
_tl1_user = Fabricate(:user, trust_level: TrustLevel[1])
_tl0_user = Fabricate(:user, trust_level: TrustLevel[0])
TrustLevel3Requirements.any_instance.expects(:requirements_met?).never
Promotion.any_instance.expects(:change_trust_level!).never
run_job
end
context "tl3 user who doesn't qualify for tl3 anymore" do
def create_leader_user
user = Fabricate(:user, trust_level: TrustLevel[2])
TrustLevel3Requirements.any_instance.stubs(:requirements_met?).returns(true)
expect(Promotion.new(user).review_tl2).to eq(true)
user
end
before do
SiteSetting.tl3_promotion_min_duration = 3
end
it "demotes if was promoted more than X days ago" do
user = nil
Timecop.freeze(4.days.ago) do
user = create_leader_user
end
TrustLevel3Requirements.any_instance.stubs(:requirements_met?).returns(false)
TrustLevel3Requirements.any_instance.stubs(:requirements_lost?).returns(true)
run_job
expect(user.reload.trust_level).to eq(TrustLevel[2])
end
it "doesn't demote if user was promoted recently" do
user = nil
Timecop.freeze(1.day.ago) do
user = create_leader_user
end
TrustLevel3Requirements.any_instance.stubs(:requirements_met?).returns(false)
TrustLevel3Requirements.any_instance.stubs(:requirements_lost?).returns(true)
run_job
expect(user.reload.trust_level).to eq(TrustLevel[3])
end
it "doesn't demote if user hasn't lost requirements (low water mark)" do
user = nil
Timecop.freeze(4.days.ago) do
user = create_leader_user
end
TrustLevel3Requirements.any_instance.stubs(:requirements_met?).returns(false)
TrustLevel3Requirements.any_instance.stubs(:requirements_lost?).returns(false)
run_job
expect(user.reload.trust_level).to eq(TrustLevel[3])
end
end
end