discourse/spec/components/promotion_spec.rb

90 lines
2.4 KiB
Ruby

require 'spec_helper'
require 'promotion'
describe Promotion do
context "visitor" do
let(:user) { Fabricate(:user, trust_level: TrustLevel.levels[:visitor])}
let(:promotion) { Promotion.new(user) }
it "doesn't raise an error with a nil user" do
-> { Promotion.new(nil).review }.should_not raise_error
end
context 'that has done nothing' do
let!(:result) { promotion.review }
it "returns false" do
result.should be_false
end
it "has not changed the user's trust level" do
user.trust_level.should == TrustLevel.levels[:visitor]
end
end
context "that has done the requisite things" do
before do
user.topics_entered = SiteSetting.basic_requires_topics_entered
user.posts_read_count = SiteSetting.basic_requires_read_posts
user.time_read = SiteSetting.basic_requires_time_spent_mins * 60
@result = promotion.review
end
it "returns true" do
@result.should be_true
end
it "has upgraded the user to basic" do
user.trust_level.should == TrustLevel.levels[:basic]
end
end
end
context "basic" do
let(:user) { Fabricate(:user, trust_level: TrustLevel.levels[:basic])}
let(:promotion) { Promotion.new(user) }
context 'that has done nothing' do
let!(:result) { promotion.review }
it "returns false" do
result.should be_false
end
it "has not changed the user's trust level" do
user.trust_level.should == TrustLevel.levels[:basic]
end
end
context "that has done the requisite things" do
before do
user.topics_entered = SiteSetting.regular_requires_topics_entered
user.posts_read_count = SiteSetting.regular_requires_read_posts
user.time_read = SiteSetting.regular_requires_time_spent_mins * 60
user.days_visited = SiteSetting.regular_requires_days_visited * 60
user.likes_received = SiteSetting.regular_requires_likes_received
user.likes_given = SiteSetting.regular_requires_likes_given
user.topic_reply_count = SiteSetting.regular_requires_topic_reply_count
@result = promotion.review
end
it "returns true" do
@result.should be_true
end
it "has upgraded the user to regular" do
user.trust_level.should == TrustLevel.levels[:regular]
end
end
end
end