Browse Source

Changes related to the location page

pull/705/head
Stéphane Meny 3 years ago
parent
commit
8027cd27b7
No known key found for this signature in database
GPG Key ID: 9D0AFEA988527923
  1. 14
      app/models/form/setup/pages/location.rb
  2. 2
      app/models/form/setup/pages/rent_type.rb
  3. 10
      app/models/form/setup/pages/scheme.rb
  4. 17
      app/models/form/setup/questions/location.rb
  5. 7
      app/models/form/setup/questions/scheme_id.rb
  6. 1
      app/models/form/setup/subsections/setup.rb
  7. 6
      spec/models/form/setup/pages/location_spec.rb
  8. 4
      spec/models/form/setup/pages/scheme_spec.rb
  9. 7
      spec/models/form/setup/questions/location_spec.rb
  10. 20
      spec/models/form/setup/questions/scheme_id_spec.rb
  11. 2
      spec/models/form/setup/subsections/setup_spec.rb
  12. 2
      spec/models/form_handler_spec.rb
  13. 3
      spec/requests/schemes_controller_spec.rb

14
app/models/form/setup/pages/location.rb

@ -1,20 +1,24 @@
class Form::Setup::Pages::Location < ::Form::Page
def initialize(id, hsh, subsection)
def initialize(_id, hsh, subsection)
super("location", hsh, subsection)
@header = ""
@description = ""
@questions = questions
# Only display if there is more than one location
@depends_on = [{
"supported_housing_schemes_enabled?" => true,
# scheme.locations.size > 1 => true
}]
"supported_housing_schemes_enabled?" => true,
"needstype" => 2,
"scheme.locations.size" => {
"operator" => ">",
"operand" => 1,
},
}]
@derived = true
end
def questions
[
Form::Setup::Questions::Location.new(nil, nil, self)
Form::Setup::Questions::Location.new(nil, nil, self),
]
end
end

2
app/models/form/setup/pages/rent_type.rb

@ -1,5 +1,5 @@
class Form::Setup::Pages::RentType < ::Form::Page
def initialize(id, hsh, subsection)
def initialize(_id, hsh, subsection)
super("rent_type", hsh, subsection)
@header = ""
@description = ""

10
app/models/form/setup/pages/scheme.rb

@ -1,17 +1,19 @@
class Form::Setup::Pages::Scheme < ::Form::Page
def initialize(id, hsh, subsection)
def initialize(_id, hsh, subsection)
super("scheme", hsh, subsection)
@header = ""
@description = ""
@questions = questions
@depends_on = [{ "supported_housing_schemes_enabled?" => true }]
@depends_on = [{
"supported_housing_schemes_enabled?" => true,
"needstype" => 2,
}]
@derived = true
end
def questions
[
Form::Setup::Questions::SchemeId.new(nil, nil, self)
Form::Setup::Questions::SchemeId.new(nil, nil, self),
]
end
end

17
app/models/form/setup/questions/location.rb

@ -6,13 +6,20 @@ class Form::Setup::Questions::Location < ::Form::Question
@header = "Which location used by is this log for?"
@hint_text = ""
@type = "radio"
@answer_options = ANSWER_OPTIONS
@answer_options = location_answers
@derived = true unless FeatureToggle.supported_housing_schemes_enabled?
@page = page
end
ANSWER_OPTIONS = {
"1" => { "value" => "General needs" },
"2" => { "value" => "Supported housing" },
}.freeze
def location_answers
{}
end
def hidden_in_check_answers?(case_log, _current_user = nil)
!supported_housing_selected?(case_log)
end
def supported_housing_selected?(case_log)
case_log.needstype == 2
end
end

7
app/models/form/setup/questions/scheme_id.rb

@ -1,5 +1,5 @@
class Form::Setup::Questions::SchemeId < ::Form::Question
def initialize(id, hsh, page)
def initialize(_id, hsh, page)
super("scheme_id", hsh, page)
@check_answer_label = "Scheme name"
@header = "What scheme is this log for?"
@ -11,19 +11,20 @@ class Form::Setup::Questions::SchemeId < ::Form::Question
def answer_options
answer_opts = {}
return answer_opts unless ActiveRecord::Base.connected?
Scheme.select(:id, :service_name).each_with_object(answer_opts) do |scheme, hsh|
hsh[scheme.id] = scheme.service_name
hsh
end
end
def displayed_answer_options(case_log)
def displayed_answer_options(case_log)
return {} unless case_log.created_by
user_org_scheme_ids = Scheme.where("organisation_id = #{case_log.created_by.organisation_id}").map(&:id)
answer_options.select { |k, _v| user_org_scheme_ids.include?(k) }
end
private
def selected_answer_option_is_derived?(_case_log)

