Browse Source

merge the delete pages for lettings logs and sales logs, add to the tests for the lettings page to test sales specific content

pull/1657/head
Arthur Campbell 3 years ago
parent
commit
980550f45b
  1. 24
      app/controllers/delete_logs_controller.rb
  2. 48
      app/views/logs/delete_lettings_logs.html.erb
  3. 18
      app/views/logs/delete_logs.html.erb
  4. 50
      spec/views/logs/delete_logs_spec.rb

24
app/controllers/delete_logs_controller.rb

@ -7,13 +7,13 @@ class DeleteLogsController < ApplicationController
def delete_lettings_logs def delete_lettings_logs
@delete_logs_form = delete_logs_form(log_type: :lettings, paths: lettings_logs_paths) @delete_logs_form = delete_logs_form(log_type: :lettings, paths: lettings_logs_paths)
render "logs/delete_lettings_logs" render "logs/delete_logs"
end end
def delete_lettings_logs_with_selected_ids def delete_lettings_logs_with_selected_ids
selected_ids = params.require(:selected_ids).split.map(&:to_i) selected_ids = params.require(:selected_ids).split.map(&:to_i)
@delete_logs_form = delete_logs_form(selected_ids:, log_type: :lettings, paths: lettings_logs_paths) @delete_logs_form = delete_logs_form(selected_ids:, log_type: :lettings, paths: lettings_logs_paths)
render "logs/delete_lettings_logs" render "logs/delete_logs"
end end
def delete_lettings_logs_confirmation def delete_lettings_logs_confirmation
@ -28,7 +28,7 @@ class DeleteLogsController < ApplicationController
if @delete_logs_form.valid? if @delete_logs_form.valid?
render "logs/delete_logs_confirmation" render "logs/delete_logs_confirmation"
else else
render "logs/delete_lettings_logs" render "logs/delete_logs"
end end
end end
@ -44,13 +44,13 @@ class DeleteLogsController < ApplicationController
def delete_sales_logs def delete_sales_logs
@delete_logs_form = delete_logs_form(log_type: :sales, paths: sales_logs_paths) @delete_logs_form = delete_logs_form(log_type: :sales, paths: sales_logs_paths)
render "logs/delete_sales_logs" render "logs/delete_logs"
end end
def delete_sales_logs_with_selected_ids def delete_sales_logs_with_selected_ids
selected_ids = params.require(:selected_ids).split.map(&:to_i) selected_ids = params.require(:selected_ids).split.map(&:to_i)
@delete_logs_form = delete_logs_form(selected_ids:, log_type: :sales, paths: sales_logs_paths) @delete_logs_form = delete_logs_form(selected_ids:, log_type: :sales, paths: sales_logs_paths)
render "logs/delete_sales_logs" render "logs/delete_logs"
end end
def delete_sales_logs_confirmation def delete_sales_logs_confirmation
@ -65,7 +65,7 @@ class DeleteLogsController < ApplicationController
if @delete_logs_form.valid? if @delete_logs_form.valid?
render "logs/delete_logs_confirmation" render "logs/delete_logs_confirmation"
else else
render "logs/delete_sales_logs" render "logs/delete_logs"
end end
end end
@ -81,13 +81,13 @@ class DeleteLogsController < ApplicationController
def delete_lettings_logs_for_organisation def delete_lettings_logs_for_organisation
@delete_logs_form = delete_logs_form(log_type: :lettings, paths: lettings_logs_for_organisation_paths) @delete_logs_form = delete_logs_form(log_type: :lettings, paths: lettings_logs_for_organisation_paths)
render "logs/delete_lettings_logs" render "logs/delete_logs"
end end
def delete_lettings_logs_for_organisation_with_selected_ids def delete_lettings_logs_for_organisation_with_selected_ids
selected_ids = params.require(:selected_ids).split.map(&:to_i) selected_ids = params.require(:selected_ids).split.map(&:to_i)
@delete_logs_form = delete_logs_form(selected_ids:, log_type: :lettings, paths: lettings_logs_for_organisation_paths) @delete_logs_form = delete_logs_form(selected_ids:, log_type: :lettings, paths: lettings_logs_for_organisation_paths)
render "logs/delete_lettings_logs" render "logs/delete_logs"
end end
def delete_lettings_logs_for_organisation_confirmation def delete_lettings_logs_for_organisation_confirmation
@ -102,7 +102,7 @@ class DeleteLogsController < ApplicationController
if @delete_logs_form.valid? if @delete_logs_form.valid?
render "logs/delete_logs_confirmation" render "logs/delete_logs_confirmation"
else else
render "logs/delete_lettings_logs" render "logs/delete_logs"
end end
end end
@ -118,13 +118,13 @@ class DeleteLogsController < ApplicationController
def delete_sales_logs_for_organisation def delete_sales_logs_for_organisation
@delete_logs_form = delete_logs_form(log_type: :sales, paths: sales_logs_for_organisation_paths) @delete_logs_form = delete_logs_form(log_type: :sales, paths: sales_logs_for_organisation_paths)
render "logs/delete_sales_logs" render "logs/delete_logs"
end end
def delete_sales_logs_for_organisation_with_selected_ids def delete_sales_logs_for_organisation_with_selected_ids
selected_ids = params.require(:selected_ids).split.map(&:to_i) selected_ids = params.require(:selected_ids).split.map(&:to_i)
@delete_logs_form = delete_logs_form(selected_ids:, log_type: :sales, paths: sales_logs_for_organisation_paths) @delete_logs_form = delete_logs_form(selected_ids:, log_type: :sales, paths: sales_logs_for_organisation_paths)
render "logs/delete_sales_logs" render "logs/delete_logs"
end end
def delete_sales_logs_for_organisation_confirmation def delete_sales_logs_for_organisation_confirmation
@ -139,7 +139,7 @@ class DeleteLogsController < ApplicationController
if @delete_logs_form.valid? if @delete_logs_form.valid?
render "logs/delete_logs_confirmation" render "logs/delete_logs_confirmation"
else else
render "logs/delete_sales_logs" render "logs/delete_logs"
end end
end end

