Browse Source
* feat: add void date guidance partial * feat: set guidance pos bottom for 22/23 log * feat: add tests * refactor: linting * Update app/models/form/question.rb Co-authored-by: Phil Lee <asmega@users.noreply.github.com> * feat: smart quotes * feat: respond to po comments * feat: add voiddate/mrcdate validation to mrcdate too * feat: add ten year validations to startdate too * feat: fix tests --------- Co-authored-by: Phil Lee <asmega@users.noreply.github.com>review-app-for-23-24-mobbing
natdeanlewissoftwire
2 years ago
committed by
GitHub
15 changed files with 144 additions and 69 deletions
@ -1,11 +0,0 @@ |
|||||||
class Form::Lettings::Pages::NewBuildHandoverDate < ::Form::Page |
|
||||||
def initialize(id, hsh, subsection) |
|
||||||
super |
|
||||||
@id = "new_build_handover_date" |
|
||||||
@depends_on = [{ "is_renewal?" => false, "has_first_let_vacancy_reason?" => true }] |
|
||||||
end |
|
||||||
|
|
||||||
def questions |
|
||||||
@questions ||= [Form::Lettings::Questions::VoiddateNewBuild.new(nil, nil, self)] |
|
||||||
end |
|
||||||
end |
|
@ -1,8 +1,9 @@ |
|||||||
class Form::Lettings::Pages::VoidOrRenewalDate < ::Form::Page |
class Form::Lettings::Pages::VoidDate < ::Form::Page |
||||||
def initialize(id, hsh, subsection) |
def initialize(id, hsh, subsection) |
||||||
super |
super |
||||||
@id = "void_or_renewal_date" |
@id = "void_date" |
||||||
@depends_on = [{ "is_renewal?" => false, "vacancy_reason_not_renewal_or_first_let?" => true }] |
@depends_on = [{ "is_renewal?" => false, "vacancy_reason_not_renewal_or_first_let?" => true }, |
||||||
|
{ "is_renewal?" => false, "has_first_let_vacancy_reason?" => true }] |
||||||
end |
end |
||||||
|
|
||||||
def questions |
def questions |
@ -1,12 +0,0 @@ |
|||||||
class Form::Lettings::Questions::VoiddateNewBuild < ::Form::Question |
|
||||||
def initialize(id, hsh, page) |
|
||||||
super |
|
||||||
@id = "voiddate" |
|
||||||
@check_answer_label = "New-build handover date" |
|
||||||
@header = "What is the new-build handover date?" |
|
||||||
@type = "date" |
|
||||||
@check_answers_card_number = 0 |
|
||||||
@hint_text = "" |
|
||||||
@question_number = 23 |
|
||||||
end |
|
||||||
end |
|
@ -0,0 +1,9 @@ |
|||||||
|
<%= govuk_details(summary_text: "What is a void date?") do %> |
||||||
|
<p class="govuk-body">Date the property was (legally or contractually) available to let, or for:</p> |
||||||
|
<ul class="govuk-list govuk-list--bullet"> |
||||||
|
<li>re-lets: the day after the previous tenant's contract ended</li> |
||||||
|
<li>new builds: the day the landlord legally first owned the property (‘completion date’)</li> |
||||||
|
<li>new conversions or acquisitions: completion date, or the day after rehabilitation work ended</li> |
||||||
|
<li>new leases: the day the landlord got contractual property rights and could let it out to tenants</li> |
||||||
|
</ul> |
||||||
|
<% end %> |
@ -0,0 +1,33 @@ |
|||||||
|
require "rails_helper" |
||||||
|
|
||||||
|
RSpec.describe Form::Lettings::Pages::VoidDate, type: :model do |
||||||
|
subject(:page) { described_class.new(page_id, page_definition, subsection) } |
||||||
|
|
||||||
|
let(:page_id) { nil } |
||||||
|
let(:page_definition) { nil } |
||||||
|
let(:subsection) { instance_double(Form::Subsection) } |
||||||
|
|
||||||
|
it "has correct subsection" do |
||||||
|
expect(page.subsection).to eq(subsection) |
||||||
|
end |
||||||
|
|
||||||
|
it "has correct questions" do |
||||||
|
expect(page.questions.map(&:id)).to eq(%w[voiddate]) |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct id" do |
||||||
|
expect(page.id).to eq("void_date") |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct header" do |
||||||
|
expect(page.header).to be_nil |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct description" do |
||||||
|
expect(page.description).to be_nil |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct depends_on" do |
||||||
|
expect(page.depends_on).to eq([{ "is_renewal?" => false, "vacancy_reason_not_renewal_or_first_let?" => true }, { "has_first_let_vacancy_reason?" => true, "is_renewal?" => false }]) |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,45 @@ |
|||||||
|
require "rails_helper" |
||||||
|
|
||||||
|
RSpec.describe Form::Lettings::Questions::Voiddate, type: :model do |
||||||
|
subject(:question) { described_class.new(question_id, question_definition, page) } |
||||||
|
|
||||||
|
let(:question_id) { nil } |
||||||
|
let(:question_definition) { nil } |
||||||
|
let(:page) { instance_double(Form::Page) } |
||||||
|
|
||||||
|
it "has correct page" do |
||||||
|
expect(question.page).to eq(page) |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct id" do |
||||||
|
expect(question.id).to eq("voiddate") |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct header" do |
||||||
|
expect(question.header).to eq("What is the void date?") |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct check_answer_label" do |
||||||
|
expect(question.check_answer_label).to eq("Void date") |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct check_answers_card_number" do |
||||||
|
expect(question.check_answers_card_number).to eq(0) |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct question_number" do |
||||||
|
expect(question.question_number).to eq(23) |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct guidance_partial" do |
||||||
|
expect(question.guidance_partial).to eq("void_date") |
||||||
|
end |
||||||
|
|
||||||
|
it "has the correct type" do |
||||||
|
expect(question.type).to eq("date") |
||||||
|
end |
||||||
|
|
||||||
|
it "is not marked as derived" do |
||||||
|
expect(question).not_to be_derived |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue