42 lines
1.5 KiB
Ruby
42 lines
1.5 KiB
Ruby
describe Poll, type: :model do
|
|
let(:status) { FactoryGirl.create(:status_message) }
|
|
let(:poll) { Poll.new(question: "What do you think about apples?", status_message: status) }
|
|
|
|
describe "validation" do
|
|
it "should not create a poll when it has less than two answers" do
|
|
poll.poll_answers.build(answer: "1").poll = poll
|
|
expect(poll).not_to be_valid
|
|
end
|
|
|
|
it "should create a poll when it has more than two answers" do
|
|
poll.poll_answers.build(answer: "1").poll = poll
|
|
poll.poll_answers.build(answer: "2").poll = poll
|
|
expect(poll).to be_valid
|
|
end
|
|
|
|
it "should not create a poll when question in blank" do
|
|
poll.question = " "
|
|
poll.valid?
|
|
expect(poll.errors).to have_key(:question)
|
|
end
|
|
end
|
|
|
|
describe "poll_participation" do
|
|
it "should return the answer object after a user voted in a poll" do
|
|
answer = poll.poll_answers.build(answer: "1")
|
|
answer.poll = poll
|
|
poll.poll_answers.build(answer: "2").poll = poll
|
|
poll.save
|
|
participation = poll.poll_participations.create(poll_answer: answer, author: alice.person)
|
|
expect(poll.participation_answer(alice)).to eql(participation)
|
|
end
|
|
|
|
it "should return nil if a user did not participate in a poll" do
|
|
answer = poll.poll_answers.build(answer: "1")
|
|
answer.poll = poll
|
|
poll.poll_answers.build(answer: "2").poll = poll
|
|
poll.save
|
|
expect(poll.participation_answer(alice)).to eql(nil)
|
|
end
|
|
end
|
|
end
|