From 6c3e7391d4647ff7467c7aa189a8c48b5d252bd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Wed, 26 Feb 2025 10:48:22 +0100 Subject: [PATCH] Use buttons to execute/unexecute dashboard actions As mentioned in commit 5311daadf, using buttons for non-GET requests has several advantages over using links. --- app/assets/stylesheets/dashboard.scss | 6 +++++- app/views/dashboard/_proposed_action.html.erb | 10 ++++------ spec/system/dashboard/dashboard_spec.rb | 14 +++++++------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/assets/stylesheets/dashboard.scss b/app/assets/stylesheets/dashboard.scss index 5bc379bee..a6b989b4a 100644 --- a/app/assets/stylesheets/dashboard.scss +++ b/app/assets/stylesheets/dashboard.scss @@ -139,6 +139,11 @@ } } + form { + display: inline; + vertical-align: top; + } + .icon-check { display: inline-block; font-size: rem-calc(24); @@ -147,7 +152,6 @@ .unchecked-link { display: inline-block; - vertical-align: top; } .unchecked { diff --git a/app/views/dashboard/_proposed_action.html.erb b/app/views/dashboard/_proposed_action.html.erb index 0a593ad8f..fd7de8adb 100644 --- a/app/views/dashboard/_proposed_action.html.erb +++ b/app/views/dashboard/_proposed_action.html.erb @@ -1,18 +1,16 @@
<% if proposed_action.proposals.where(id: proposal.id).any? %> - <%= link_to unexecute_proposal_dashboard_action_path(proposal, proposed_action), - method: :post, - class: "checked-link" do %> + <%= button_to unexecute_proposal_dashboard_action_path(proposal, proposed_action), + class: "checked-link" do %> <%= t("dashboard.recommended_actions.unexecute", name: proposed_action.title) %> <% end %> <% else %> - <%= link_to execute_proposal_dashboard_action_path(proposal, proposed_action), - method: :post, - class: "unchecked-link" do %> + <%= button_to execute_proposal_dashboard_action_path(proposal, proposed_action), + class: "unchecked-link" do %> <%= t("dashboard.recommended_actions.execute", name: proposed_action.title) %> diff --git a/spec/system/dashboard/dashboard_spec.rb b/spec/system/dashboard/dashboard_spec.rb index fc2c6416c..b318c1dc7 100644 --- a/spec/system/dashboard/dashboard_spec.rb +++ b/spec/system/dashboard/dashboard_spec.rb @@ -100,14 +100,14 @@ describe "Proposal's dashboard" do expect(page).to have_content "Expand!" end - click_link "Mark Expand! as done" + click_button "Mark Expand! as done" within "#proposed_actions_done" do expect(page).to have_content "Expand!" end - expect(page).not_to have_link "Mark Expand! as done" - expect(page).to have_link "Unmark Expand! as done" + expect(page).not_to have_button "Mark Expand! as done" + expect(page).to have_button "Unmark Expand! as done" end scenario "Dashboard progress can unexecute proposed action" do @@ -120,14 +120,14 @@ describe "Proposal's dashboard" do expect(page).to have_content "Reinforce!" end - click_link "Unmark Reinforce! as done" + click_button "Unmark Reinforce! as done" within "#proposed_actions_pending" do expect(page).to have_content "Reinforce!" end - expect(page).not_to have_link "Unmark Reinforce! as done" - expect(page).to have_link "Mark Reinforce! as done" + expect(page).not_to have_button "Unmark Reinforce! as done" + expect(page).to have_button "Mark Reinforce! as done" end scenario "Dashboard progress dont show proposed actions with published_proposal: true" do @@ -464,7 +464,7 @@ describe "Proposal's dashboard" do action = create(:dashboard_action, :proposed_action, :active, title: "Make progress") visit recommended_actions_proposal_dashboard_path(proposal.to_param) - click_link "Mark Make progress as done" + click_button "Mark Make progress as done" within "#proposed_actions_done" do expect(page).to have_content(action.title)