Merge pull request #1993 from consul/1984-voting_messages

Voting messages
This commit is contained in:
Raimond Garcia
2017-10-06 17:57:17 +02:00
committed by GitHub
7 changed files with 41 additions and 8 deletions

View File

@@ -41,4 +41,8 @@ module PollsHelper
booth.name + location
end
def voted_before_sign_in(question)
current_user.current_sign_in_at >= question.answers.find_or_initialize_by(author: current_user).updated_at
end
end

View File

@@ -1,9 +1,9 @@
<div class="poll-question-answers">
<% if can? :answer, question %>
<% question.question_answers.each do |answer| %>
<% if @answers_by_question_id[question.id] == answer.title %>
<% if @answers_by_question_id[question.id] == answer.title && !voted_before_sign_in(question) %>
<span class="button answered"
title="<%= t("poll_questions.show.voted", answer: answer)%>">
title="<%= t("poll_questions.show.voted", answer: answer.title)%>">
<%= answer.title %>
</span>
<% else %>

View File

@@ -38,6 +38,11 @@
<%= t("polls.show.already_voted_in_booth") %>
</div>
<% else %>
<% if current_user && !@poll.votable_by?(current_user) %>
<div class="callout warning">
<%= t("polls.show.already_voted_in_web") %>
</div>
<% end %>
<% @questions.each do |question| %>
<%= render 'polls/questions/question', question: question %>
<% end %>

View File

@@ -478,7 +478,8 @@ en:
help_text_1: "Voting takes place when a citizen proposal supports reaches 1% of the census with voting rights. Voting can also include questions that the City Council ask to the citizens decision."
help_text_2: "To participate in the next vote you have to sign up on %{org} and verify your account. All registered voters in the city over 16 years old can vote. The results of all votes are binding on the government."
show:
already_voted_in_booth: "You have already participated in a booth for this poll."
already_voted_in_booth: "You have already participated in a physical booth. You can not participate again."
already_voted_in_web: "You have already participated in this poll. If you vote again it will be overwritten."
back: Back to voting
cant_answer_not_logged_in: "You must %{signin} or %{signup} to participate."
signin: Sign in

View File

@@ -478,7 +478,8 @@ es:
help_text_1: "Las votaciones se convocan cuando una propuesta ciudadana alcanza el 1% de apoyos del censo con derecho a voto. En las votaciones también se pueden incluir cuestiones que el Ayuntamiento somete a decisión directa de la ciudadanía."
help_text_2: "Para participar en la próxima votación tienes que registrarte en %{org} y verificar tu cuenta. Pueden votar todas las personas empadronadas en la ciudad mayores de 16 años. Los resultados de todas las votaciones serán vinculantes para el gobierno."
show:
already_voted_in_booth: "Ya has participado en esta votación en una urna."
already_voted_in_booth: "Ya has participado en esta votación en urnas presenciales, no puedes volver a participar."
already_voted_in_web: "Ya has participado en esta votación. Si vuelves a votar se sobreescribirá tu resultado anterior."
back: Volver a votaciones
cant_answer_not_logged_in: "Necesitas %{signin} o %{signup} para participar."
signin: iniciar sesión

View File

@@ -209,8 +209,7 @@ feature 'Polls' do
visit poll_path(poll)
expect(page).to have_link('Han Solo')
expect(page).to_not have_link('Chewbacca')
expect(page).to have_content('Chewbacca')
expect(page).to have_link('Chewbacca')
end
scenario 'Level 2 users answering', :js do

View File

@@ -91,9 +91,32 @@ feature "Voter" do
visit poll_path(poll)
expect(page).to_not have_link('Yes')
expect(page).to have_content "You have already participated in a booth for this poll."
expect(page).to have_content "You have already participated in a physical booth. You can not participate again."
expect(Poll::Voter.count).to eq(1)
end
scenario "Trying to vote in web again", :js do
login_as user
vote_for_poll_via_web(poll, question)
visit poll_path(poll)
expect(page).to have_content "You have already participated in this poll. If you vote again it will be overwritten."
within("#poll_question_#{question.id}_answers") do
expect(page).to_not have_link('Yes')
end
click_link "Sign out"
login_as user
visit poll_path(poll)
within("#poll_question_#{question.id}_answers") do
expect(page).to have_link('Yes')
expect(page).to have_link('No')
end
end
end
end