diff --git a/lib/new_post_manager.rb b/lib/new_post_manager.rb index 081e6e524f0..3f2f63eefb4 100644 --- a/lib/new_post_manager.rb +++ b/lib/new_post_manager.rb @@ -88,7 +88,7 @@ class NewPostManager return :post_count if ( user.trust_level <= TrustLevel.levels[:basic] && - user.post_count < SiteSetting.approve_post_count + (user.post_count + user.topic_count) < SiteSetting.approve_post_count ) return :trust_level if user.trust_level < SiteSetting.approve_unless_trust_level.to_i diff --git a/spec/components/new_post_manager_spec.rb b/spec/components/new_post_manager_spec.rb index e8f6fa16342..65cbe56cf30 100644 --- a/spec/components/new_post_manager_spec.rb +++ b/spec/components/new_post_manager_spec.rb @@ -71,6 +71,32 @@ describe NewPostManager do end end + context 'basic post/topic count restrictions' do + before do + SiteSetting.approve_post_count = 1 + end + + it "works with a correct `user_stat.post_count`" do + result = NewPostManager.default_handler(manager) + expect(result.action).to eq(:enqueued) + expect(result.reason).to eq(:post_count) + + manager.user.user_stat.update(post_count: 1) + result = NewPostManager.default_handler(manager) + expect(result).to eq(nil) + end + + it "works with a correct `user_stat.topic_count`" do + result = NewPostManager.default_handler(manager) + expect(result.action).to eq(:enqueued) + expect(result.reason).to eq(:post_count) + + manager.user.user_stat.update(topic_count: 1) + result = NewPostManager.default_handler(manager) + expect(result).to eq(nil) + end + end + context 'with a high approval post count and TL0' do before do SiteSetting.approve_post_count = 100