From c07dde67945f96ec99f888f1bd97be6da5221c98 Mon Sep 17 00:00:00 2001 From: SamSeed-Softwire <63662292+SamSeed-Softwire@users.noreply.github.com> Date: Wed, 18 Jan 2023 14:01:01 +0000 Subject: [PATCH 1/5] fix: correct no-stock user names + update emails to prevent duplicates (#1185) --- db/seeds.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/seeds.rb b/db/seeds.rb index cf6895501..8dea68d80 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -110,8 +110,8 @@ unless Rails.env.test? ) User.find_or_create_by!( - name: "Provider Owns Stock", - email: "provider.nostock1@example.com", + name: "Provider No Stock", + email: "provider.nostock@example.com", organisation: standalone_no_stock, role: "data_provider", ) do |user| @@ -120,8 +120,8 @@ unless Rails.env.test? end User.find_or_create_by!( - name: "Coordinator Owns Stock", - email: "coordinator.nostock1@example.com", + name: "Coordinator No Stock", + email: "coordinator.nostock@example.com", organisation: standalone_no_stock, role: "data_coordinator", ) do |user| From 826eaf22f11d718aca5df9dad659651099d27f26 Mon Sep 17 00:00:00 2001 From: Jack <113976590+bibblobcode@users.noreply.github.com> Date: Thu, 19 Jan 2023 09:24:09 +0000 Subject: [PATCH 2/5] CLDC-1746 Show Handover question also on not on resale (#1183) --- app/models/form/sales/pages/handover_date.rb | 6 +++--- spec/models/form/sales/pages/handover_date_spec.rb | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/models/form/sales/pages/handover_date.rb b/app/models/form/sales/pages/handover_date.rb index eeeb48333..35fbe7822 100644 --- a/app/models/form/sales/pages/handover_date.rb +++ b/app/models/form/sales/pages/handover_date.rb @@ -2,9 +2,9 @@ class Form::Sales::Pages::HandoverDate < ::Form::Page def initialize(id, hsh, subsection) super @id = "handover_date" - @depends_on = [{ - "ownershipsch" => 1, - }] + @depends_on = [ + { "ownershipsch" => 1, "resale" => 2 }, + ] end def questions diff --git a/spec/models/form/sales/pages/handover_date_spec.rb b/spec/models/form/sales/pages/handover_date_spec.rb index fa2156cf7..1699dbf9e 100644 --- a/spec/models/form/sales/pages/handover_date_spec.rb +++ b/spec/models/form/sales/pages/handover_date_spec.rb @@ -28,8 +28,6 @@ RSpec.describe Form::Sales::Pages::HandoverDate, type: :model do end it "has the correct depends_on" do - expect(page.depends_on).to eq([{ - "ownershipsch" => 1, - }]) + expect(page.depends_on).to eq([{ "ownershipsch" => 1, "resale" => 2 }]) end end From 45710ed66164d69793fe0dfef34586973de2e179 Mon Sep 17 00:00:00 2001 From: Jack <113976590+bibblobcode@users.noreply.github.com> Date: Thu, 19 Jan 2023 09:24:45 +0000 Subject: [PATCH 3/5] CLDC 911 add hard validation to cash deposit (#1186) * Tidy up test file * Add hard validation to cash deposit * Load validations --- .../form/sales/questions/deposit_amount.rb | 1 + app/models/sales_log.rb | 4 +- .../sales/sale_information_validations.rb | 9 ++++ .../sales/questions/deposit_amount_spec.rb | 4 ++ .../sales/household_validations_spec.rb | 16 +++--- .../sale_information_validations_spec.rb | 49 +++++++++++++++++++ spec/requests/form_controller_spec.rb | 2 +- 7 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 app/models/validations/sales/sale_information_validations.rb create mode 100644 spec/models/validations/sales/sale_information_validations_spec.rb diff --git a/app/models/form/sales/questions/deposit_amount.rb b/app/models/form/sales/questions/deposit_amount.rb index 094f47697..05403dbab 100644 --- a/app/models/form/sales/questions/deposit_amount.rb +++ b/app/models/form/sales/questions/deposit_amount.rb @@ -7,6 +7,7 @@ class Form::Sales::Questions::DepositAmount < ::Form::Question @type = "numeric" @min = 0 @width = 5 + @max = 9_999_999 @prefix = "£" @hint_text = "Enter the total cash sum paid by the buyer towards the property that was not funded by the mortgage" @derived = true diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index df76ffcbf..0f660ceb0 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -1,7 +1,9 @@ class SalesLogValidator < ActiveModel::Validator include Validations::Sales::HouseholdValidations - include Validations::SharedValidations include Validations::Sales::FinancialValidations + include Validations::Sales::SaleInformationValidations + + include Validations::SharedValidations include Validations::LocalAuthorityValidations def validate(record) diff --git a/app/models/validations/sales/sale_information_validations.rb b/app/models/validations/sales/sale_information_validations.rb new file mode 100644 index 000000000..4c8747f18 --- /dev/null +++ b/app/models/validations/sales/sale_information_validations.rb @@ -0,0 +1,9 @@ +module Validations::Sales::SaleInformationValidations + def validate_deposit_range(record) + return if record.deposit.blank? + + unless record.deposit >= 0 && record.deposit <= 999_999 + record.errors.add :deposit, "Cash deposit must be £0 - £999,999" + end + end +end diff --git a/spec/models/form/sales/questions/deposit_amount_spec.rb b/spec/models/form/sales/questions/deposit_amount_spec.rb index db47387d3..961576d62 100644 --- a/spec/models/form/sales/questions/deposit_amount_spec.rb +++ b/spec/models/form/sales/questions/deposit_amount_spec.rb @@ -46,4 +46,8 @@ RSpec.describe Form::Sales::Questions::DepositAmount, type: :model do it "has correct min" do expect(question.min).to eq(0) end + + it "has correct max" do + expect(question.max).to eq(9_999_999) + end end diff --git a/spec/models/validations/sales/household_validations_spec.rb b/spec/models/validations/sales/household_validations_spec.rb index ea581c096..b7ea4f663 100644 --- a/spec/models/validations/sales/household_validations_spec.rb +++ b/spec/models/validations/sales/household_validations_spec.rb @@ -7,42 +7,42 @@ RSpec.describe Validations::Sales::HouseholdValidations do describe "#validate_number_of_other_people_living_in_the_property" do context "when within permitted bounds" do - let(:record) { FactoryBot.build(:sales_log, hholdcount: 2) } + let(:record) { build(:sales_log, hholdcount: 2) } it "does not add an error" do household_validator.validate_number_of_other_people_living_in_the_property(record) - expect(record.errors).not_to be_present + expect(record.errors[:hholdcount]).not_to be_present end end context "when blank" do - let(:record) { FactoryBot.build(:sales_log, hholdcount: nil) } + let(:record) { build(:sales_log, hholdcount: nil) } it "does not add an error" do household_validator.validate_number_of_other_people_living_in_the_property(record) - expect(record.errors).not_to be_present + expect(record.errors[:hholdcount]).not_to be_present end end context "when below lower bound" do - let(:record) { FactoryBot.build(:sales_log, hholdcount: -1) } + let(:record) { build(:sales_log, hholdcount: -1) } it "adds an error" do household_validator.validate_number_of_other_people_living_in_the_property(record) - expect(record.errors).to be_present + expect(record.errors[:hholdcount]).to be_present end end context "when higher than upper bound" do - let(:record) { FactoryBot.build(:sales_log, hholdcount: 5) } + let(:record) { build(:sales_log, hholdcount: 5) } it "adds an error" do household_validator.validate_number_of_other_people_living_in_the_property(record) - expect(record.errors).to be_present + expect(record.errors[:hholdcount]).to be_present end end end diff --git a/spec/models/validations/sales/sale_information_validations_spec.rb b/spec/models/validations/sales/sale_information_validations_spec.rb new file mode 100644 index 000000000..575eedfff --- /dev/null +++ b/spec/models/validations/sales/sale_information_validations_spec.rb @@ -0,0 +1,49 @@ +require "rails_helper" + +RSpec.describe Validations::Sales::SaleInformationValidations do + subject(:sale_information_validator) { validator_class.new } + + let(:validator_class) { Class.new { include Validations::Sales::SaleInformationValidations } } + + describe "#validate_deposit_range" do + context "when within permitted bounds" do + let(:record) { build(:sales_log, deposit: 0) } + + it "does not add an error" do + sale_information_validator.validate_deposit_range(record) + + expect(record.errors[:deposit]).not_to be_present + end + end + + context "when blank" do + let(:record) { build(:sales_log, deposit: nil) } + + it "does not add an error" do + sale_information_validator.validate_deposit_range(record) + + expect(record.errors[:deposit]).not_to be_present + end + end + + context "when below lower bound" do + let(:record) { build(:sales_log, deposit: -1) } + + it "adds an error" do + sale_information_validator.validate_deposit_range(record) + + expect(record.errors[:deposit]).to be_present + end + end + + context "when higher than upper bound" do + let(:record) { build(:sales_log, deposit: 1_000_000) } + + it "adds an error" do + sale_information_validator.validate_deposit_range(record) + + expect(record.errors[:deposit]).to be_present + end + end + end +end diff --git a/spec/requests/form_controller_spec.rb b/spec/requests/form_controller_spec.rb index 04a740dc1..dcf67cb71 100644 --- a/spec/requests/form_controller_spec.rb +++ b/spec/requests/form_controller_spec.rb @@ -658,7 +658,7 @@ RSpec.describe FormController, type: :request do let(:referrer) { "/lettings-logs/#{completed_lettings_log.id}/net-income-value-check?referrer=check_answers" } before do - completed_lettings_log.update!(ecstat1: 1, earnings: 130, hhmemb: 1) # we're not routing to that page, so it gets cleared?§ + completed_lettings_log.update!(ecstat1: 1, earnings: 130, hhmemb: 1) # we're not routing to that page, so it gets cleared? allow(completed_lettings_log).to receive(:net_income_soft_validation_triggered?).and_return(true) allow(completed_lettings_log.form).to receive(:end_date).and_return(Time.zone.today + 1.day) post "/lettings-logs/#{completed_lettings_log.id}/form", params: interrupt_params, headers: headers.merge({ "HTTP_REFERER" => referrer }) From 47ddf87282660de598727de85192fdd3997319fd Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire <94526761+natdeanlewissoftwire@users.noreply.github.com> Date: Fri, 20 Jan 2023 08:32:42 +0000 Subject: [PATCH 4/5] CLDC-1858 Add new collection resources design (#1204) * feat: update collection resources with new lettings log link and design * refactor: linting * feat: update size (previously was using in browser size not post-download) --- app/frontend/styles/_document-list.scss | 7 ++++++- .../layouts/_collection_resources.html.erb | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/frontend/styles/_document-list.scss b/app/frontend/styles/_document-list.scss index d3f632b27..47936a365 100644 --- a/app/frontend/styles/_document-list.scss +++ b/app/frontend/styles/_document-list.scss @@ -1,5 +1,10 @@ +.app-document-list { + margin-top: govuk-spacing(3); + margin-bottom: govuk-spacing(6); +} + .app-document-list__item { - margin-bottom: govuk-spacing(4); + margin-bottom: govuk-spacing(3); &:last-child { margin-bottom: 0; diff --git a/app/views/layouts/_collection_resources.html.erb b/app/views/layouts/_collection_resources.html.erb index 4be268e7a..726cd1a86 100644 --- a/app/views/layouts/_collection_resources.html.erb +++ b/app/views/layouts/_collection_resources.html.erb @@ -1,16 +1,22 @@
-

Collection resources

+

Collection resources

+

For lettings starting during 1 April 2023 - 31 March 2024 and sales completing during the same period, use the 23/24 forms.

+

Lettings 23/24

+ <%= render DocumentListComponent.new(items: [ + { + name: "Lettings log for tenants (2023/24)", + href: "https://core.communities.gov.uk/public/download/guides-and-manuals/2023-24%20Lettings%20paper%20form.pdf?download-format=pdf", + metadata: "PDF, 281 KB, 8 pages", + }, + ]) %> + +

Lettings 22/23

<%= render DocumentListComponent.new(items: [ { name: "Lettings log for tenants (2022/23)", href: "https://core.communities.gov.uk/public/download/guides-and-manuals/2022-23%20Lettings%20paper%20form.pdf?download-format=pdf", metadata: "PDF, 654 KB, 4 pages", }, - { - name: "Lettings log for tenants (2021/22)", - href: "https://core.communities.gov.uk/public/download/guides-and-manuals/2021_22%20Lettings%20Log.pdf?download-format=pdf", - metadata: "PDF, 302 KB, 3 pages", - }, ]) %>
From ced6457a19d061853551355adfe135bf7b490113 Mon Sep 17 00:00:00 2001 From: Jack <113976590+bibblobcode@users.noreply.github.com> Date: Fri, 20 Jan 2023 08:40:37 +0000 Subject: [PATCH 5/5] CLDC-1878 Add hint to mortgage amount question (#1203) --- app/models/form/sales/questions/mortgage_amount.rb | 1 + spec/models/form/sales/questions/mortgage_amount_spec.rb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/form/sales/questions/mortgage_amount.rb b/app/models/form/sales/questions/mortgage_amount.rb index 5ad85bd31..bd4ae5e60 100644 --- a/app/models/form/sales/questions/mortgage_amount.rb +++ b/app/models/form/sales/questions/mortgage_amount.rb @@ -8,5 +8,6 @@ class Form::Sales::Questions::MortgageAmount < ::Form::Question @min = 0 @width = 5 @prefix = "£" + @hint_text = "Enter the amount of mortgage agreed with the mortgage lender. Exclude any deposits or cash payments. Numeric in pounds. Rounded to the nearest pound." end end diff --git a/spec/models/form/sales/questions/mortgage_amount_spec.rb b/spec/models/form/sales/questions/mortgage_amount_spec.rb index eadec2876..832b47d37 100644 --- a/spec/models/form/sales/questions/mortgage_amount_spec.rb +++ b/spec/models/form/sales/questions/mortgage_amount_spec.rb @@ -32,7 +32,7 @@ RSpec.describe Form::Sales::Questions::MortgageAmount, type: :model do end it "has the correct hint" do - expect(question.hint_text).to be_nil + expect(question.hint_text).to eq("Enter the amount of mortgage agreed with the mortgage lender. Exclude any deposits or cash payments. Numeric in pounds. Rounded to the nearest pound.") end it "has correct width" do