From d51711c74f313b132ad835bbc5adffb3abb4cdb6 Mon Sep 17 00:00:00 2001 From: JG Date: Mon, 13 Jun 2022 15:58:47 +0100 Subject: [PATCH] converting int to strings in scheme model --- app/controllers/schemes_controller.rb | 1 + app/helpers/tab_nav_helper.rb | 2 +- app/models/scheme.rb | 91 +++++++++++++++++++ app/views/schemes/show.html.erb | 18 ++++ config/routes.rb | 2 +- ...094847_add_missing_attributes_to_scheme.rb | 18 ++-- db/schema.rb | 2 +- db/seeds.rb | 6 +- spec/factories/scheme.rb | 9 +- spec/features/schemes_spec.rb | 4 +- spec/requests/schemes_controller_spec.rb | 2 +- 11 files changed, 137 insertions(+), 18 deletions(-) diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb index 9c571d765..616659935 100644 --- a/app/controllers/schemes_controller.rb +++ b/app/controllers/schemes_controller.rb @@ -15,6 +15,7 @@ class SchemesController < ApplicationController end def show + @scheme = Scheme.find_by(id: params[:id]) end private diff --git a/app/helpers/tab_nav_helper.rb b/app/helpers/tab_nav_helper.rb index c718ebb83..bb163ddd8 100644 --- a/app/helpers/tab_nav_helper.rb +++ b/app/helpers/tab_nav_helper.rb @@ -8,7 +8,7 @@ module TabNavHelper def scheme_cell(scheme) link_text = scheme.service_name.presence - [govuk_link_to(link_text, scheme), "Scheme #{scheme.primary_client_group}"].join("\n") + [govuk_link_to(link_text, scheme), "Scheme #{scheme.primary_client_group_display}"].join("\n") end def org_cell(user) diff --git a/app/models/scheme.rb b/app/models/scheme.rb index 7f6ec337e..7d226689c 100644 --- a/app/models/scheme.rb +++ b/app/models/scheme.rb @@ -4,4 +4,95 @@ class Scheme < ApplicationRecord scope :search_by_code, ->(code) { where("code ILIKE ?", "%#{code}%") } scope :search_by_service_name, ->(name) { where("service_name ILIKE ?", "%#{name}%") } scope :search_by, ->(param) { search_by_code(param).or(search_by_service_name(param)) } + + SCHEME_TYPE = { + 0 => "Missings", + 4 => "Foyer", + 5 => "D, L, Airect Access Hostel", + 6 => "Other Supported Housing", + 7 => "Housing for older people", + }.freeze + + PRIMARY_CLIENT_GROUP = { + "O" => "Homeless families with support needs", + "H" => "Offenders & people at risk of offending", + "M" => "Older people with support needs", + "L" => "People at risk of domestic violence", + "A" => "People with a physical or sensory disability", + "G" => "People with alcohol problems", + "F" => "People with drug problems", + "B" => "People with HIV or AIDS", + "D" => "People with learning disabilities", + "E" => "People with mental health problems", + "I" => "Refugees (permanent)", + "S" => "Rough sleepers", + "N" => "Single homeless people with support needs", + "R" => "Teenage parents", + "Q" => "Young people at risk", + "P" => "Young people leaving care", + "X" => "Missing", + }.freeze + + SUPPORT_TYPE = { + 0 => "Missing", + 1 => "Resettlement Support", + 2 => "Low levels of support", + 3 => "Medium levels of support", + 4 => "High levels of care and support", + 5 => "Nursing care services to a care home", + 6 => "Floating Support", + }.freeze + + INTENDED_STAY = { + "M" =>"Medium stay", + "P" =>"Permanent", + "S" =>"Short Stay", + "V" =>"Very short stay", + "X" =>"Missing", + }.freeze + + REGISTERED_UNDER_CARE_ACT = { + 0 => "Yes – part registered as a care home", + 1 => "No", + }.freeze + + def display_attributes + [ + { name: "Service code", value: code }, + { name: "Name", value: service_name }, + { name: "Confidential information", value: sensitive }, + { name: "Managing agent", value: organisation.name }, + { name: "Type of service", value: scheme_type_display }, + { name: "Registered under Care Standards Act 2000", value: registered_under_care_act_display }, + { name: "Total number of units", value: total_units }, + { name: "Primary client group", value: primary_client_group_display }, + { name: "Secondary client group", value: primary_client_group_display }, + { name: "Level of support given", value: support_type_display }, + { name: "Intended length of stay", value: intended_stay_display }, + ] + end + + def scheme_type_display + SCHEME_TYPE[scheme_type] + end + + def registered_under_care_act_display + REGISTERED_UNDER_CARE_ACT[registered_under_care_act] + end + + def primary_client_group_display + PRIMARY_CLIENT_GROUP[primary_client_group] + end + + def secondary_client_group_display + PRIMARY_CLIENT_GROUP[secondary_client_group] + end + + def support_type_display + SUPPORT_TYPE[support_type] + end + + def intended_stay_display + INTENDED_STAY[intended_stay] + end end diff --git a/app/views/schemes/show.html.erb b/app/views/schemes/show.html.erb index e69de29bb..694b61bc7 100644 --- a/app/views/schemes/show.html.erb +++ b/app/views/schemes/show.html.erb @@ -0,0 +1,18 @@ +
+
+