1
app/models/form/setup/subsections/setup.rb

@ -13,6 +13,7 @@ class Form::Subsections::Setup < ::Form::Subsection
Form::Setup::Pages::CreatedBy.new(nil, nil, self),
Form::Setup::Pages::NeedsType.new(nil, nil, self),
Form::Setup::Pages::Scheme.new(nil, nil, self),
Form::Setup::Pages::Location.new(nil, nil, self),
Form::Setup::Pages::Renewal.new(nil, nil, self),
Form::Setup::Pages::TenancyStartDate.new(nil, nil, self),
Form::Setup::Pages::RentType.new(nil, nil, self),

6
spec/models/form/setup/pages/location_spec.rb

@ -30,7 +30,11 @@ RSpec.describe Form::Setup::Pages::Location, type: :model do
it "has the correct depends_on" do
expect(page.depends_on).to eq([{
"supported_housing_schemes_enabled?" => true,
scheme.locations.size > 1 => true
"needstype" => 2,
"scheme.locations.size" => {
"operator" => ">",
"operand" => 1,
},
}])
end
end

4
spec/models/form/setup/pages/scheme_spec.rb

@ -12,7 +12,7 @@ RSpec.describe Form::Setup::Pages::Scheme, type: :model do
end
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[scheme])
expect(page.questions.map(&:id)).to eq(%w[scheme_id])
end
it "has the correct id" do
@ -28,6 +28,6 @@ RSpec.describe Form::Setup::Pages::Scheme, type: :model do
end
it "has the correct depends_on" do
expect(page.depends_on).to eq([{ "supported_housing_schemes_enabled?" => true }])
expect(page.depends_on).to eq([{ "needstype" => 2, "supported_housing_schemes_enabled?" => true }])
end
end

7
spec/models/form/setup/questions/location_spec.rb

@ -28,13 +28,10 @@ RSpec.describe Form::Setup::Questions::Location, type: :model do
end
it "is marked as derived" do
expect(question.derived?).to be true
expect(question.derived?).to be_falsey
end
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"1" => { "value" => "General needs" },
"2" => { "value" => "Supported housing" },
})
expect(question.answer_options).to eq({})
end
end

20
spec/models/form/setup/questions/scheme_id_spec.rb

@ -39,17 +39,19 @@ RSpec.describe Form::Setup::Questions::SchemeId, type: :model do
expect(question.derived?).to be false
end
context "When a user is signed in" do
let(:organisation) { FactoryBot.create(:organisation)}
let(:organisation_2) { FactoryBot.create(:organisation)}
context "when a user is signed in" do
let(:organisation) { FactoryBot.create(:organisation) }
let(:organisation_2) { FactoryBot.create(:organisation) }
let(:user) { FactoryBot.create(:user, organisation_id: organisation.id) }
let(:scheme) { FactoryBot.create(:scheme, organisation_id: organisation.id ) }
let!(:scheme_2) { FactoryBot.create(:scheme, organisation_id: organisation_2.id ) }
let(:case_log) { FactoryBot.create(:case_log, created_by: user)}
let(:scheme) { FactoryBot.create(:scheme, organisation_id: organisation.id) }
let(:case_log) { FactoryBot.create(:case_log, created_by: user) }
before do
FactoryBot.create(:scheme, organisation_id: organisation_2.id)
end
it "has the correct answer_options based on the schemes the user's organisation owns or manages" do
expected_answer = { scheme.id => "#{scheme.service_name}" }
expected_answer = { scheme.id => scheme.service_name }
expect(question.displayed_answer_options(case_log)).to eq(expected_answer)
end
end

2
spec/models/form/setup/subsections/setup_spec.rb

@ -16,6 +16,8 @@ RSpec.describe Form::Setup::Subsections::Setup, type: :model do
%w[organisation
created_by
needs_type
scheme
location
renewal
tenancy_start_date
rent_type

2
spec/models/form_handler_spec.rb

@ -17,7 +17,7 @@ RSpec.describe FormHandler do
form_handler = described_class.instance
form = form_handler.get_form(test_form_name)
expect(form).to be_a(Form)
expect(form.pages.count).to eq(42)
expect(form.pages.count).to eq(44)
end
end

3
spec/requests/schemes_controller_spec.rb

@ -393,7 +393,8 @@ RSpec.describe SchemesController, type: :request do
end
it "has correct title" do
expect(page).to have_title("#{scheme.service_name} - Submit social housing lettings and sales data (CORE) - GOV.UK")
expected_title = CGI.escapeHTML("#{scheme.service_name} - Submit social housing lettings and sales data (CORE) - GOV.UK")
expect(page).to have_title(expected_title)
end
context "when paginating over 20 results" do

Loading…
Cancel
Save