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