Browse Source

create basic tests for the view component for listing logs to delete

pull/1657/head
Arthur Campbell 3 years ago
parent
commit
9750eed5d3
  1. 4
      spec/views/form/page_view_spec.rb
  2. 102
      spec/views/logs/delete_logs_spec.rb

4
spec/views/form/page_view_spec.rb

@ -22,8 +22,6 @@ RSpec.describe "form/page" do
Singleton.__init__(FormHandler) Singleton.__init__(FormHandler)
example.run example.run
end end
Timecop.return
Singleton.__init__(FormHandler)
end end
before do before do
@ -45,7 +43,7 @@ RSpec.describe "form/page" do
context "with a page containing a description" do context "with a page containing a description" do
let(:description) { "Test description <a class=\"govuk-link\" href=\"/test-link\">with link</a>." } let(:description) { "Test description <a class=\"govuk-link\" href=\"/test-link\">with link</a>." }
let(:page_attributes) { { description: } } let(:page_attributes) { { description: } }
let(:expected_html) { '<p class="govuk-body govuk-body-m">Test description <a class="govuk-link" href="/test-link">with link</a>.</p>' } let(:expected_html) { "<p class=\"govuk-body govuk-body-m\">#{description}</p>" }
it "renders the description" do it "renders the description" do
expect(rendered).to match(expected_html) expect(rendered).to match(expected_html)

102
spec/views/logs/delete_logs_spec.rb

@ -0,0 +1,102 @@
require "rails_helper"
RSpec.describe "logs/delete_logs.html.erb" do
let(:lettings_log_1) { create(:lettings_log, tenancycode: "Holistic", propcode: "Detective Agency") }
let(:lettings_logs) { [lettings_log_1] }
let(:delete_logs_form) { Forms::DeleteLogsForm.new(log_ids: lettings_logs.map(&:id), log_type: :lettings) }
before do
sign_in create(:user, :support, name: "Dirk Gently")
assign(:delete_logs_form, delete_logs_form)
end
it "has the correct h1 content" do
render
fragment = Capybara::Node::Simple.new(rendered)
h1 = fragment.find("h1")
expect(h1.text).to include "Review the logs you want to delete"
end
context "when there is one log to delete" do
it "shows the informative text in the singular" do
render
fragment = Capybara::Node::Simple.new(rendered)
info_text = fragment.first("p").text
expect(info_text).to eq "You've selected 1 log to delete"
end
end
context "when there is more than one log to delete" do
let(:lettings_log_2) { create(:lettings_log, tenancycode: "01-354", propcode: "9112") }
before do
lettings_logs << lettings_log_2
delete_logs_form = Forms::DeleteLogsForm.new(log_ids: lettings_logs.map(&:id), log_type: :lettings)
assign(:delete_logs_form, delete_logs_form)
end
it "shows the informative text in the plural" do
render
fragment = Capybara::Node::Simple.new(rendered)
info_text = fragment.first("p").text
expect(info_text).to eq "You've selected #{lettings_logs.count} logs to delete"
end
end
context "when the user is deletings lettings logs" do
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", "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
it "shows a checkbox with the correct hidden label in the final cell of each row" do
render
fragment = Capybara::Node::Simple.new(rendered)
final_cell = fragment.find_all("table tbody tr td")[-1]
expect(final_cell.find("input")[:type]).to eq "checkbox"
checkbox_label = final_cell.find("label span")
expect(checkbox_label.text).to eq lettings_log_1.id.to_s
expect(checkbox_label[:class]).to include "govuk-visually-hidden"
end
end
context "when the user is deletings sales logs" do
let(:organisation) { create(:organisation, name: "awgan-eye-zay-shun") }
let(:sales_log_1) { create(:sales_log, owning_organisation: organisation) }
let(:sales_logs) { [sales_log_1] }
let(:delete_logs_form) { Forms::DeleteLogsForm.new(log_ids: sales_logs.map(&:id), log_type: :sales) }
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", "Owning organisation", "Created", "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_1.id.to_s, sales_log_1.owning_organisation.name, sales_log_1.created_at.to_formatted_s(:govuk_date), sales_log_1.status.humanize.capitalize]
end
it "shows a checkbox with the correct hidden label in the final cell of each row" do
render
fragment = Capybara::Node::Simple.new(rendered)
final_cell = fragment.find_all("table tbody tr td")[-1]
expect(final_cell.find("input")[:type]).to eq "checkbox"
checkbox_label = final_cell.find("label span")
expect(checkbox_label.text).to eq sales_log_1.id.to_s
expect(checkbox_label[:class]).to include "govuk-visually-hidden"
end
end
end
Loading…
Cancel
Save