Move create question to admin poll questions

Also move question actions to admin polls questions
This commit is contained in:
decabeza
2019-03-13 15:33:14 +01:00
parent 83e8d6035a
commit 000819e928
6 changed files with 87 additions and 53 deletions

View File

@@ -1,4 +1,7 @@
<h3><%= t("admin.polls.show.questions_title") %></h3> <h3 class="inline-block"><%= t("admin.polls.show.questions_title") %></h3>
<%= link_to t("admin.questions.index.create"), new_admin_question_path(poll_id: @poll.id),
class: "button float-right" %>
<% if @poll.questions.empty? %> <% if @poll.questions.empty? %>
<div class="callout primary margin-top"> <div class="callout primary margin-top">
@@ -9,6 +12,7 @@
<thead> <thead>
<tr> <tr>
<th><%= t("admin.polls.show.table_title") %></th> <th><%= t("admin.polls.show.table_title") %></th>
<th class="small-6"><%= t("admin.actions.actions") %></th>
</tr> </tr>
</thead> </thead>
<% @poll.questions.each do |question| %> <% @poll.questions.each do |question| %>
@@ -17,6 +21,20 @@
<strong> <strong>
<%= link_to question.title, admin_question_path(question) %> <%= link_to question.title, admin_question_path(question) %>
</strong> </strong>
<td>
<div class="small-4 column">
<%= link_to t("admin.polls.show.edit_answers"), admin_question_path(question),
class: "button hollow expanded" %>
</div>
<div class="small-4 column">
<%= link_to t("shared.edit"), edit_admin_question_path(question),
class: "button hollow expanded" %>
</div>
<div class="small-4 column">
<%= link_to t("shared.delete"), admin_question_path(question),
class: "button hollow alert expanded",
method: :delete %>
</div>
</td> </td>
</tr> </tr>
<% end %> <% end %>

View File

@@ -7,13 +7,19 @@
<%= f.hidden_field :proposal_id %> <%= f.hidden_field :proposal_id %>
<div class="small-12"> <div class="small-12">
<div class="small-12 medium-6 large-4"> <% if @poll.present? %>
<% select_options = Poll.all.map { |p| [p.name, p.id] } %> <%= f.hidden_field :poll_id, value: @poll.id %>
<%= f.select :poll_id, <% elsif @question.poll.present? %>
options_for_select(select_options), <%= f.hidden_field :poll_id, value: @question.poll.id %>
prompt: t("admin.questions.index.select_poll"), <% else %>
label: t("admin.questions.new.poll_label") %> <div class="small-12 medium-6 large-4">
</div> <% select_options = Poll.all.map { |p| [p.name, p.id] } %>
<%= f.select :poll_id,
options_for_select(select_options),
prompt: t("admin.questions.index.select_poll"),
label: t("admin.questions.new.poll_label") %>
</div>
<% end %>
<%= f.translatable_fields do |translations_form| %> <%= f.translatable_fields do |translations_form| %>
<%= translations_form.text_field :title %> <%= translations_form.text_field :title %>

View File

@@ -1,6 +1,12 @@
<%= back_link_to %> <%= back_link_to %>
<h2 class="margin-top"><%= t("admin.questions.new.title") %></h2> <h2 class="margin-top">
<% if @poll.present? %>
<%= t("admin.questions.new.title", poll: @poll.name) %>
<% else %>
<%= t("admin.questions.new.title_proposal") %>
<% end %>
</h2>
<div class="poll-question-form"> <div class="poll-question-form">
<%= render "form", form_url: admin_questions_path %> <%= render "form", form_url: admin_questions_path %>

View File

