From c1a9f1d13824ad602a4b8f47a80262c3bbd1c6f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Salvador=20P=C3=A9rez=20Garc=C3=ADa?= Date: Fri, 22 Jun 2018 11:00:27 +0200 Subject: [PATCH] Addressed comments from sprint meeting 22/06/2018 New group created in administration menu including dashboard resources/ proposed tasks and pending tasks for the administrator. Some unused files have been removed. --- .../admin/administrator_tasks_controller.rb | 25 +++++++ .../admin/administrator_tasks/_form.html.erb | 15 ++++ .../admin/administrator_tasks/edit.html.erb | 9 +++ .../admin/administrator_tasks/index.html.erb | 34 +++++++++ .../admin/administrator_tasks_spec.rb | 74 +++++++++++++++++++ 5 files changed, 157 insertions(+) create mode 100644 app/controllers/admin/administrator_tasks_controller.rb create mode 100644 app/views/admin/administrator_tasks/_form.html.erb create mode 100644 app/views/admin/administrator_tasks/edit.html.erb create mode 100644 app/views/admin/administrator_tasks/index.html.erb create mode 100644 spec/features/admin/administrator_tasks_spec.rb diff --git a/app/controllers/admin/administrator_tasks_controller.rb b/app/controllers/admin/administrator_tasks_controller.rb new file mode 100644 index 000000000..dd4239a0e --- /dev/null +++ b/app/controllers/admin/administrator_tasks_controller.rb @@ -0,0 +1,25 @@ +class Admin::AdministratorTasksController < Admin::BaseController + helper_method :administrator_task + + def index + authorize! :index, AdministratorTask + @administrator_tasks = AdministratorTask.pending + end + + def edit + authorize! :edit, administrator_task + end + + def update + authorize! :update, administrator_task + + administrator_task.update(user: current_user, executed_at: Time.now) + redirect_to admin_administrator_tasks_path, { flash: { notice: t('.success') } } + end + + private + + def administrator_task + @administrator_task ||= AdministratorTask.find(params[:id]) + end +end diff --git a/app/views/admin/administrator_tasks/_form.html.erb b/app/views/admin/administrator_tasks/_form.html.erb new file mode 100644 index 000000000..91704ec47 --- /dev/null +++ b/app/views/admin/administrator_tasks/_form.html.erb @@ -0,0 +1,15 @@ +<%= form_for [:admin, administrator_task] do |f| %> + +
+
<%=t '.proposal', title: administrator_task.source.proposal.title %>
+

<%=t '.request', title: administrator_task.source.proposal_dashboard_action.title %>

+ <%== administrator_task.source.comments unless administrator_task.source.comments.blank? %> + <%= link_to t('.check_details'), proposal_path(administrator_task.source.proposal), target: '_blank' %> +
+ +
+
+ <%= f.submit(class: 'button expanded', value: t('.solve')) %> +
+
+<% end %> diff --git a/app/views/admin/administrator_tasks/edit.html.erb b/app/views/admin/administrator_tasks/edit.html.erb new file mode 100644 index 000000000..022d5aa13 --- /dev/null +++ b/app/views/admin/administrator_tasks/edit.html.erb @@ -0,0 +1,9 @@ +
+
+ <%= back_link_to admin_administrator_tasks_path, t('.back') %> + +

<%= t('.solving') %>

+ + <%= render 'form' %> +
+
diff --git a/app/views/admin/administrator_tasks/index.html.erb b/app/views/admin/administrator_tasks/index.html.erb new file mode 100644 index 000000000..186774609 --- /dev/null +++ b/app/views/admin/administrator_tasks/index.html.erb @@ -0,0 +1,34 @@ +

+ <%= AdministratorTask.model_name.human(count: 2) %> +

+ + + + + + + + + + + <% if @administrator_tasks.empty? %> + + + + <% end %> + + <% @administrator_tasks.each do |task| %> + + + + + <% end %> + +
<%= AdministratorTask.human_attribute_name(:source) %>
<%= t '.no_records' %>
+ <%= task.source.proposal.title %>: + <%= task.source.proposal_dashboard_action.title %> + + <%= link_to t('.solve'), + edit_admin_administrator_task_path(task), + class: 'edit-banner button hollow' %> +
diff --git a/spec/features/admin/administrator_tasks_spec.rb b/spec/features/admin/administrator_tasks_spec.rb new file mode 100644 index 000000000..32ad98bc6 --- /dev/null +++ b/spec/features/admin/administrator_tasks_spec.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe 'Administrator tasks' do + let(:administrator) { create(:administrator) } + + before do + login_as administrator.user + end + + context 'when accessing the pending task list' do + context 'and no pending task' do + before do + visit admin_administrator_tasks_path + end + + it 'informs that there are no pending tasks' do + expect(page).to have_content('There are no pending tasks') + end + end + + context 'and there are pending tasks' do + let!(:task) { create :administrator_task, :pending } + + before do + visit admin_administrator_tasks_path + end + + it 'shows the related proposal title' do + expect(page).to have_content(task.source.proposal.title) + end + + it 'shows the requested action title' do + expect(page).to have_content(task.source.proposal_dashboard_action.title) + end + + it 'has a link that allows solving the request' do + expect(page).to have_link('Solve') + end + end + end + + context 'when solving a pending task' do + let!(:task) { create :administrator_task, :pending } + + before do + visit admin_administrator_tasks_path + click_link 'Solve' + end + + it 'contains a link to the proposal' do + expect(page).to have_link('Check the proposal details') + end + + it 'contains a button that solves the request' do + expect(page).to have_button('Mark as solved') + end + + it 'shows the comments added by the user during the request' do + expect(page).to have_content(task.source.comments) + end + + context 'and the Mark as solved button is pressed' do + before do + click_button 'Mark as solved' + end + + it 'The proposal dissapears from the list' do + expect(page).not_to have_content(task.source.proposal.title) + end + end + end +end