mirror of
https://github.com/discourse/discourse.git
synced 2024-12-04 21:15:48 +08:00
59097b207f
Over the years we accrued many spelling mistakes in the code base. This PR attempts to fix spelling mistakes and typos in all areas of the code that are extremely safe to change - comments - test descriptions - other low risk areas
87 lines
3.2 KiB
Ruby
87 lines
3.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe ::DiscoursePoll::Poll do
|
|
describe ".transform_for_user_field_override" do
|
|
it "Transforms UserField name if a matching CustomUserField is present" do
|
|
user_field_name = "Something Cool"
|
|
user_field = Fabricate(:user_field, name: user_field_name)
|
|
expect(::DiscoursePoll::Poll.transform_for_user_field_override(user_field_name)).to eq("user_field_#{user_field.id}")
|
|
end
|
|
|
|
it "does not transform UserField name if a matching CustomUserField is not present" do
|
|
user_field_name = "Something Cool"
|
|
user_field = Fabricate(:user_field, name: "Something Else!")
|
|
expect(::DiscoursePoll::Poll.transform_for_user_field_override(user_field_name)).to eq(user_field_name)
|
|
end
|
|
end
|
|
|
|
describe "can see results?" do
|
|
it "everyone can see results when results setting is always" do
|
|
post = Fabricate(:post, raw: "[poll]\n- A\n- B\n[/poll]")
|
|
user = Fabricate(:user)
|
|
expect(post.polls.first.can_see_results?(user)).to eq(true)
|
|
end
|
|
|
|
it "users who voted can see results when results setting is on_vote" do
|
|
post = Fabricate(:post, raw: "[poll results=on_vote]\n- A\n- B\n[/poll]")
|
|
user = Fabricate(:user)
|
|
poll = post.polls.first
|
|
option = poll.poll_options.first
|
|
|
|
expect(poll.can_see_results?(user)).to eq(false)
|
|
poll.poll_votes.create!(poll_option_id: option.id, user_id: user.id)
|
|
expect(poll.can_see_results?(user)).to eq(true)
|
|
end
|
|
|
|
it "author can see results when results setting is on_vote" do
|
|
author = Fabricate(:user)
|
|
post = Fabricate(:post, user: author, raw: "[poll results=on_vote]\n- A\n- B\n[/poll]")
|
|
poll = post.polls.first
|
|
option = poll.poll_options.first
|
|
|
|
expect(poll.can_see_results?(author)).to eq(true)
|
|
poll.poll_votes.create!(poll_option_id: option.id, user_id: author.id)
|
|
expect(poll.can_see_results?(author)).to eq(true)
|
|
end
|
|
|
|
it "everyone can see results when results setting is on_vote and poll is closed" do
|
|
post = Fabricate(:post, raw: "[poll results=on_vote]\n- A\n- B\n[/poll]")
|
|
user = Fabricate(:user)
|
|
poll = post.polls.first
|
|
|
|
expect(poll.can_see_results?(user)).to eq(false)
|
|
poll.update(close_at: Date.yesterday)
|
|
expect(poll.can_see_results?(user)).to eq(true)
|
|
end
|
|
|
|
it "only staff members can see results when results setting is staff_only" do
|
|
post = Fabricate(:post, raw: "[poll results=staff_only]\n- A\n- B\n[/poll]")
|
|
user = Fabricate(:user)
|
|
poll = post.polls.first
|
|
option = poll.poll_options.first
|
|
|
|
expect(poll.can_see_results?(user)).to eq(false)
|
|
poll.poll_votes.create!(poll_option_id: option.id , user_id: user.id)
|
|
expect(poll.can_see_results?(user)).to eq(false)
|
|
user.update!(moderator: true)
|
|
expect(poll.can_see_results?(user)).to eq(true)
|
|
end
|
|
end
|
|
|
|
describe 'when post is trashed' do
|
|
it "maintains the association" do
|
|
user = Fabricate(:user)
|
|
post = Fabricate(:post, raw: "[poll results=staff_only]\n- A\n- B\n[/poll]", user: user)
|
|
poll = post.polls.first
|
|
|
|
post.trash!
|
|
poll.reload
|
|
|
|
expect(poll.post).to eq(post)
|
|
end
|
|
|
|
end
|
|
end
|