@@ -974,6 +974,7 @@ en:
no_questions: "There are no questions assigned to this poll." no_questions: "There are no questions assigned to this poll."
questions_title: "List of questions" questions_title: "List of questions"
table_title: "Title" table_title: "Title"
edit_answers: Edit answers
flash: flash:
question_added: "Question added to this poll" question_added: "Question added to this poll"
error_on_question_added: "Question could not be assigned to this poll" error_on_question_added: "Question could not be assigned to this poll"
@@ -994,7 +995,8 @@ en:
edit: edit:
title: "Edit Question" title: "Edit Question"
new: new:
title: "Create Question" title: "Create question to poll %{poll}"
title_proposal: "Create question"
poll_label: "Poll" poll_label: "Poll"
answers: answers:
images: images:

View File

@@ -973,6 +973,7 @@ es:
no_questions: "No hay preguntas asignadas a esta votación." no_questions: "No hay preguntas asignadas a esta votación."
questions_title: "Listado de preguntas asignadas" questions_title: "Listado de preguntas asignadas"
table_title: "Título" table_title: "Título"
edit_answers: Editar respuestas
flash: flash:
question_added: "Pregunta añadida a esta votación" question_added: "Pregunta añadida a esta votación"
error_on_question_added: "No se pudo asignar la pregunta" error_on_question_added: "No se pudo asignar la pregunta"
@@ -993,7 +994,8 @@ es:
edit: edit:
title: "Editar pregunta ciudadana" title: "Editar pregunta ciudadana"
new: new:
title: "Crear pregunta ciudadana" title: "Crear pregunta ciudadana para la votación %{poll}"
title_proposal: "Crear pregunta ciudadana"
poll_label: "Votación" poll_label: "Votación"
answers: answers:
images: images:

View File

