You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
8.1 KiB
140 lines
8.1 KiB
9 months ago
|
require "rails_helper"
|
||
|
|
||
|
RSpec.describe LogsHelper, type: :helper do
|
||
|
describe "#unique_answers_to_be_cleared" do
|
||
|
let(:result) { unique_answers_to_be_cleared(bulk_upload) }
|
||
|
|
||
|
context "with a lettings bulk upload with various errors" do
|
||
|
let(:bulk_upload) { create(:bulk_upload, :lettings) }
|
||
|
|
||
|
context "with one row" do
|
||
|
before do
|
||
|
errors = [OpenStruct.new(attribute: "field_50", message: "you must answer field 50", category: :not_answered),
|
||
|
OpenStruct.new(attribute: "field_60", message: "some compound error", category: :other_category),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some compound error", category: :other_category),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some other compound error that overlaps with a previous error field", category: :another_category),
|
||
|
OpenStruct.new(attribute: "field_62", message: "some other compound error that overlaps with a previous error field", category: :another_category),
|
||
|
OpenStruct.new(attribute: "field_63", message: "some soft validation error", category: :soft_validation)]
|
||
|
errors.each do |error|
|
||
|
bulk_upload.bulk_upload_errors.create!(
|
||
|
field: error.attribute,
|
||
|
error: error.message,
|
||
|
tenant_code: "test",
|
||
|
property_ref: "test",
|
||
|
row: "test",
|
||
|
cell: "test",
|
||
|
col: "test",
|
||
|
category: error.category,
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "returns the correct unique answers to be cleared" do
|
||
|
expect(result.count).to eq(3)
|
||
|
expect(result.map(&:field)).to match_array(%w[field_60 field_61 field_62])
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "with multiple rows" do
|
||
|
before do
|
||
|
errors = [OpenStruct.new(attribute: "field_50", message: "you must answer field 50", category: :not_answered, row: 1),
|
||
|
OpenStruct.new(attribute: "field_60", message: "some compound error", category: :other_category, row: 1),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some compound error", category: :other_category, row: 1),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some other compound error that overlaps with a previous error field", category: :another_category, row: 1),
|
||
|
OpenStruct.new(attribute: "field_62", message: "some other compound error that overlaps with a previous error field", category: :another_category, row: 1),
|
||
|
OpenStruct.new(attribute: "field_63", message: "some soft validation error", category: :soft_validation, row: 1),
|
||
|
OpenStruct.new(attribute: "field_50", message: "you must answer field 50", category: :not_answered, row: 2),
|
||
|
OpenStruct.new(attribute: "field_60", message: "some compound error", category: :other_category, row: 2),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some compound error", category: :other_category, row: 2),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some other compound error that overlaps with a previous error field", category: :another_category, row: 2),
|
||
|
OpenStruct.new(attribute: "field_62", message: "some other compound error that overlaps with a previous error field", category: :another_category, row: 2),
|
||
|
OpenStruct.new(attribute: "field_63", message: "some soft validation error", category: :soft_validation, row: 2)]
|
||
|
errors.each do |error|
|
||
|
bulk_upload.bulk_upload_errors.create!(
|
||
|
field: error.attribute,
|
||
|
error: error.message,
|
||
|
tenant_code: "test",
|
||
|
property_ref: "test",
|
||
|
row: error.row,
|
||
|
cell: "test",
|
||
|
col: "test",
|
||
|
category: error.category,
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "returns the correct unique answers to be cleared" do
|
||
|
expect(result.count).to eq(6)
|
||
|
expect(result.map(&:field)).to match_array(%w[field_60 field_61 field_62 field_60 field_61 field_62])
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "with a sales bulk upload with various errors" do
|
||
|
let(:bulk_upload) { create(:bulk_upload, :sales) }
|
||
|
|
||
|
context "with one row" do
|
||
|
before do
|
||
|
errors = [OpenStruct.new(attribute: "field_50", message: "you must answer field 50", category: :not_answered),
|
||
|
OpenStruct.new(attribute: "field_60", message: "some compound error", category: :other_category),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some compound error", category: :other_category),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some other compound error that overlaps with a previous error field", category: :another_category),
|
||
|
OpenStruct.new(attribute: "field_62", message: "some other compound error that overlaps with a previous error field", category: :another_category),
|
||
|
OpenStruct.new(attribute: "field_63", message: "some soft validation error", category: :soft_validation)]
|
||
|
errors.each do |error|
|
||
|
bulk_upload.bulk_upload_errors.create!(
|
||
|
field: error.attribute,
|
||
|
error: error.message,
|
||
|
tenant_code: "test",
|
||
|
property_ref: "test",
|
||
|
row: "test",
|
||
|
cell: "test",
|
||
|
col: "test",
|
||
|
category: error.category,
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "returns the correct unique answers to be cleared" do
|
||
|
expect(result.count).to eq(3)
|
||
|
expect(result.map(&:field)).to match_array(%w[field_60 field_61 field_62])
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "with multiple rows" do
|
||
|
before do
|
||
|
errors = [OpenStruct.new(attribute: "field_50", message: "you must answer field 50", category: :not_answered, row: 1),
|
||
|
OpenStruct.new(attribute: "field_60", message: "some compound error", category: :other_category, row: 1),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some compound error", category: :other_category, row: 1),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some other compound error that overlaps with a previous error field", category: :another_category, row: 1),
|
||
|
OpenStruct.new(attribute: "field_62", message: "some other compound error that overlaps with a previous error field", category: :another_category, row: 1),
|
||
|
OpenStruct.new(attribute: "field_63", message: "some soft validation error", category: :soft_validation, row: 1),
|
||
|
OpenStruct.new(attribute: "field_50", message: "you must answer field 50", category: :not_answered, row: 2),
|
||
|
OpenStruct.new(attribute: "field_60", message: "some compound error", category: :other_category, row: 2),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some compound error", category: :other_category, row: 2),
|
||
|
OpenStruct.new(attribute: "field_61", message: "some other compound error that overlaps with a previous error field", category: :another_category, row: 2),
|
||
|
OpenStruct.new(attribute: "field_62", message: "some other compound error that overlaps with a previous error field", category: :another_category, row: 2),
|
||
|
OpenStruct.new(attribute: "field_63", message: "some soft validation error", category: :soft_validation, row: 2)]
|
||
|
errors.each do |error|
|
||
|
bulk_upload.bulk_upload_errors.create!(
|
||
|
field: error.attribute,
|
||
|
error: error.message,
|
||
|
tenant_code: "test",
|
||
|
property_ref: "test",
|
||
|
row: error.row,
|
||
|
cell: "test",
|
||
|
col: "test",
|
||
|
category: error.category,
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
it "returns the correct unique answers to be cleared" do
|
||
|
expect(result.count).to eq(6)
|
||
|
expect(result.map(&:field)).to match_array(%w[field_60 field_61 field_62 field_60 field_61 field_62])
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|