Browse Source

Display affected logs in the table

pull/1035/head
Kat 4 years ago
parent
commit
4b2964301d
  1. 12
      app/controllers/lettings_logs_controller.rb
  2. 36
      app/views/logs/update_logs.html.erb
  3. 3
      config/routes.rb
  4. 40
      spec/requests/lettings_logs_controller_spec.rb

12
app/controllers/lettings_logs_controller.rb

@ -83,6 +83,18 @@ class LettingsLogsController < LogsController
def csv_confirmation; end
def update_logs
respond_to do |format|
format.html do
impacted_logs = current_user.lettings_logs.where(impacted_by_deactivation: true, created_by: current_user)
@pagy, @logs = pagy(impacted_logs)
@total_count = impacted_logs.size
render "logs/update_logs"
end
end
end
private
def permitted_log_params

36
app/views/logs/update_logs.html.erb

@ -0,0 +1,36 @@
<% item_label = format_label(@pagy.count, "logs") %>
<% title = format_title(@searched, "Logs", current_user, item_label, @pagy.count, nil) %>
<% content_for :title, title %>
<%= render partial: "organisations/headings", locals: { main: "You need to update #{@total_count} logs", sub: "" } %>
<%= govuk_table do |table| %>
<% table.head do |head| %>
<% head.row do |row| %>
<% row.cell(header: true, text: "Log ID") %>
<% row.cell(header: true, text: "Tenancy code") %>
<% row.cell(header: true, text: "Property reference") %>
<% row.cell(header: true, text: "Status") %>
<% row.cell(header: true, text: "") %>
<% end %>
<% end %>
<% @logs.each do |log| %>
<% table.body do |body| %>
<% body.row do |row| %>
<% row.cell(text: log.id) %>
<% row.cell(text: log.tenancycode) %>
<% row.cell(text: log.propcode) %>
<% row.cell(text: status_tag(log.status)) %>
<% row.cell(html_attributes: {
scope: "row",
class: "govuk-!-text-align-right",
}) do %>
<%= govuk_link_to("Update now", lettings_log_tenancy_start_date_path(log)) %>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
<%== render partial: "pagy/nav", locals: { pagy: @pagy, item_name: "logs" } %>

3
config/routes.rb

@ -111,12 +111,13 @@ Rails.application.routes.draw do
get "csv-download", to: "lettings_logs#download_csv"
post "email-csv", to: "lettings_logs#email_csv"
get "csv-confirmation", to: "lettings_logs#csv_confirmation"
resources :bulk_upload_lettings_logs, path: "bulk-upload-logs" do
collection do
get :start
end
end
get "update-logs", to: "lettings_logs#update_logs"
end
member do

40
spec/requests/lettings_logs_controller_spec.rb

@ -789,6 +789,46 @@ RSpec.describe LettingsLogsController, type: :request do
end
end
end
context "when viewing a collection of logs affected by deactivated location" do
let!(:affected_lettings_logs) { FactoryBot.create_list(:lettings_log, 3, impacted_by_deactivation: true, created_by: user) }
let!(:non_affected_lettings_logs) { FactoryBot.create_list(:lettings_log, 4, created_by: user) }
let(:other_user) { FactoryBot.create(:user, organisation: user.organisation) }
let(:headers) { { "Accept" => "text/html" } }
before do
allow(user).to receive(:need_two_factor_authentication?).and_return(false)
sign_in user
end
it "displays logs in a table" do
get "/lettings-logs/update-logs", headers:, params: {}
expect(page).to have_content("Log ID")
expect(page).to have_content("Tenancy code")
expect(page).to have_content("Property reference")
expect(page).to have_content("Status")
expect(page).to have_content(affected_lettings_logs.first.id)
expect(page).to have_content(affected_lettings_logs.first.tenancycode)
expect(page).to have_content(affected_lettings_logs.first.propcode)
expect(page).to have_link("Update now", href: "/lettings-logs/#{affected_lettings_logs.first.id}/tenancy-start-date")
end
it "only displays affected logs" do
get "/lettings-logs/update-logs", headers:, params: {}
expect(page).to have_content("You need to update 3 logs")
expect(page).to have_content(affected_lettings_logs.first.id)
expect(page).not_to have_content(non_affected_lettings_logs.first.id)
end
it "only displays the logs creted by the user" do
affected_lettings_logs.first.update!(created_by: other_user)
get "/lettings-logs/update-logs", headers:, params: {}
expect(page).to have_content(affected_lettings_logs.second.id)
expect(page).not_to have_content(affected_lettings_logs.first.id)
expect(page).to have_content("You need to update 2 logs")
end
end
end
describe "PATCH" do

Loading…
Cancel
Save