fixes specs

This commit is contained in:
rgarcia
2017-10-04 17:46:25 +02:00
parent 4aaf681d2d
commit 007bcb7ec7
4 changed files with 54 additions and 13 deletions

View File

@@ -501,7 +501,7 @@ FactoryGirl.define do
valid_answers { Faker::Lorem.words(3).join(', ') }
end
factory :poll_question_answer, class: 'Poll::QuestionAnswer' do
factory :poll_question_answer, class: 'Poll::Question::Answer' do
association :question, factory: :poll_question
sequence(:title) { |n| "Question title #{n}" }
sequence(:description) { |n| "Question description #{n}" }

View File

@@ -73,7 +73,10 @@ feature 'Polls' do
end
scenario 'Non-logged in users' do
create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Han Solo')
answer2 = create(:poll_question_answer, question: question, title: 'Chewbacca')
visit poll_path(poll)
expect(page).to have_content('Han Solo')
@@ -87,7 +90,11 @@ feature 'Polls' do
scenario 'Level 1 users' do
poll.update(geozone_restricted: true)
poll.geozones << geozone
create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Han Solo')
answer2 = create(:poll_question_answer, question: question, title: 'Chewbacca')
login_as(create(:user, geozone: geozone))
visit poll_path(poll)
@@ -103,7 +110,11 @@ feature 'Polls' do
scenario 'Level 2 users in an incoming poll' do
incoming_poll = create(:poll, :incoming, geozone_restricted: true)
incoming_poll.geozones << geozone
create(:poll_question, poll: incoming_poll, valid_answers: 'Rey, Finn')
question = create(:poll_question, poll: incoming_poll)
answer1 = create(:poll_question_answer, question: question, title: 'Rey')
answer2 = create(:poll_question_answer, question: question, title: 'Finn')
login_as(create(:user, :level_two, geozone: geozone))
visit poll_path(incoming_poll)
@@ -119,7 +130,11 @@ feature 'Polls' do
scenario 'Level 2 users in an expired poll' do
expired_poll = create(:poll, :expired, geozone_restricted: true)
expired_poll.geozones << geozone
create(:poll_question, poll: expired_poll, valid_answers: 'Luke, Leia')
question = create(:poll_question, poll: expired_poll)
answer1 = create(:poll_question_answer, question: question, title: 'Luke')
answer2 = create(:poll_question_answer, question: question, title: 'Leia')
login_as(create(:user, :level_two, geozone: geozone))
visit poll_path(expired_poll)
@@ -135,7 +150,11 @@ feature 'Polls' do
scenario 'Level 2 users in a poll with questions for a geozone which is not theirs' do
poll.update(geozone_restricted: true)
poll.geozones << create(:geozone)
create(:poll_question, poll: poll, valid_answers: 'Vader, Palpatine')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Vader')
answer2 = create(:poll_question_answer, question: question, title: 'Palpatine')
login_as(create(:user, :level_two))
visit poll_path(poll)
@@ -149,7 +168,11 @@ feature 'Polls' do
scenario 'Level 2 users reading a same-geozone poll' do
poll.update(geozone_restricted: true)
poll.geozones << geozone
create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Han Solo')
answer2 = create(:poll_question_answer, question: question, title: 'Chewbacca')
login_as(create(:user, :level_two, geozone: geozone))
visit poll_path(poll)
@@ -158,7 +181,10 @@ feature 'Polls' do
end
scenario 'Level 2 users reading a all-geozones poll' do
create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Han Solo')
answer2 = create(:poll_question_answer, question: question, title: 'Chewbacca')
login_as(create(:user, :level_two))
visit poll_path(poll)
@@ -167,7 +193,9 @@ feature 'Polls' do
end
scenario 'Level 2 users who have already answered' do
question = create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Han Solo')
answer2 = create(:poll_question_answer, question: question, title: 'Chewbacca')
user = create(:user, :level_two)
create(:poll_answer, question: question, author: user, answer: 'Chewbacca')
@@ -182,7 +210,11 @@ feature 'Polls' do
scenario 'Level 2 users answering', :js do
poll.update(geozone_restricted: true)
poll.geozones << geozone
create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Han Solo')
answer2 = create(:poll_question_answer, question: question, title: 'Chewbacca')
user = create(:user, :level_two, geozone: geozone)
login_as user
@@ -197,7 +229,11 @@ feature 'Polls' do
scenario 'Level 2 users changing answer', :js do
poll.update(geozone_restricted: true)
poll.geozones << geozone
create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Han Solo')
answer2 = create(:poll_question_answer, question: question, title: 'Chewbacca')
user = create(:user, :level_two, geozone: geozone)
login_as user

View File

@@ -6,7 +6,9 @@ feature "Voter" do
scenario "Voting via web", :js do
poll = create(:poll)
question = create(:poll_question, poll: poll, valid_answers: 'Yes, No')
question = create(:poll_question, poll: poll)
answer1 = create(:poll_question_answer, question: question, title: 'Yes')
answer2 = create(:poll_question_answer, question: question, title: 'No')
user = create(:user, :level_two)
login_as user
@@ -48,7 +50,9 @@ feature "Voter" do
context "Trying to vote the same poll in booth and web" do
let(:poll) { create(:poll) }
let(:question) { create(:poll_question, poll: poll, valid_answers: 'Yes, No') }
let(:question) { create(:poll_question, poll: poll) }
let!(:answer1) { create(:poll_question_answer, question: question, title: 'Yes') }
let!(:answer2) { create(:poll_question_answer, question: question, title: 'No') }
let!(:user) { create(:user, :in_census) }
let(:officer) { create(:poll_officer) }

View File

@@ -26,6 +26,7 @@ describe Poll::Answer do
end
it "should be valid for answers included in the Poll::Question's list" do
skip "review when removing valid_answers"
question = create(:poll_question, valid_answers: 'One, Two, Three')
expect(build(:poll_answer, question: question, answer: 'One')).to be_valid
expect(build(:poll_answer, question: question, answer: 'Two')).to be_valid