2021-11-12 10:00:48 -05:00
|
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
|
|
describe FirstAcceptedPostSolutionValidator do
|
|
|
|
|
fab!(:user_tl1) { Fabricate(:user, trust_level: TrustLevel[1]) }
|
|
|
|
|
|
2022-10-03 16:21:31 -04:00
|
|
|
|
context 'when user is under max trust level' do
|
|
|
|
|
context 'with no post accepted yet' do
|
2021-11-12 10:00:48 -05:00
|
|
|
|
it 'validates the post' do
|
|
|
|
|
post_1 = create_post(user: user_tl1)
|
|
|
|
|
expect(described_class.check(post_1, trust_level: TrustLevel[2])).to eq(true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2022-10-03 16:21:31 -04:00
|
|
|
|
context 'with already had accepted posts' do
|
2021-11-12 10:00:48 -05:00
|
|
|
|
before do
|
|
|
|
|
accepted_post = create_post(user: user_tl1)
|
|
|
|
|
DiscourseSolved.accept_answer!(accepted_post, Discourse.system_user)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'doesn’t validate the post' do
|
|
|
|
|
post_1 = create_post(user: user_tl1)
|
|
|
|
|
expect(described_class.check(post_1, trust_level: TrustLevel[2])).to eq(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2022-10-03 16:21:31 -04:00
|
|
|
|
context 'when a user is above or equal max trust level' do
|
|
|
|
|
context 'with no post accepted yet' do
|
2021-11-12 10:00:48 -05:00
|
|
|
|
it 'doesn’t validate the post' do
|
|
|
|
|
post_1 = create_post(user: user_tl1)
|
|
|
|
|
expect(described_class.check(post_1, trust_level: TrustLevel[1])).to eq(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2022-10-03 16:21:31 -04:00
|
|
|
|
context 'when a post is already accepted' do
|
2021-11-12 10:00:48 -05:00
|
|
|
|
before do
|
|
|
|
|
accepted_post = create_post(user: user_tl1)
|
|
|
|
|
DiscourseSolved.accept_answer!(accepted_post, Discourse.system_user)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it 'doesn’t validate the post' do
|
|
|
|
|
post_1 = create_post(user: user_tl1)
|
|
|
|
|
expect(described_class.check(post_1, trust_level: TrustLevel[1])).to eq(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2022-10-03 16:21:31 -04:00
|
|
|
|
context 'when using any trust level' do
|
2021-11-12 10:00:48 -05:00
|
|
|
|
it 'validates the post' do
|
|
|
|
|
post_1 = create_post(user: user_tl1)
|
|
|
|
|
expect(described_class.check(post_1, trust_level: 'any')).to eq(true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2022-10-03 16:21:31 -04:00
|
|
|
|
context 'when user is system' do
|
2021-11-12 10:00:48 -05:00
|
|
|
|
it 'doesn’t validate the post' do
|
|
|
|
|
post_1 = create_post(user: Discourse.system_user)
|
|
|
|
|
expect(described_class.check(post_1, trust_level: 'any')).to eq(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2022-10-03 16:21:31 -04:00
|
|
|
|
context 'when post is a PM' do
|
2021-11-12 10:00:48 -05:00
|
|
|
|
it 'doesn’t validate the post' do
|
|
|
|
|
post_1 = create_post(user: user_tl1, target_usernames: [user_tl1.username], archetype: Archetype.private_message)
|
|
|
|
|
expect(described_class.check(post_1, trust_level: 'any')).to eq(false)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|