diff --git a/spec/services/bulk_upload/sales/year2026/row_parser_spec.rb b/spec/services/bulk_upload/sales/year2026/row_parser_spec.rb index 0ee844690..3f338457c 100644 --- a/spec/services/bulk_upload/sales/year2026/row_parser_spec.rb +++ b/spec/services/bulk_upload/sales/year2026/row_parser_spec.rb @@ -1959,7 +1959,7 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do context "when set to 0" do let(:attributes) { valid_attributes.merge(field_10: "2", field_107: "0") } - it "does not set mscharge and sets has_mscharge to no" do + it "sets has_mscharge to no and does not set mscharge" do log = parser.log expect(log["has_mscharge"]).to eq(0) expect(log["mscharge"]).to be_nil @@ -1969,7 +1969,7 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do context "when set to R" do let(:attributes) { valid_attributes.merge(field_10: "2", field_107: "R") } - it "does not set mscharge and sets has_mscharge to no" do + it "sets has_mscharge to no and does not set mscharge" do log = parser.log expect(log["has_mscharge"]).to eq(0) expect(log["mscharge"]).to be_nil @@ -1984,20 +1984,30 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do expect(parser.errors[:field_107]).to include(I18n.t("validations.sales.2026.bulk_upload.mscharge.invalid")) end - it "does not set mscharge or has_mscharge" do + it "does not set has_mscharge or mscharge" do log = parser.log - expect(log["mscharge"]).to be_nil expect(log["has_mscharge"]).to be_nil + expect(log["mscharge"]).to be_nil end end context "when blank" do let(:attributes) { valid_attributes.merge(field_10: "2", field_107: nil) } - it "leaves mscharge and has_mscharge nil" do + it "leaves has_mscharge and mscharge nil" do log = parser.log + expect(log["has_mscharge"]).to be_nil expect(log["mscharge"]).to be_nil + end + end + + context "when negative" do + let(:attributes) { valid_attributes.merge(field_10: "2", field_107: "-100") } + + it "does not set has_mscharge or mscharge" do + log = parser.log expect(log["has_mscharge"]).to be_nil + expect(log["mscharge"]).to be_nil end end end @@ -2016,7 +2026,7 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do context "when set to 0" do let(:attributes) { valid_attributes.merge(field_125: "0") } - it "does not set mscharge and sets has_mscharge to no" do + it "sets has_mscharge to no and does not set mscharge" do log = parser.log expect(log["has_mscharge"]).to eq(0) expect(log["mscharge"]).to be_nil @@ -2026,7 +2036,7 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do context "when set to R" do let(:attributes) { valid_attributes.merge(field_125: "R") } - it "does not set mscharge and sets has_mscharge to no" do + it "sets has_mscharge to no and does not set mscharge" do log = parser.log expect(log["has_mscharge"]).to eq(0) expect(log["mscharge"]).to be_nil @@ -2041,20 +2051,30 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do expect(parser.errors[:field_125]).to include(I18n.t("validations.sales.2026.bulk_upload.mscharge.invalid")) end - it "does not set mscharge or has_mscharge" do + it "does not set has_mscharge or mscharge" do log = parser.log - expect(log["mscharge"]).to be_nil expect(log["has_mscharge"]).to be_nil + expect(log["mscharge"]).to be_nil end end context "when blank" do let(:attributes) { valid_attributes.merge(field_125: nil) } - it "leaves mscharge and has_mscharge nil" do + it "leaves has_mscharge and mscharge nil" do log = parser.log + expect(log["has_mscharge"]).to be_nil expect(log["mscharge"]).to be_nil + end + end + + context "when negative" do + let(:attributes) { valid_attributes.merge(field_125: "-100") } + + it "does not set has_mscharge or mscharge" do + log = parser.log expect(log["has_mscharge"]).to be_nil + expect(log["mscharge"]).to be_nil end end end @@ -2073,7 +2093,7 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do context "when set to 0" do let(:attributes) { valid_attributes.merge(field_8: "2", field_136: "0") } - it "does not set mscharge and sets has_mscharge to no" do + it "sets has_mscharge to no and does not set mscharge" do log = parser.log expect(log["has_mscharge"]).to eq(0) expect(log["mscharge"]).to be_nil @@ -2083,7 +2103,7 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do context "when set to R" do let(:attributes) { valid_attributes.merge(field_8: "2", field_136: "R") } - it "does not set mscharge and sets has_mscharge to no" do + it "sets has_mscharge to no and does not set mscharge" do log = parser.log expect(log["has_mscharge"]).to eq(0) expect(log["mscharge"]).to be_nil @@ -2098,20 +2118,30 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do expect(parser.errors[:field_136]).to include(I18n.t("validations.sales.2026.bulk_upload.mscharge.invalid")) end - it "does not set mscharge or has_mscharge" do + it "does not set has_mscharge or mscharge" do log = parser.log - expect(log["mscharge"]).to be_nil expect(log["has_mscharge"]).to be_nil + expect(log["mscharge"]).to be_nil end end context "when blank" do let(:attributes) { valid_attributes.merge(field_8: "2", field_136: nil) } - it "leaves mscharge and has_mscharge nil" do + it "leaves has_mscharge and mscharge nil" do log = parser.log + expect(log["has_mscharge"]).to be_nil expect(log["mscharge"]).to be_nil + end + end + + context "when negative" do + let(:attributes) { valid_attributes.merge(field_8: "2", field_136: "-100") } + + it "does not set has_mscharge or mscharge" do + log = parser.log expect(log["has_mscharge"]).to be_nil + expect(log["mscharge"]).to be_nil end end end @@ -2120,30 +2150,30 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do context "when positive" do let(:attributes) { valid_attributes.merge(field_126: "150") } - it "sets newservicecharges to the value and hasservicechargeschanged to yes" do + it "sets hasservicechargeschanged to yes and newservicecharges to the value" do log = parser.log - expect(log["newservicecharges"]).to eq(150) expect(log["hasservicechargeschanged"]).to eq(1) + expect(log["newservicecharges"]).to eq(150) end end context "when set to 0" do let(:attributes) { valid_attributes.merge(field_126: "0") } - it "sets newservicecharges to 0 and hasservicechargeschanged to yes" do + it "sets hasservicechargeschanged to yes and newservicecharges to 0" do log = parser.log - expect(log["newservicecharges"]).to eq(0) expect(log["hasservicechargeschanged"]).to eq(1) + expect(log["newservicecharges"]).to eq(0) end end context "when set to R" do let(:attributes) { valid_attributes.merge(field_126: "R") } - it "does not set newservicecharges and sets hasservicechargeschanged to no" do + it "sets hasservicechargeschanged to no and does not set newservicecharges" do log = parser.log - expect(log["newservicecharges"]).to be_nil expect(log["hasservicechargeschanged"]).to eq(2) + expect(log["newservicecharges"]).to be_nil end end @@ -2155,23 +2185,43 @@ RSpec.describe BulkUpload::Sales::Year2026::RowParser do expect(parser.errors[:field_126]).to include(I18n.t("validations.sales.2026.bulk_upload.newservicecharges.invalid")) end - it "does not set newservicecharges or hasservicechargeschanged" do + it "does not set hasservicechargeschanged or newservicecharges" do log = parser.log - expect(log["newservicecharges"]).to be_nil expect(log["hasservicechargeschanged"]).to be_nil + expect(log["newservicecharges"]).to be_nil end end context "when blank" do let(:attributes) { valid_attributes.merge(field_126: nil) } - it "does not set newservicecharges and leaves hasservicechargeschanged nil" do + it "leaves hasservicechargeschanged and newservicecharges nil" do log = parser.log + expect(log["hasservicechargeschanged"]).to be_nil expect(log["newservicecharges"]).to be_nil + end + end + + context "when negative" do + let(:attributes) { valid_attributes.merge(field_126: "-150") } + + it "does not set hasservicechargeschanged or newservicecharges" do + log = parser.log expect(log["hasservicechargeschanged"]).to be_nil + expect(log["newservicecharges"]).to be_nil end end end + + context "when newservicecharges equals mscharge (field_125 == field_126)" do + let(:attributes) { valid_attributes.merge(field_125: "200", field_126: "200") } + + it "adds validation errors to both fields" do + parser.valid? + expect(parser.errors[:field_125]).to be_present + expect(parser.errors[:field_126]).to be_present + end + end end describe "shared ownership sale type" do