FIX: specs for search fix (#267)

Yesterday a quick fix was made with this PR https://github.com/discourse/discourse-assign/pull/266

Here are additional specs to ensure that serializer is not erroring
anymore
This commit is contained in:
Krzysztof Kotlarek 2021-12-14 11:26:15 +01:00 committed by GitHub
parent fe2f629975
commit 485aef0e69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 2 deletions

View File

@ -18,6 +18,8 @@ describe Search do
let(:post1) { Fabricate(:post) } let(:post1) { Fabricate(:post) }
let(:post2) { Fabricate(:post) } let(:post2) { Fabricate(:post) }
let(:post3) { Fabricate(:post) } let(:post3) { Fabricate(:post) }
let(:post4) { Fabricate(:post) }
let(:post5) { Fabricate(:post, topic: post4.topic) }
before do before do
add_to_assign_allowed_group(user) add_to_assign_allowed_group(user)
@ -26,15 +28,30 @@ describe Search do
Assigner.new(post1.topic, user).assign(user) Assigner.new(post1.topic, user).assign(user)
Assigner.new(post2.topic, user).assign(user2) Assigner.new(post2.topic, user).assign(user2)
Assigner.new(post3.topic, user).assign(user) Assigner.new(post3.topic, user).assign(user)
Assigner.new(post5, user).assign(user)
end end
it 'can find by status' do it 'can find by status' do
expect(Search.execute('in:assigned', guardian: Guardian.new(user)).posts.length).to eq(3) expect(Search.execute('in:assigned', guardian: Guardian.new(user)).posts.length).to eq(4)
Assigner.new(post3.topic, user).unassign Assigner.new(post3.topic, user).unassign
expect(Search.execute('in:unassigned', guardian: Guardian.new(user)).posts.length).to eq(1) expect(Search.execute('in:unassigned', guardian: Guardian.new(user)).posts.length).to eq(1)
expect(Search.execute("assigned:#{user.username}", guardian: Guardian.new(user)).posts.length).to eq(1) expect(Search.execute("assigned:#{user.username}", guardian: Guardian.new(user)).posts.length).to eq(2)
end
it 'serializes results' do
guardian = Guardian.new(user)
result = Search.execute('in:assigned', guardian: guardian)
serializer = GroupedSearchResultSerializer.new(result, scope: guardian)
indirectly_assigned_to = serializer.as_json[:topics].find { |topic| topic[:id] == post5.topic.id }[:indirectly_assigned_to]
expect(indirectly_assigned_to).to eq(post5.id => { assigned_to: {
assign_icon: "user-plus",
assign_path: "/u/#{user.username}/activity/assigned",
avatar_template: user.avatar_template,
name: user.name,
username: user.username
}, post_number: post5.post_number })
end end
end end
end end