docbrown/spec/models/poll_skip_spec.rb
Ben Halpern 8ae057b06e
Beta polls feature (admin use only for now) (#3176)
* Initial poll features

* Add basic poll functionality

* Finish (maybe) beta poll functionality
2019-06-15 17:33:30 -04:00

35 lines
1.4 KiB
Ruby

require 'rails_helper'
RSpec.describe PollSkip, type: :model do
let(:article) { create(:article, featured: true) }
let(:user) { create(:user) }
let(:poll) { create(:poll, article_id: article.id) }
it "is unique across poll and user" do
PollSkip.create(user_id: user.id, poll_id: poll.id)
PollSkip.create(user_id: user.id, poll_id: poll.id)
PollSkip.create(user_id: user.id, poll_id: poll.id)
expect(PollSkip.all.size).to eq(1)
second_poll = create(:poll, article_id: article.id)
PollSkip.create(user_id: user.id, poll_id: second_poll.id)
expect(PollSkip.all.size).to eq(2)
end
it "is unique across user and poll votes for the poll" do
PollVote.create(user_id: user.id, poll_id: poll.id, poll_option_id: poll.poll_options.last.id)
PollSkip.create(user_id: user.id, poll_id: poll.id)
PollSkip.create(user_id: user.id, poll_id: poll.id)
expect(PollSkip.all.size).to eq(0)
second_poll = create(:poll, article_id: article.id)
PollSkip.create(user_id: user.id, poll_id: second_poll.id)
expect(PollSkip.all.size).to eq(1)
end
it "is prevents a poll vote from being cast" do
PollSkip.create(user_id: user.id, poll_id: poll.id)
PollSkip.create(user_id: user.id, poll_id: poll.id)
PollVote.create(user_id: user.id, poll_id: poll.id, poll_option_id: poll.poll_options.last.id)
expect(PollSkip.all.size).to eq(1)
expect(PollVote.all.size).to eq(0)
end
end