diff --git a/spec/features/admin/poll/questions_spec.rb b/spec/features/admin/poll/questions_spec.rb index 90e55107c..a5e155848 100644 --- a/spec/features/admin/poll/questions_spec.rb +++ b/spec/features/admin/poll/questions_spec.rb @@ -18,7 +18,8 @@ feature 'Admin poll questions' do scenario 'Show' do geozone = create(:geozone) - question = create(:poll_question, geozone_ids: geozone.id) + poll = create(:poll, geozone_restricted: true, geozone_ids: [geozone.id]) + question = create(:poll_question, poll: poll) visit admin_question_path(question) @@ -27,7 +28,6 @@ feature 'Admin poll questions' do expect(page).to have_content(question.summary) expect(page).to have_content(question.author.name) expect(page).to have_content(question.valid_answers.join(" ")) - expect(page).to have_content(geozone.name) end scenario 'Create' do @@ -53,7 +53,6 @@ feature 'Admin poll questions' do end scenario 'Create from successful proposal index' do - geozones = create_list(:geozone, 3) proposal = create(:proposal, :successful) visit proposals_path @@ -115,4 +114,4 @@ feature 'Admin poll questions' do pending "Mark all city by default when creating a poll question from a successful proposal" -end \ No newline at end of file +end diff --git a/spec/features/polls/polls_spec.rb b/spec/features/polls/polls_spec.rb index df8ee5105..c4a8f55a2 100644 --- a/spec/features/polls/polls_spec.rb +++ b/spec/features/polls/polls_spec.rb @@ -82,7 +82,9 @@ feature 'Polls' do end scenario 'Level 1 users' do - create(:poll_question, poll: poll, geozone_ids: [geozone.id], valid_answers: 'Han Solo, Chewbacca') + poll.update(geozone_restricted: true) + poll.geozones << geozone + create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca') login_as(create(:user, geozone: geozone)) visit poll_path(poll) @@ -96,8 +98,9 @@ feature 'Polls' do end scenario 'Level 2 users in an incoming poll' do - incoming_poll = create(:poll, :incoming) - create(:poll_question, poll: incoming_poll, geozone_ids: [geozone.id], valid_answers: 'Rey, Finn') + incoming_poll = create(:poll, :incoming, geozone_restricted: true) + incoming_poll.geozones << geozone + create(:poll_question, poll: incoming_poll, valid_answers: 'Rey, Finn') login_as(create(:user, :level_two, geozone: geozone)) visit poll_path(incoming_poll) @@ -111,8 +114,9 @@ feature 'Polls' do end scenario 'Level 2 users in an expired poll' do - expired_poll = create(:poll, :expired) - create(:poll_question, poll: expired_poll, geozone_ids: [geozone.id], valid_answers: 'Luke, Leia') + expired_poll = create(:poll, :expired, geozone_restricted: true) + expired_poll.geozones << geozone + create(:poll_question, poll: expired_poll, valid_answers: 'Luke, Leia') login_as(create(:user, :level_two, geozone: geozone)) visit poll_path(expired_poll) @@ -126,21 +130,23 @@ feature 'Polls' do end scenario 'Level 2 users in a poll with questions for a geozone which is not theirs' do - create(:poll_question, poll: poll, geozone_ids: [], valid_answers: 'Vader, Palpatine') + poll.update(geozone_restricted: true) + poll.geozones << create(:geozone) + create(:poll_question, poll: poll, valid_answers: 'Vader, Palpatine') login_as(create(:user, :level_two)) visit poll_path(poll) - expect(page).to have_content("You can't answers the following 1 questions because are not available in your geozone.") - expect(page).to have_content('Vader') expect(page).to have_content('Palpatine') expect(page).to_not have_link('Vader') expect(page).to_not have_link('Palpatine') end - scenario 'Level 2 users reading a same-geozone question' do - create(:poll_question, poll: poll, geozone_ids: [geozone.id], valid_answers: 'Han Solo, Chewbacca') + 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') login_as(create(:user, :level_two, geozone: geozone)) visit poll_path(poll) @@ -148,9 +154,9 @@ feature 'Polls' do expect(page).to have_link('Chewbacca') end - scenario 'Level 2 users reading a all-geozones question' do - create(:poll_question, poll: poll, all_geozones: true, valid_answers: 'Han Solo, Chewbacca') - login_as(create(:user, :level_two, geozone: geozone)) + scenario 'Level 2 users reading a all-geozones poll' do + create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca') + login_as(create(:user, :level_two)) visit poll_path(poll) expect(page).to have_link('Han Solo') @@ -158,8 +164,8 @@ feature 'Polls' do end scenario 'Level 2 users who have already answered' do - question = create(:poll_question, poll: poll, geozone_ids:[geozone.id], valid_answers: 'Han Solo, Chewbacca') - user = create(:user, :level_two, geozone: geozone) + question = create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca') + user = create(:user, :level_two) create(:poll_partial_result, question: question, author: user, answer: 'Chewbacca') login_as user @@ -171,7 +177,9 @@ feature 'Polls' do end scenario 'Level 2 users answering', :js do - create(:poll_question, poll: poll, geozone_ids: [geozone.id], valid_answers: 'Han Solo, Chewbacca') + poll.update(geozone_restricted: true) + poll.geozones << geozone + create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca') user = create(:user, :level_two, geozone: geozone) login_as user visit poll_path(poll) @@ -183,4 +191,4 @@ feature 'Polls' do end end -end \ No newline at end of file +end diff --git a/spec/features/polls/questions_spec.rb b/spec/features/polls/questions_spec.rb index 8e6574c5f..af4c1058c 100644 --- a/spec/features/polls/questions_spec.rb +++ b/spec/features/polls/questions_spec.rb @@ -14,7 +14,7 @@ feature 'Poll Questions' do context 'Answering' do let(:geozone) { create(:geozone) } - + let(:poll) { create(:poll, geozone_restricted: true, geozone_ids: [geozone.id]) } scenario 'Non-logged in users' do question = create(:poll_question, valid_answers: 'Han Solo, Chewbacca') @@ -29,7 +29,7 @@ feature 'Poll Questions' do end scenario 'Level 1 users' do - question = create(:poll_question, geozone_ids: [geozone.id], valid_answers: 'Han Solo, Chewbacca') + question = create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca') login_as(create(:user, geozone: geozone)) visit question_path(question) @@ -43,9 +43,11 @@ feature 'Poll Questions' do end scenario 'Level 2 users in an poll question for a geozone which is not theirs' do - question = create(:poll_question, geozone_ids: [], valid_answers: 'Vader, Palpatine') - login_as(create(:user, :level_two)) + other_poll = create(:poll, geozone_restricted: true, geozone_ids: [create(:geozone).id]) + question = create(:poll_question, poll: other_poll, valid_answers: 'Vader, Palpatine') + + login_as(create(:user, :level_two, geozone: geozone)) visit question_path(question) expect(page).to have_content('Vader') @@ -55,7 +57,7 @@ feature 'Poll Questions' do end scenario 'Level 2 users who can answer' do - question = create(:poll_question, geozone_ids: [geozone.id], valid_answers: 'Han Solo, Chewbacca') + question = create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca') login_as(create(:user, :level_two, geozone: geozone)) visit question_path(question) @@ -65,7 +67,7 @@ feature 'Poll Questions' do end scenario 'Level 2 users who have already answered' do - question = create(:poll_question, geozone_ids:[geozone.id], valid_answers: 'Han Solo, Chewbacca') + question = create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca') user = create(:user, :level_two, geozone: geozone) create(:poll_partial_result, question: question, author: user, answer: 'Chewbacca') @@ -79,7 +81,7 @@ feature 'Poll Questions' do end scenario 'Level 2 users answering', :js do - question = create(:poll_question, geozone_ids: [geozone.id], valid_answers: 'Han Solo, Chewbacca') + question = create(:poll_question, poll: poll, valid_answers: 'Han Solo, Chewbacca') user = create(:user, :level_two, geozone: geozone) login_as user @@ -92,4 +94,4 @@ feature 'Poll Questions' do end end -end \ No newline at end of file +end diff --git a/spec/models/abilities/common_spec.rb b/spec/models/abilities/common_spec.rb index ff4fd315e..d1eddcd51 100644 --- a/spec/models/abilities/common_spec.rb +++ b/spec/models/abilities/common_spec.rb @@ -27,19 +27,26 @@ describe "Abilities::Common" do let(:current_poll) { create(:poll) } let(:incoming_poll) { create(:poll, :incoming) } + let(:incoming_poll_from_own_geozone) { create(:poll, :incoming, geozone_restricted: true, geozones: [geozone]) } + let(:incoming_poll_from_other_geozone) { create(:poll, :incoming, geozone_restricted: true, geozones: [create(:geozone)]) } let(:expired_poll) { create(:poll, :expired) } + let(:expired_poll_from_own_geozone) { create(:poll, :expired, geozone_restricted: true, geozones: [geozone]) } + let(:expired_poll_from_other_geozone) { create(:poll, :expired, geozone_restricted: true, geozones: [create(:geozone)]) } + let(:poll) { create(:poll, geozone_restricted: false) } + let(:poll_from_own_geozone) { create(:poll, geozone_restricted: true, geozones: [geozone]) } + let(:poll_from_other_geozone) { create(:poll, geozone_restricted: true, geozones: [create(:geozone)]) } - let(:poll_question_from_own_geozone) { create(:poll_question, geozones: [geozone]) } - let(:poll_question_from_other_geozone) { create(:poll_question, geozones: [create(:geozone)]) } - let(:poll_question_from_all_geozones) { create(:poll_question, all_geozones: true) } + let(:poll_question_from_own_geozone) { create(:poll_question, poll: poll_from_own_geozone) } + let(:poll_question_from_other_geozone) { create(:poll_question, poll: poll_from_other_geozone) } + let(:poll_question_from_all_geozones) { create(:poll_question, poll: poll) } - let(:expired_poll_question_from_own_geozone) { create(:poll_question, poll: expired_poll, geozones: [geozone]) } - let(:expired_poll_question_from_other_geozone) { create(:poll_question, poll: expired_poll, geozones: [create(:geozone)]) } - let(:expired_poll_question_from_all_geozones) { create(:poll_question, poll: expired_poll, all_geozones: true) } + let(:expired_poll_question_from_own_geozone) { create(:poll_question, poll: expired_poll_from_own_geozone) } + let(:expired_poll_question_from_other_geozone) { create(:poll_question, poll: expired_poll_from_other_geozone) } + let(:expired_poll_question_from_all_geozones) { create(:poll_question, poll: expired_poll) } - let(:incoming_poll_question_from_own_geozone) { create(:poll_question, poll: incoming_poll, geozones: [geozone]) } - let(:incoming_poll_question_from_other_geozone) { create(:poll_question, poll: incoming_poll, geozones: [create(:geozone)]) } - let(:incoming_poll_question_from_all_geozones) { create(:poll_question, poll: incoming_poll, all_geozones: true) } + let(:incoming_poll_question_from_own_geozone) { create(:poll_question, poll: incoming_poll_from_own_geozone) } + let(:incoming_poll_question_from_other_geozone) { create(:poll_question, poll: incoming_poll_from_other_geozone) } + let(:incoming_poll_question_from_all_geozones) { create(:poll_question, poll: incoming_poll) } it { should be_able_to(:index, Debate) } it { should be_able_to(:show, debate) } diff --git a/spec/models/poll/question_spec.rb b/spec/models/poll/question_spec.rb index fa572467a..057dfebca 100644 --- a/spec/models/poll/question_spec.rb +++ b/spec/models/poll/question_spec.rb @@ -20,7 +20,6 @@ RSpec.describe Poll::Question, type: :model do expect(q.author_visible_name).to eq(p.author.name) expect(q.proposal_id).to eq(p.id) expect(q.title).to eq(p.title) - expect(q.all_geozones).to be true end end