From dfbdc0568cb167f12ddf52b5bb9bb16a716bfbd1 Mon Sep 17 00:00:00 2001 From: voodoorai2000 Date: Tue, 23 Apr 2019 14:56:23 +0200 Subject: [PATCH] Allow actions to be unexecuted Before actions could be marked as executed. With this commit we are also allowing actions to be marked as unexecuted. --- app/controllers/dashboard/actions_controller.rb | 8 ++++++++ app/views/dashboard/_proposed_action.html.erb | 7 ++++++- config/routes/proposal.rb | 1 + spec/features/dashboard/dashboard_spec.rb | 11 +++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/controllers/dashboard/actions_controller.rb b/app/controllers/dashboard/actions_controller.rb index 3f22889c3..32495f0fa 100644 --- a/app/controllers/dashboard/actions_controller.rb +++ b/app/controllers/dashboard/actions_controller.rb @@ -35,6 +35,14 @@ class Dashboard::ActionsController < Dashboard::BaseController redirect_to request.referer end + def unexecute + authorize! :dashboard, proposal + + Dashboard::ExecutedAction.where(proposal: proposal, action: dashboard_action).first.destroy + + redirect_to request.referer + end + private def dashboard_action diff --git a/app/views/dashboard/_proposed_action.html.erb b/app/views/dashboard/_proposed_action.html.erb index e055e5a98..8064def1b 100644 --- a/app/views/dashboard/_proposed_action.html.erb +++ b/app/views/dashboard/_proposed_action.html.erb @@ -1,7 +1,12 @@
<% if proposed_action.proposals.where(id: proposal.id).any? %> - + <%= link_to unexecute_proposal_dashboard_action_path(proposal, proposed_action), + id: "#{dom_id(proposed_action)}_unexecute", + method: :post, + class: "checked-link" do %> + + <% end %> <% else %> <%= link_to execute_proposal_dashboard_action_path(proposal, proposed_action), id: "#{dom_id(proposed_action)}_execute", diff --git a/config/routes/proposal.rb b/config/routes/proposal.rb index 55013e868..6ead4dff3 100644 --- a/config/routes/proposal.rb +++ b/config/routes/proposal.rb @@ -17,6 +17,7 @@ resources :proposals do resources :actions, only: [], controller: "dashboard/actions" do member do post :execute + post :unexecute get :new_request post :create_request end diff --git a/spec/features/dashboard/dashboard_spec.rb b/spec/features/dashboard/dashboard_spec.rb index 4e200f39f..25ac6922f 100644 --- a/spec/features/dashboard/dashboard_spec.rb +++ b/spec/features/dashboard/dashboard_spec.rb @@ -131,6 +131,17 @@ feature "Proposal's dashboard" do expect(page).not_to have_selector(:css, "#dashboard_action_#{action.id}_execute") end + scenario "Dashboard progress can unexecute proposed action" do + action = create(:dashboard_action, :proposed_action, :active) + executed_action = create(:dashboard_executed_action, proposal: proposal, action: action) + + visit progress_proposal_dashboard_path(proposal) + expect(page).to have_content(action.title) + + find(:css, "#dashboard_action_#{action.id}_unexecute").click + expect(page).to have_selector(:css, "#dashboard_action_#{action.id}_execute") + end + scenario "Dashboard progress dont show proposed actions with published_proposal: true" do action = create(:dashboard_action, :proposed_action, :active, published_proposal: true)