|
|
|
require "rails_helper"
|
|
|
|
|
|
|
|
RSpec.describe BulkUploadErrorRowComponent, type: :component do
|
|
|
|
context "when a single error" do
|
|
|
|
let(:row) { rand(9_999) }
|
|
|
|
let(:tenant_code) { SecureRandom.hex(4) }
|
|
|
|
let(:property_ref) { SecureRandom.hex(4) }
|
|
|
|
let(:purchaser_code) { nil }
|
|
|
|
let(:field) { :field_130 }
|
|
|
|
let(:error) { "some error" }
|
|
|
|
let(:bulk_upload) { create(:bulk_upload, :lettings) }
|
|
|
|
let(:bulk_upload_errors) do
|
|
|
|
[
|
|
|
|
FactoryBot.build(
|
|
|
|
:bulk_upload_error,
|
|
|
|
bulk_upload:,
|
|
|
|
row:,
|
|
|
|
tenant_code:,
|
|
|
|
property_ref:,
|
|
|
|
purchaser_code:,
|
|
|
|
field:,
|
|
|
|
error:,
|
|
|
|
),
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
it "renders the row number" do
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content("Row #{row}")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "renders the tenant_code" do
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content("Tenant code: #{tenant_code}")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "renders the property_ref" do
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content("Property reference: #{property_ref}")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "renders the cell of error" do
|
|
|
|
expected = bulk_upload_errors.first.cell
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content(expected)
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when the bulk upload is for 2024" do
|
|
|
|
context "with a lettings bulk upload" do
|
|
|
|
let(:bulk_upload) { build(:bulk_upload, :lettings, year: 2024) }
|
|
|
|
let(:field) { :field_130 }
|
|
|
|
|
|
|
|
it "renders the expected question" do
|
|
|
|
expected = "What do you expect the outstanding amount to be?"
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content(expected)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "with a sales bulk upload" do
|
|
|
|
let(:bulk_upload) { create(:bulk_upload, :sales, year: 2024) }
|
|
|
|
let(:field) { :field_86 }
|
|
|
|
|
|
|
|
it "renders the expected question" do
|
|
|
|
expected = "Is this a staircasing transaction?"
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content(expected)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when tenant_code not present" do
|
|
|
|
let(:tenant_code) { nil }
|
|
|
|
|
|
|
|
it "does not render tenant code label" do
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).not_to have_content("Tenant code")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when property_ref not present" do
|
|
|
|
let(:property_ref) { nil }
|
|
|
|
|
|
|
|
it "does not render the property_ref label" do
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).not_to have_content("Property reference")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when purchaser_code not present" do
|
|
|
|
let(:bulk_upload) { create(:bulk_upload, :sales) }
|
|
|
|
|
|
|
|
it "does not render the purchaser_code label" do
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).not_to have_content("Purchaser code")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it "renders the error" do
|
|
|
|
expected = error
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content(expected)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "renders the field number" do
|
|
|
|
expected = bulk_upload_errors.first.field.humanize
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content(expected)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when there are potential errors" do
|
|
|
|
let(:row) { rand(9_999) }
|
|
|
|
let(:tenant_code) { SecureRandom.hex(4) }
|
|
|
|
let(:property_ref) { SecureRandom.hex(4) }
|
|
|
|
let(:purchaser_code) { nil }
|
|
|
|
let(:category) { "soft_validation" }
|
|
|
|
let(:field_46) { 40 }
|
|
|
|
let(:field_50) { 5 }
|
|
|
|
let(:error) { "You told us this person is aged 40 years and retired." }
|
|
|
|
let(:bulk_upload) { create(:bulk_upload, :lettings) }
|
|
|
|
let(:bulk_upload_errors) do
|
|
|
|
[
|
|
|
|
FactoryBot.build(
|
|
|
|
:bulk_upload_error,
|
|
|
|
bulk_upload:,
|
|
|
|
row:,
|
|
|
|
tenant_code:,
|
|
|
|
property_ref:,
|
|
|
|
purchaser_code:,
|
|
|
|
field: :field_46,
|
|
|
|
error:,
|
|
|
|
category:,
|
|
|
|
),
|
|
|
|
FactoryBot.build(
|
|
|
|
:bulk_upload_error,
|
|
|
|
bulk_upload:,
|
|
|
|
row:,
|
|
|
|
tenant_code:,
|
|
|
|
property_ref:,
|
|
|
|
purchaser_code:,
|
|
|
|
field: :field_50,
|
|
|
|
error:,
|
|
|
|
category:,
|
|
|
|
),
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
it "renders the potential errors section" do
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content("Potential errors")
|
|
|
|
end
|
|
|
|
|
|
|
|
it "renders the potential error message" do
|
|
|
|
expected = error
|
|
|
|
result = render_inline(described_class.new(bulk_upload_errors:))
|
|
|
|
expect(result).to have_content(expected, count: 1)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|