48
app/views/logs/delete_lettings_logs.html.erb

@ -1,48 +0,0 @@
<% title = "Delete logs" %>
<% content_for :title, title %>
<% content_for :before_content do %>
<%= govuk_back_link(href: :back) %>
<% end %>
<h1 class="govuk-heading-l">
<span class="govuk-caption-l"><%= title %></span>
Review the logs you want to delete
</h1>
<p>You've selected <%= @delete_logs_form.log_count %> <%= "log".pluralize(@delete_logs_form.log_count) %> to delete</p>
<%= form_with model: @delete_logs_form, url: @delete_logs_form.delete_confirmation_path do |f| %>
<%= f.hidden_field :search_term, value: @delete_logs_form.search_term %>
<%= f.govuk_error_summary %>
<%= 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: "Delete?") %>
<% end %>
<% end %>
<% table.body do |body| %>
<% f.govuk_check_boxes_fieldset :selected_ids, small: true do %>
<% @delete_logs_form.logs.each do |log| %>
<% 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 do %>
<% f.govuk_check_box :selected_ids, log.id,
label: { text: log.id, hidden: true },
size: "s",
checked: @delete_logs_form.selected_ids.include?(log.id) %>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
<%= f.govuk_submit "Continue" do %>
<%= govuk_button_link_to "Cancel", @delete_logs_form.back_to_logs_path, secondary: true %>
<% end %>
<% end %>

18
app/views/logs/delete_sales_logs.html.erb → app/views/logs/delete_logs.html.erb

@ -17,8 +17,13 @@
<% table.head do |head| %> <% table.head do |head| %>
<% head.row do |row| %> <% head.row do |row| %>
<% row.cell(header: true, text: "Log ID") %> <% row.cell(header: true, text: "Log ID") %>
<% row.cell(header: true, text: "Owning Organisation") %> <% if @delete_logs_form.log_type == :lettings %>
<% row.cell(header: true, text: "Created") %> <% row.cell(header: true, text: "Tenancy code") %>
<% row.cell(header: true, text: "Property reference") %>
<% elsif @delete_logs_form.log_type == :sales %>
<% row.cell(header: true, text: "Purchaser code") %>
<% row.cell(header: true, text: "Sale completion date") %>
<% end %>
<% row.cell(header: true, text: "Status") %> <% row.cell(header: true, text: "Status") %>
<% row.cell(header: true, text: "Delete?") %> <% row.cell(header: true, text: "Delete?") %>
<% end %> <% end %>
@ -28,8 +33,13 @@
<% @delete_logs_form.logs.each do |log| %> <% @delete_logs_form.logs.each do |log| %>
<% body.row do |row| %> <% body.row do |row| %>
<% row.cell(text: log.id) %> <% row.cell(text: log.id) %>
<% row.cell(text: log.owning_organisation&.name) %> <% if @delete_logs_form.log_type == :lettings %>
<% row.cell(text: log.created_at&.to_formatted_s(:govuk_date)) %> <% row.cell(text: log.tenancycode) %>
<% row.cell(text: log.propcode) %>
<% elsif @delete_logs_form.log_type == :sales %>
<% row.cell(text: log.purchid) %>
<% row.cell(text: log.saledate&.to_formatted_s(:govuk_date)) %>
<% end %>
<% row.cell(text: status_tag(log.status)) %> <% row.cell(text: status_tag(log.status)) %>
<% row.cell do %> <% row.cell do %>
<% f.govuk_check_box :selected_ids, log.id, <% f.govuk_check_box :selected_ids, log.id,

