From 5ad41d9ac71c033b564d55618a652d4b4b7635aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Tue, 2 Jul 2019 21:22:14 +0200 Subject: [PATCH] Add a `break` to avoid case fallthrough In JavaScript, when there isn't a `break` or `return` statement inside a `switch` case, the next case will be executed as well. That wasn't a problem here because CoffeeScript automatically inserts a `return` statement in this specific situation. However, since we don't want to return the result of the `hide()` operation, it might be easy to accidentally remove the `return` statement, causing the code to break. I've added a test for the scenario where neither `break` nor `return` statements are present, so we don't run into this error. --- app/assets/javascripts/polls_admin.js.coffee | 1 + spec/features/admin/poll/shifts_spec.rb | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/app/assets/javascripts/polls_admin.js.coffee b/app/assets/javascripts/polls_admin.js.coffee index 343a7c255..a2d0569a7 100644 --- a/app/assets/javascripts/polls_admin.js.coffee +++ b/app/assets/javascripts/polls_admin.js.coffee @@ -7,6 +7,7 @@ App.PollsAdmin = when "vote_collection" $("select[class='js-shift-vote-collection-dates']").show() $("select[class='js-shift-recount-scrutiny-dates']").hide() + break when "recount_scrutiny" $("select[class='js-shift-recount-scrutiny-dates']").show() $("select[class='js-shift-vote-collection-dates']").hide() diff --git a/spec/features/admin/poll/shifts_spec.rb b/spec/features/admin/poll/shifts_spec.rb index 1aead8555..8e02ca9b4 100644 --- a/spec/features/admin/poll/shifts_spec.rb +++ b/spec/features/admin/poll/shifts_spec.rb @@ -124,6 +124,24 @@ describe "Admin shifts" do expect(page).to have_select("shift_date_recount_scrutiny_date", options: ["Select day", *recount_scrutiny_dates]) end + scenario "Change option from Recount & Scrutinity to Collect Votes", :js do + booth = create(:poll_booth) + officer = create(:poll_officer) + + create(:poll_shift, :vote_collection_task, officer: officer, booth: booth) + create(:poll_shift, :recount_scrutiny_task, officer: officer, booth: booth) + + visit new_admin_booth_shift_path(booth, officer_id: officer.id) + + select "Recount & Scrutiny", from: "shift_task" + + expect(page).to have_select("shift_date_recount_scrutiny_date", options: ["Select day"]) + + select "Collect Votes", from: "shift_task" + + expect(page).to have_select("shift_date_vote_collection_date", options: ["Voting days ended"]) + end + scenario "Error on create", :js do poll = create(:poll, :current) booth = create(:poll_booth)