discourse/plugins/poll/spec/serializers/poll_option_serializer_spec.rb
2023-01-07 11:11:37 +00:00

57 lines
1.4 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# frozen_string_literal: true
def serialize_option(option, user)
PollOptionSerializer.new(
option,
root: false,
scope: {
can_see_results: poll.can_see_results?(user),
},
)
end
RSpec.describe PollOptionSerializer do
let(:voter) { Fabricate(:user) }
let(:poll) { post.polls.first }
before { poll.poll_votes.create!(poll_option_id: poll.poll_options.first.id, user_id: voter.id) }
context "when poll results are public" do
let(:post) { Fabricate(:post, raw: "[poll]\n- A\n- B\n[/poll]") }
context "when user is not staff" do
let(:user) { Fabricate(:user) }
it "include votes" do
serializer = serialize_option(poll.poll_options.first, user)
expect(serializer.include_votes?).to eq(true)
end
end
end
context "when poll results are staff only" do
let(:post) { Fabricate(:post, raw: "[poll results=staff_only]\n- A\n- B\n[/poll]") }
context "when user is not staff" do
let(:user) { Fabricate(:user) }
it "doesnt include votes" do
serializer = serialize_option(poll.poll_options.first, user)
expect(serializer.include_votes?).to eq(false)
end
end
context "when user is staff" do
let(:admin) { Fabricate(:admin) }
it "includes votes" do
serializer = serialize_option(poll.poll_options.first, admin)
expect(serializer.include_votes?).to eq(true)
end
end
end
end