50
spec/views/logs/delete_lettings_logs_spec.rb → spec/views/logs/delete_logs_spec.rb

@ -1,6 +1,6 @@
require "rails_helper" require "rails_helper"
RSpec.describe "logs/delete_lettings_logs.html.erb" do RSpec.describe "logs/delete_logs.html.erb" do
let(:user) { create(:user, :support, name: "Dirk Gently") } let(:user) { create(:user, :support, name: "Dirk Gently") }
let(:lettings_log_1) { create(:lettings_log, tenancycode: "Holistic", propcode: "Detective Agency", created_by: user) } let(:lettings_log_1) { create(:lettings_log, tenancycode: "Holistic", propcode: "Detective Agency", created_by: user) }
let(:lettings_logs) { [lettings_log_1] } let(:lettings_logs) { [lettings_log_1] }
@ -53,18 +53,46 @@ RSpec.describe "logs/delete_lettings_logs.html.erb" do
end end
end end
it "shows the correct headers in the table" do context "when the table contains lettings logs" do
render it "shows the correct headers in the table" do
fragment = Capybara::Node::Simple.new(rendered) render
headers = fragment.find_all("table thead tr th").map(&:text) fragment = Capybara::Node::Simple.new(rendered)
expect(headers).to eq ["Log ID", "Tenancy code", "Property reference", "Status", "Delete?"] headers = fragment.find_all("table thead tr th").map(&:text)
expect(headers).to eq ["Log ID", "Tenancy code", "Property reference", "Status", "Delete?"]
end
it "shows the correct information in each row" do
render
fragment = Capybara::Node::Simple.new(rendered)
row_data = fragment.find_all("table tbody tr td").map(&:text)[0...-1]
expect(row_data).to eq [lettings_log_1.id.to_s, lettings_log_1.tenancycode, lettings_log_1.propcode, lettings_log_1.status.humanize.capitalize]
end
end end
it "shows the correct information in each row" do context "when the table contains sales logs" do
render let(:sales_log) { create(:sales_log, purchid: "Interconnectedness", saledate: Time.zone.today, created_by: user) }
fragment = Capybara::Node::Simple.new(rendered) let(:sales_logs) { [sales_log] }
row_data = fragment.find_all("table tbody tr td").map(&:text)[0...-1] let(:delete_logs_form_sales) { Forms::DeleteLogsForm.new(log_type: :sales, current_user: user, **paths) }
expect(row_data).to eq [lettings_log_1.id.to_s, lettings_log_1.tenancycode, lettings_log_1.propcode, lettings_log_1.status.humanize.capitalize]
before do
sign_in user
allow(FilterService).to receive(:filter_logs).and_return sales_logs
assign(:delete_logs_form, delete_logs_form_sales)
end
it "shows the correct headers in the table" do
render
fragment = Capybara::Node::Simple.new(rendered)
headers = fragment.find_all("table thead tr th").map(&:text)
expect(headers).to eq ["Log ID", "Purchaser code", "Sale completion date", "Status", "Delete?"]
end
it "shows the correct information in each row" do
render
fragment = Capybara::Node::Simple.new(rendered)
row_data = fragment.find_all("table tbody tr td").map(&:text)[0...-1]
expect(row_data).to eq [sales_log.id.to_s, sales_log.purchid, sales_log.saledate.to_formatted_s(:govuk_date), sales_log.status.humanize.capitalize]
end
end end
it "shows a checkbox with the correct hidden label in the final cell of each row" do it "shows a checkbox with the correct hidden label in the final cell of each row" do
Loading…
Cancel
Save