@@ -17,16 +17,24 @@ feature "Admin poll questions" do
question1 = create(:poll_question, poll: poll1) question1 = create(:poll_question, poll: poll1)
question2 = create(:poll_question, poll: poll2) question2 = create(:poll_question, poll: poll2)
visit admin_questions_path visit admin_poll_path(poll1)
expect(page).to have_content(poll1.name)
within("#poll_question_#{question1.id}") do within("#poll_question_#{question1.id}") do
expect(page).to have_content(question1.title) expect(page).to have_content(question1.title)
expect(page).to have_content(poll1.name) expect(page).to have_content("Edit answers")
expect(page).to have_content("Edit")
expect(page).to have_content("Delete")
end end
visit admin_poll_path(poll2)
expect(page).to have_content(poll2.name)
within("#poll_question_#{question2.id}") do within("#poll_question_#{question2.id}") do
expect(page).to have_content(question2.title) expect(page).to have_content(question2.title)
expect(page).to have_content(poll2.name) expect(page).to have_content("Edit answers")
expect(page).to have_content("Edit")
expect(page).to have_content("Delete")
end end
end end
@@ -35,7 +43,8 @@ feature "Admin poll questions" do
poll = create(:poll, geozone_restricted: true, geozone_ids: [geozone.id]) poll = create(:poll, geozone_restricted: true, geozone_ids: [geozone.id])
question = create(:poll_question, poll: poll) question = create(:poll_question, poll: poll)
visit admin_question_path(question) visit admin_poll_path(poll)
click_link "#{question.title}"
expect(page).to have_content(question.title) expect(page).to have_content(question.title)
expect(page).to have_content(question.author.name) expect(page).to have_content(question.author.name)
@@ -44,17 +53,13 @@ feature "Admin poll questions" do
scenario "Create" do scenario "Create" do
poll = create(:poll, name: "Movies") poll = create(:poll, name: "Movies")
title = "Star Wars: Episode IV - A New Hope" title = "Star Wars: Episode IV - A New Hope"
description = %{
During the battle, Rebel spies managed to steal secret plans to the Empire's ultimate weapon, the DEATH STAR, an armored space station
with enough power to destroy an entire planet.
Pursued by the Empire's sinister agents, Princess Leia races home aboard her starship, custodian of the stolen plans that can save her
people and restore freedom to the galaxy....
}
visit admin_questions_path visit admin_poll_path(poll)
click_link "Create question" click_link "Create question"
select "Movies", from: "poll_question_poll_id" expect(page).to have_content("Create question to poll Movies")
expect(page).to have_selector("input[id='poll_question_poll_id'][value='#{poll.id}']",
visible: false)
fill_in "Question", with: title fill_in "Question", with: title
click_button "Save" click_button "Save"
@@ -101,9 +106,11 @@ feature "Admin poll questions" do
end end
scenario "Update" do scenario "Update" do
question1 = create(:poll_question) poll = create(:poll)
question1 = create(:poll_question, poll: poll)
visit admin_poll_path(poll)
visit admin_questions_path
within("#poll_question_#{question1.id}") do within("#poll_question_#{question1.id}") do
click_link "Edit" click_link "Edit"
end end
@@ -116,18 +123,15 @@ feature "Admin poll questions" do
expect(page).to have_content "Changes saved" expect(page).to have_content "Changes saved"
expect(page).to have_content new_title expect(page).to have_content new_title
visit admin_questions_path
expect(page).to have_content(new_title)
expect(page).not_to have_content(old_title) expect(page).not_to have_content(old_title)
end end
scenario "Destroy" do scenario "Destroy" do
question1 = create(:poll_question) poll = create(:poll)
question2 = create(:poll_question) question1 = create(:poll_question, poll: poll)
question2 = create(:poll_question, poll: poll)
visit admin_questions_path visit admin_poll_path(poll)
within("#poll_question_#{question1.id}") do within("#poll_question_#{question1.id}") do
click_link "Delete" click_link "Delete"
@@ -141,29 +145,20 @@ feature "Admin poll questions" do
context "Poll select box" do context "Poll select box" do
let(:poll) { create(:poll, name_en: "Name in English",
name_es: "Nombre en Español",
summary_en: "Summary in English",
summary_es: "Resumen en Español",
description_en: "Description in English",
description_es: "Descripción en Español") }
let(:question) { create(:poll_question, poll: poll,
title_en: "Question in English",
title_es: "Pregunta en Español") }
before do
@edit_question_url = edit_admin_question_path(question)
end
scenario "translates the poll name in options", :js do scenario "translates the poll name in options", :js do
visit @edit_question_url
expect(page).to have_select("poll_question_poll_id", options: [poll.name_en]) poll = create(:poll, name_en: "Name in English", name_es: "Nombre en Español")
proposal = create(:proposal)
visit admin_proposal_path(proposal)
click_link "Add this proposal to a poll to be voted"
expect(page).to have_select("poll_question_poll_id", options: ["Select Poll", poll.name_en])
select("Español", from: "locale-switcher") select("Español", from: "locale-switcher")
expect(page).to have_select("poll_question_poll_id", options: [poll.name_es]) expect(page).to have_select("poll_question_poll_id",
options: ["Seleccionar votación", poll.name_es])
end end
scenario "uses fallback if name is not translated to current locale", :js do scenario "uses fallback if name is not translated to current locale", :js do
@@ -171,13 +166,18 @@ feature "Admin poll questions" do
skip("Spec only useful when French falls back to Spanish") skip("Spec only useful when French falls back to Spanish")
end end
visit @edit_question_url poll = create(:poll, name_en: "Name in English", name_es: "Nombre en Español")
proposal = create(:proposal)
expect(page).to have_select("poll_question_poll_id", options: [poll.name_en]) visit admin_proposal_path(proposal)
click_link "Add this proposal to a poll to be voted"
expect(page).to have_select("poll_question_poll_id", options: ["Select Poll", poll.name_en])
select("Français", from: "locale-switcher") select("Français", from: "locale-switcher")
expect(page).to have_select("poll_question_poll_id", options: [poll.name_es]) expect(page).to have_select("poll_question_poll_id",
options: ["Sélectionner un vote", poll.name_es])
end end
end end