From 04ad8bb6c7cbf307a8367aae79c7c89a29aebfc2 Mon Sep 17 00:00:00 2001 From: Fernando Blat Date: Fri, 10 Feb 2017 09:48:28 +0100 Subject: [PATCH] Refactor JS and add update test --- .../javascripts/legislation_admin.js.coffee | 49 ++++--------------- .../legislation/processes/_form.html.erb | 16 +++--- .../admin/legislation/processes_spec.rb | 23 +++++++++ 3 files changed, 40 insertions(+), 48 deletions(-) diff --git a/app/assets/javascripts/legislation_admin.js.coffee b/app/assets/javascripts/legislation_admin.js.coffee index 22c984c6e..c61d9cea1 100644 --- a/app/assets/javascripts/legislation_admin.js.coffee +++ b/app/assets/javascripts/legislation_admin.js.coffee @@ -1,45 +1,14 @@ App.LegislationAdmin = initialize: -> - $("input[type='checkbox']#debate_phase_active").on + $("input[type='checkbox'][data-disable-date]").on change: -> - if $("input[type='checkbox']#debate_phase_active").is(':checked') - console.log("checked") - $("input#debate_start_date").removeAttr("disabled") - $("input#debate_end_date").removeAttr("disabled") - else - console.log("unchecked") - $("input#debate_start_date").val("") - $("input#debate_start_date").attr("disabled", true) - $("input#debate_end_date").val("") - $("input#debate_end_date").attr("disabled", true) - - $("input[type='checkbox']#allegations_phase_active").on - change: -> - if $("input[type='checkbox']#allegations_phase_active").is(':checked') - $("input#allegations_start_date").removeAttr("disabled") - $("input#allegations_end_date").removeAttr("disabled") - else - $("input#allegations_start_date").val("") - $("input#allegations_start_date").prop( "disabled", true ) - $("input#allegations_end_date").val("") - $("input#allegations_end_date").prop( "disabled", true ) - - $("input[type='checkbox']#draft_publication_phase_active").on - change: -> - if $("input[type='checkbox']#draft_publication_phase_active").is(':checked') - $("input#draft_publication_date").removeAttr("disabled") - else - $("input#draft_publication_date").val("") - $("input#draft_publication_date").prop( "disabled", true ) - - $("input[type='checkbox']#final_version_publication_phase_active").on - change: -> - if $("input[type='checkbox']#final_version_publication_phase_active").is(':checked') - $("input#final_publication_date").removeAttr("disabled") - else - $("input#final_publication_date").val("") - $("input#final_publication_date").prop( "disabled", true ) - - + checkbox = $(this) + parent = $(this).parents('.row:eq(0)') + date_selector = $(this).data('disable-date') + parent.find("input[type='text'][id^='"+date_selector+"']").each -> + if checkbox.is(':checked') + $(this).removeAttr("disabled") + else + $(this).val("") diff --git a/app/views/admin/legislation/processes/_form.html.erb b/app/views/admin/legislation/processes/_form.html.erb index c85d2e1c1..d78675890 100644 --- a/app/views/admin/legislation/processes/_form.html.erb +++ b/app/views/admin/legislation/processes/_form.html.erb @@ -64,8 +64,8 @@ id: "debate_end_date" %>
- <%= check_box_tag :debate_phase_active, @process.active_phase?(:debate), @process.new_record? || @process.active_phase?(:debate) %> - <%= t('admin.legislation.processes.form.active') %> + <%= check_box_tag :debate_phase_active, @process.active_phase?(:debate), @process.new_record? || @process.active_phase?(:debate), data: {disable_date: "debate"} %> + <%= label_tag :debate_phase_active, t('admin.legislation.processes.form.active') %>
@@ -92,8 +92,8 @@ id: "allegations_end_date" %>
- <%= check_box_tag :allegations_phase_active, @process.active_phase?(:allegations), @process.new_record? || @process.active_phase?(:allegations) %> - <%= t('admin.legislation.processes.form.active') %> + <%= check_box_tag :allegations_phase_active, @process.active_phase?(:allegations), @process.new_record? || @process.active_phase?(:allegations), data: {disable_date: "allegations"} %> + <%= label_tag :allegations_phase_active, t('admin.legislation.processes.form.active') %>
@@ -109,8 +109,8 @@ id: "draft_publication_date" %>
- <%= check_box_tag :draft_publication_phase_active, @process.active_phase?(:draft_publication), @process.new_record? || @process.active_phase?(:draft_publication) %> - <%= t('admin.legislation.processes.form.active') %> + <%= check_box_tag :draft_publication_phase_active, @process.active_phase?(:draft_publication), @process.new_record? || @process.active_phase?(:draft_publication), data: {disable_date: "draft_publication"} %> + <%= label_tag :draft_publication_phase_active, t('admin.legislation.processes.form.active') %>
@@ -126,8 +126,8 @@ id: "final_publication_date" %>
- <%= check_box_tag :final_version_publication_phase_active, @process.active_phase?(:final_version_publication), @process.new_record? || @process.active_phase?(:final_version_publication) %> - <%= t('admin.legislation.processes.form.active') %> + <%= check_box_tag :final_version_publication_phase_active, @process.active_phase?(:final_version_publication), @process.new_record? || @process.active_phase?(:final_version_publication), data: {disable_date: "final_publication"} %> + <%= label_tag :final_version_publication_phase_active, t('admin.legislation.processes.form.active') %>
diff --git a/spec/features/admin/legislation/processes_spec.rb b/spec/features/admin/legislation/processes_spec.rb index 0f1114f51..2218ae8d5 100644 --- a/spec/features/admin/legislation/processes_spec.rb +++ b/spec/features/admin/legislation/processes_spec.rb @@ -59,4 +59,27 @@ feature 'Admin legislation processes' do expect(page).to have_content 'An example legislation process' end end + + context 'Update' do + scenario 'Deactivate debate phase', js: true do + process = create(:legislation_process, title: 'An example legislation process') + visit admin_root_path + + within('#side_menu') do + click_link "Collaborative Legislation" + end + + click_link "An example legislation process" + + expect(page).to have_selector("h1", text: "An example legislation process") + expect(find("#debate_phase_active")).to be_checked + + uncheck "debate_phase_active" + click_button "Save changes" + + expect(page).to have_content "Process updated successfully" + expect(find("#debate_start_date").value).to be_blank + expect(find("#debate_end_date").value).to be_blank + end + end end