diff --git a/app/controllers/admin/task_requests_controller.rb b/app/controllers/admin/task_requests_controller.rb index 89c8ba3..ed94957 100644 --- a/app/controllers/admin/task_requests_controller.rb +++ b/app/controllers/admin/task_requests_controller.rb @@ -1,5 +1,5 @@ class Admin::TaskRequestsController < Admin::ApplicationController - before_action :set_task_request, only: [:edit, :update] + before_action :set_task_request, only: [:edit, :update, :show] def index @task_requests = task_requests.order_by_recent.paginate(page: params[:page]) diff --git a/app/views/admin/task_requests/_task_request.html.erb b/app/views/admin/task_requests/_task_request.html.erb index cdc777e..7e46150 100644 --- a/app/views/admin/task_requests/_task_request.html.erb +++ b/app/views/admin/task_requests/_task_request.html.erb @@ -18,6 +18,7 @@
<%= button_tag "Manage", class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
diff --git a/app/views/admin/task_requests/show.html.erb b/app/views/admin/task_requests/show.html.erb new file mode 100644 index 0000000..147cb1c --- /dev/null +++ b/app/views/admin/task_requests/show.html.erb @@ -0,0 +1,18 @@ +
+ <%= description_list_pair_for @task_request, :description, append: ":" %> + <%= description_list_pair_for @task_request, :created_at, append: ":" %> + <%= description_list_pair_for @task_request, :deadline, append: ":" %> + <%= description_list_pair_for @task_request, :time_allowed, append: ":" %> + <%= description_list_pair_for @task_request, :additional_notes, append: ":" %> + <%= description_list_pair_for @task_request, :status, append: ":" %> +
Files:
+
+ <% if @task_request.files.present? %> + <% @task_request.files.each do |file| %> + <%= link_to file.filename, rails_blob_path(file, disposition: 'attachment'), class: "btn btn-link" %>
+ <% end %> + <% else %> + No files attached + <% end %> +
+
diff --git a/config/routes.rb b/config/routes.rb index 15c008f..b42e051 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -31,7 +31,7 @@ Rails.application.routes.draw do resources :users, only: [:index, :new, :create, :edit, :update, :destroy] do resource :masquerade, only: :create end - resources :task_requests, only: [:index, :edit, :update] + resources :task_requests, only: [:index, :edit, :update, :show] root to: "accounts#index", as: :signed_in_root end diff --git a/spec/features/admin_managing_task_requests_spec.rb b/spec/features/admin_managing_task_requests_spec.rb new file mode 100644 index 0000000..771ac3a --- /dev/null +++ b/spec/features/admin_managing_task_requests_spec.rb @@ -0,0 +1,61 @@ +require "rails_helper" + +feature "Admin managing task requests" do + let(:current_user) { create(:user, admin: true, email: "user@test.com") } + let(:project) { create(:project, account: current_user.primary_account, name: "Test Project") } + + before do + sign_in current_user + end + + scenario "admin should see View action for task request in Manage dropdown", js: true do + create(:task_request) + visit admin_task_requests_path + + click_on 'Manage' + expect(page).to have_content 'View' + end + + scenario "admin can open detail view of task request", js: true do + task_request = create(:task_request, :with_files) + visit admin_task_requests_path + + click_on 'Manage' + click_link 'View' + switch_to_window(windows.last) + + expect(page).to have_content 'Description' + expect(page).to have_content task_request.description + + expect(page).to have_content 'Created At' + expect(page).to have_content task_request.created_at + + expect(page).to have_content 'Deadline' + expect(page).to have_content task_request.deadline + + expect(page).to have_content 'Time Allowed' + expect(page).to have_content task_request.time_allowed + + expect(page).to have_content 'Additional Notes' + expect(page).to have_content task_request.additional_notes + + expect(page).to have_content 'Status' + expect(page).to have_content task_request.status + + expect(page).to have_content 'Files' + task_request.files.each do |file| + expect(page).to have_link file.blob.filename + end + end + + scenario "no files attached label is shown if there are no files attached to the task request", js:true do + create(:task_request) + visit admin_task_requests_path + + click_on 'Manage' + click_link 'View' + switch_to_window(windows.last) + + expect(page).to have_content 'No files attached' + end +end