From 6952c9c9db5a0491420ef0b890e7fbaba163784f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 15 Oct 2018 16:33:46 +0200 Subject: [PATCH] Fix legislation options not being updated We broke this behaviour by introducing translations and not allowing the `id` parameter anymore. --- .../admin/legislation/questions_controller.rb | 2 +- .../admin/legislation/questions_spec.rb | 82 +++++++++++-------- 2 files changed, 50 insertions(+), 34 deletions(-) diff --git a/app/controllers/admin/legislation/questions_controller.rb b/app/controllers/admin/legislation/questions_controller.rb index 70c923ab3..8b6621773 100644 --- a/app/controllers/admin/legislation/questions_controller.rb +++ b/app/controllers/admin/legislation/questions_controller.rb @@ -47,7 +47,7 @@ class Admin::Legislation::QuestionsController < Admin::Legislation::BaseControll def question_params params.require(:legislation_question).permit( translation_params(::Legislation::Question), - question_options_attributes: [translation_params(::Legislation::QuestionOption)]) + question_options_attributes: [:id, translation_params(::Legislation::QuestionOption)]) end def resource diff --git a/spec/features/admin/legislation/questions_spec.rb b/spec/features/admin/legislation/questions_spec.rb index dcb6cc450..80a331717 100644 --- a/spec/features/admin/legislation/questions_spec.rb +++ b/spec/features/admin/legislation/questions_spec.rb @@ -113,11 +113,8 @@ feature 'Admin legislation questions' do end end - context "Special translation behaviour" do - - let!(:question) { create(:legislation_question, - title_en: "Title in English", - title_es: "Título en Español") } + context "Legislation options" do + let!(:question) { create(:legislation_question) } let(:edit_question_url) do edit_admin_legislation_process_question_path(question.process, question) @@ -132,49 +129,68 @@ feature 'Admin legislation questions' do end end - scenario 'Add translation for question option', :js do + scenario "Edit an existing option", :js do + create(:legislation_question_option, question: question, value: "Original") + visit edit_question_url - - click_on 'Add option' - - find('#nested-question-options input').set('Option 1') - - click_link "Español" - - find('#nested-question-options input').set('Opción 1') - + find("#nested-question-options input").set("Changed") click_button "Save changes" + + expect(page).not_to have_css "#error_explanation" + visit edit_question_url - - expect(page).to have_field(field_en[:id], with: 'Option 1') - - click_link "Español" - - expect(page).to have_field(field_es[:id], with: 'Opción 1') + expect(page).to have_field(field_en[:id], with: "Changed") end - scenario 'Add new question option after changing active locale', :js do - visit edit_question_url + context "Special translation behaviour" do + before do + question.update_attributes(title_en: "Title in English", title_es: "Título en Español") + end - click_link "Español" + scenario 'Add translation for question option', :js do + visit edit_question_url - click_on 'Add option' + click_on 'Add option' - find('#nested-question-options input').set('Opción 1') + find('#nested-question-options input').set('Option 1') - click_link "English" + click_link "Español" - find('#nested-question-options input').set('Option 1') + find('#nested-question-options input').set('Opción 1') - click_button "Save changes" + click_button "Save changes" + visit edit_question_url - visit edit_question_url + expect(page).to have_field(field_en[:id], with: 'Option 1') - expect(page).to have_field(field_en[:id], with: 'Option 1') + click_link "Español" - click_link "Español" + expect(page).to have_field(field_es[:id], with: 'Opción 1') + end - expect(page).to have_field(field_es[:id], with: 'Opción 1') + scenario 'Add new question option after changing active locale', :js do + visit edit_question_url + + click_link "Español" + + click_on 'Add option' + + find('#nested-question-options input').set('Opción 1') + + click_link "English" + + find('#nested-question-options input').set('Option 1') + + click_button "Save changes" + + visit edit_question_url + + expect(page).to have_field(field_en[:id], with: 'Option 1') + + click_link "Español" + + expect(page).to have_field(field_es[:id], with: 'Opción 1') + end end end end