From 37dfaaad177d9c2c73acba4b00d93cfe84b11f28 Mon Sep 17 00:00:00 2001 From: Phil Lee Date: Wed, 25 Jan 2023 10:28:44 +0000 Subject: [PATCH] when resuming bulk upload set filters --- ...bulk_upload_lettings_results_controller.rb | 20 ++++++++ app/views/logs/_log_filters.erb | 36 +++++++++++++-- config/routes.rb | 6 ++- ...upload_lettings_results_controller_spec.rb | 46 +++++++++++++++++++ .../requests/lettings_logs_controller_spec.rb | 10 ++++ 5 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 spec/controllers/bulk_upload_lettings_results_controller_spec.rb diff --git a/app/controllers/bulk_upload_lettings_results_controller.rb b/app/controllers/bulk_upload_lettings_results_controller.rb index a0a962b3e..d4486f29f 100644 --- a/app/controllers/bulk_upload_lettings_results_controller.rb +++ b/app/controllers/bulk_upload_lettings_results_controller.rb @@ -6,4 +6,24 @@ class BulkUploadLettingsResultsController < ApplicationController def show @bulk_upload = current_user.bulk_uploads.lettings.find(params[:id]) end + + def resume + @bulk_upload = current_user.bulk_uploads.lettings.find(params[:id]) + + set_bulk_upload_logs_filters + + redirect_to(lettings_logs_path(bulk_upload_id: [@bulk_upload.id])) + end + +private + + def set_bulk_upload_logs_filters + hash = { + years: [""], + status: ["", "in_progress"], + user: "all", + } + + session["logs_filters"] = hash.to_json + end end diff --git a/app/views/logs/_log_filters.erb b/app/views/logs/_log_filters.erb index 3049a8a77..aa8d975cc 100644 --- a/app/views/logs/_log_filters.erb +++ b/app/views/logs/_log_filters.erb @@ -11,12 +11,40 @@ <% bulk_upload_options = (@session_filters["bulk_upload_id"] || []).reject(&:blank?).index_with { |_bulk_upload_id| "With logs from bulk upload" } %> <% if bulk_upload_options.present? %> - <%= render partial: "filters/checkbox_filter", locals: { f: f, options: bulk_upload_options, label: "Bulk upload", category: "bulk_upload_id" } %> + <%= render partial: "filters/checkbox_filter", + locals: { + f: f, + options: bulk_upload_options, + label: "Bulk upload", + category: "bulk_upload_id", + } %> <% end %> - <%= render partial: "filters/checkbox_filter", locals: { f: f, options: years, label: "Collection year", category: "years" } %> - <%= render partial: "filters/checkbox_filter", locals: { f: f, options: status_filters, label: "Status", category: "status" } %> - <%= render partial: "filters/radio_filter", locals: { f: f, options: all_or_yours, label: "Logs", category: "user" } %> + <% if bulk_upload_options.blank? %> + <%= render partial: "filters/checkbox_filter", + locals: { + f: f, + options: years, + label: "Collection year", + category: "years", + } %> + + <%= render partial: "filters/checkbox_filter", + locals: { + f: f, + options: status_filters, + label: "Status", + category: "status", + } %> + <% end %> + + <%= render partial: "filters/radio_filter", + locals: { + f: f, + options: all_or_yours, + label: "Logs", + category: "user", + } %> <% if (@current_user.support? || @current_user.organisation.has_managing_agents?) && request.path == "/lettings-logs" %> <%= render partial: "filters/radio_filter", locals: { diff --git a/config/routes.rb b/config/routes.rb index 4e5b224c1..913212dd2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -134,7 +134,11 @@ Rails.application.routes.draw do end end - resources :bulk_upload_lettings_results, path: "bulk-upload-results", only: [:show] + resources :bulk_upload_lettings_results, path: "bulk-upload-results", only: [:show] do + member do + get :resume + end + end get "update-logs", to: "lettings_logs#update_logs" end diff --git a/spec/controllers/bulk_upload_lettings_results_controller_spec.rb b/spec/controllers/bulk_upload_lettings_results_controller_spec.rb new file mode 100644 index 000000000..db7ae161b --- /dev/null +++ b/spec/controllers/bulk_upload_lettings_results_controller_spec.rb @@ -0,0 +1,46 @@ +require "rails_helper" + +RSpec.describe BulkUploadLettingsResultsController do + before do + sign_in user + end + + describe "GET #resume /lettings-logs/bulk-upload-results/:ID/resume" do + let(:user) { create(:user) } + let(:bulk_upload) { create(:bulk_upload, :lettings, user:) } + + it "clears the year filter" do + hash = { + years: ["", "2022"], + } + + session["logs_filters"] = hash.to_json + + get :resume, params: { id: bulk_upload.id } + + expect(JSON.parse(session["logs_filters"])["years"]).to eql([""]) + end + + it "sets the status filter to in progress" do + session["logs_filters"] ||= {}.to_json + + get :resume, params: { id: bulk_upload.id } + + expect(JSON.parse(session["logs_filters"])["status"]).to eql(["", "in_progress"]) + end + + it "sets the user filter to all" do + session["logs_filters"] ||= {}.to_json + + get :resume, params: { id: bulk_upload.id } + + expect(JSON.parse(session["logs_filters"])["user"]).to eql("all") + end + + it "redirects to logs with bulk upload filter applied" do + get :resume, params: { id: bulk_upload.id } + + expect(response).to redirect_to("/lettings-logs?bulk_upload_id%5B%5D=#{bulk_upload.id}") + end + end +end diff --git a/spec/requests/lettings_logs_controller_spec.rb b/spec/requests/lettings_logs_controller_spec.rb index ac3df8a9a..6cb0b02d2 100644 --- a/spec/requests/lettings_logs_controller_spec.rb +++ b/spec/requests/lettings_logs_controller_spec.rb @@ -423,6 +423,16 @@ RSpec.describe LettingsLogsController, type: :request do expect(page).to have_content("With logs from bulk upload") end + it "hides collection year filter" do + get "/lettings-logs?bulk_upload_id[]=#{bulk_upload.id}" + expect(page).not_to have_content("Collection year") + end + + it "hides status filter" do + get "/lettings-logs?bulk_upload_id[]=#{bulk_upload.id}" + expect(page).not_to have_content("Status") + end + it "hides button to create a new log" do get "/lettings-logs?bulk_upload_id[]=#{bulk_upload.id}" expect(page).not_to have_content("Create a new lettings log")