FEATURE: add caps to trust level 3 requirements for posts read and topics viewed, configurable in settings

This commit is contained in:
Neil Lalonde 2016-05-25 14:55:37 -04:00
parent cf97efb643
commit a4cd068481
4 changed files with 31 additions and 3 deletions

View File

@ -95,7 +95,10 @@ class TrustLevel3Requirements
end end
def min_topics_viewed def min_topics_viewed
(TrustLevel3Requirements.num_topics_in_time_period.to_i * (SiteSetting.tl3_requires_topics_viewed.to_f / 100.0)).round [
(TrustLevel3Requirements.num_topics_in_time_period.to_i * (SiteSetting.tl3_requires_topics_viewed.to_f / 100.0)).round,
SiteSetting.tl3_requires_topics_viewed_cap
].min
end end
def posts_read def posts_read
@ -103,7 +106,10 @@ class TrustLevel3Requirements
end end
def min_posts_read def min_posts_read
(TrustLevel3Requirements.num_posts_in_time_period.to_i * (SiteSetting.tl3_requires_posts_read.to_f / 100.0)).round [
(TrustLevel3Requirements.num_posts_in_time_period.to_i * (SiteSetting.tl3_requires_posts_read.to_f / 100.0)).round,
SiteSetting.tl3_requires_posts_read_cap
].min
end end
def topics_viewed_all_time def topics_viewed_all_time

View File

@ -1068,7 +1068,9 @@ en:
tl3_requires_days_visited: "Minimum number of days that a user needs to have visited the site in the last (tl3 time period) days to qualify for promotion to trust level 3. Set higher than tl3 time period to disable promotions to tl3. (0 or higher)" tl3_requires_days_visited: "Minimum number of days that a user needs to have visited the site in the last (tl3 time period) days to qualify for promotion to trust level 3. Set higher than tl3 time period to disable promotions to tl3. (0 or higher)"
tl3_requires_topics_replied_to: "Minimum number of topics a user needs to have replied to in the last (tl3 time period) days to qualify for promotion to trust level 3. (0 or higher)" tl3_requires_topics_replied_to: "Minimum number of topics a user needs to have replied to in the last (tl3 time period) days to qualify for promotion to trust level 3. (0 or higher)"
tl3_requires_topics_viewed: "The percentage of topics created in the last (tl3 time period) days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)" tl3_requires_topics_viewed: "The percentage of topics created in the last (tl3 time period) days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)"
tl3_requires_topics_viewed_cap: "The maximum required number of topics viewed in the last (tl3 time period) days."
tl3_requires_posts_read: "The percentage of posts created in the last (tl3 time period) days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)" tl3_requires_posts_read: "The percentage of posts created in the last (tl3 time period) days that a user needs to have viewed to qualify for promotion to trust level 3. (0 to 100)"
tl3_requires_posts_read_cap: "The maximum required number of posts read in the last (tl3 time period) days."
tl3_requires_topics_viewed_all_time: "The minimum total number of topics a user must have viewed to qualify for trust level 3." tl3_requires_topics_viewed_all_time: "The minimum total number of topics a user must have viewed to qualify for trust level 3."
tl3_requires_posts_read_all_time: "The minimum total number of posts a user must have read to qualify for trust level 3." tl3_requires_posts_read_all_time: "The minimum total number of posts a user must have read to qualify for trust level 3."
tl3_requires_max_flagged: "User must not have had more than x posts flagged by x different users in the last (tl3 time period) days to qualify for promotion to trust level 3, where x is this setting's value. (0 or higher)" tl3_requires_max_flagged: "User must not have had more than x posts flagged by x different users in the last (tl3 time period) days to qualify for promotion to trust level 3, where x is this setting's value. (0 or higher)"

View File

@ -708,10 +708,16 @@ trust:
default: 25 default: 25
min: 0 min: 0
max: 100 max: 100
tl3_requires_topics_viewed_cap:
default: 500
min: 0
tl3_requires_posts_read: tl3_requires_posts_read:
default: 25 default: 25
min: 0 min: 0
max: 100 max: 100
tl3_requires_posts_read_cap:
default: 20000
min: 0
tl3_requires_topics_viewed_all_time: tl3_requires_topics_viewed_all_time:
default: 200 default: 200
min: 0 min: 0

View File

@ -35,12 +35,26 @@ describe TrustLevel3Requirements do
expect(tl3_requirements.min_topics_viewed).to eq(23) expect(tl3_requirements.min_topics_viewed).to eq(23)
end end
it "min_topics_viewed is capped" do
SiteSetting.tl3_requires_topics_viewed = 75
described_class.stubs(:num_topics_in_time_period).returns(31)
SiteSetting.tl3_requires_topics_viewed_cap = 20
expect(tl3_requirements.min_topics_viewed).to eq(20)
end
it "min_posts_read depends on site setting and number of posts created" do it "min_posts_read depends on site setting and number of posts created" do
SiteSetting.stubs(:tl3_requires_posts_read).returns(66) SiteSetting.stubs(:tl3_requires_posts_read).returns(66)
described_class.stubs(:num_posts_in_time_period).returns(1234) described_class.stubs(:num_posts_in_time_period).returns(1234)
expect(tl3_requirements.min_posts_read).to eq(814) expect(tl3_requirements.min_posts_read).to eq(814)
end end
it "min_posts_read is capped" do
SiteSetting.tl3_requires_posts_read = 66
described_class.stubs(:num_posts_in_time_period).returns(1234)
SiteSetting.tl3_requires_posts_read_cap = 600
expect(tl3_requirements.min_posts_read).to eq(600)
end
it "min_topics_viewed_all_time depends on site setting" do it "min_topics_viewed_all_time depends on site setting" do
SiteSetting.stubs(:tl3_requires_topics_viewed_all_time).returns(75) SiteSetting.stubs(:tl3_requires_topics_viewed_all_time).returns(75)
expect(tl3_requirements.min_topics_viewed_all_time).to eq(75) expect(tl3_requirements.min_topics_viewed_all_time).to eq(75)
@ -243,7 +257,7 @@ describe TrustLevel3Requirements do
end end
end end
describe "requirements" do context "requirements with defaults" do
before do before do
tl3_requirements.stubs(:min_days_visited).returns(50) tl3_requirements.stubs(:min_days_visited).returns(50)