+ <%= content_for("Test") %> +

+

+ Scheme Result +

+ <%= govuk_summary_list do |summary_list| %> + <% @scheme.display_attributes.each do |attr| %> + <%= summary_list.row do |row| %> + <% row.key { attr[:name].to_s.humanize } %> + <% row.value { details_html(attr) } %> + <% end %> + <% end %> + <% end %> +
+
diff --git a/config/routes.rb b/config/routes.rb index 51f9a8a36..3e4492127 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -35,7 +35,7 @@ Rails.application.routes.draw do get "edit/password", to: "users#edit_password" end - resources :schemes, path: "/supported-housing", only: [:index, :show] + resources :schemes, path: "/supported-housing", only: %i[index show] resources :users do member do diff --git a/db/migrate/20220613094847_add_missing_attributes_to_scheme.rb b/db/migrate/20220613094847_add_missing_attributes_to_scheme.rb index 15c08a8cc..ab2f9718e 100644 --- a/db/migrate/20220613094847_add_missing_attributes_to_scheme.rb +++ b/db/migrate/20220613094847_add_missing_attributes_to_scheme.rb @@ -1,12 +1,14 @@ class AddMissingAttributesToScheme < ActiveRecord::Migration[7.0] def change - add_column :schemes, :primary_client_group, :string - add_column :schemes, :secondary_client_group, :string - add_column :schemes, :sensitive, :boolean - add_column :schemes, :total_units, :boolean - add_column :schemes, :scheme_type, :integer - add_column :schemes, :registered_under_care_act, :boolean - add_column :schemes, :support_type, :integer - add_column :schemes, :intended_stay, :string + change_table :schemes, bulk: true do |t| + t.string :primary_client_group + t.string :secondary_client_group + t.boolean :sensitive + t.boolean :total_units + t.integer :scheme_type + t.integer :registered_under_care_act + t.integer :support_type + t.string :intended_stay + end end end diff --git a/db/schema.rb b/db/schema.rb index 0516323b3..42b120a8e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -288,7 +288,7 @@ ActiveRecord::Schema[7.0].define(version: 2022_06_13_094847) do t.boolean "sensitive" t.boolean "total_units" t.integer "scheme_type" - t.boolean "registered_under_care_act" + t.integer "registered_under_care_act" t.integer "support_type" t.string "intended_stay" t.index ["organisation_id"], name: "index_schemes_on_organisation_id" diff --git a/db/seeds.rb b/db/seeds.rb index fdc09b37c..992de72ae 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -74,7 +74,7 @@ unless Rails.env.test? code: "S878", service_name: "Beulahside Care", organisation: org, - primary_client_group: "Some Improtant Group", + primary_client_group: "G", created_at: Time.zone.now, ) @@ -82,7 +82,7 @@ unless Rails.env.test? code: "S312", service_name: "Abdullahview Point", organisation: org, - primary_client_group: "Some Improtant Group", + primary_client_group: "I", created_at: Time.zone.now, ) @@ -90,7 +90,7 @@ unless Rails.env.test? code: "7XYZ", service_name: "Caspermouth Center", organisation: dummy_org, - primary_client_group: "Some Improtant Group", + primary_client_group: "G", created_at: Time.zone.now, ) end diff --git a/spec/factories/scheme.rb b/spec/factories/scheme.rb index 42c6d243f..de1b660c7 100644 --- a/spec/factories/scheme.rb +++ b/spec/factories/scheme.rb @@ -2,7 +2,14 @@ FactoryBot.define do factory :scheme do code { Faker::Name.initials(number: 4) } service_name { Faker::Name.name_with_middle } - primary_client_group { Faker::Name.name_with_middle } + sensitive { Faker::Boolean.boolean } + registered_under_care_act { Faker::Boolean.boolean } + support_type { Faker::Number.within(range: 0..6) } + scheme_type { %i[0 4 5 6 7].sample } + total_units { Faker::Number.number(digits: 2) } + intended_stay { %w[M P S V X].sample } + primary_client_group { %w[O H M L A G F B D E I S N R Q P X].sample } + secondary_client_group { %w[O H M L A G F B D E I S N R Q P X].sample } organisation created_at { Time.zone.now } end diff --git a/spec/features/schemes_spec.rb b/spec/features/schemes_spec.rb index 2a4d7ab8e..56734667e 100644 --- a/spec/features/schemes_spec.rb +++ b/spec/features/schemes_spec.rb @@ -100,8 +100,8 @@ RSpec.describe "Supported housing scheme Features" do end context "when I visit supported housing page" do - before do - visit("supported-housing") + before do + visit("supported-housing") end it "shows list of links to schemes" do diff --git a/spec/requests/schemes_controller_spec.rb b/spec/requests/schemes_controller_spec.rb index f69b703b9..d5096c33d 100644 --- a/spec/requests/schemes_controller_spec.rb +++ b/spec/requests/schemes_controller_spec.rb @@ -161,7 +161,7 @@ RSpec.describe SchemesController, type: :request do end end - context "#show" do + describe "#show" do let(:specific_scheme) { schemes.first } context "when not signed in" do