diff --git a/app/admin/case_logs.rb b/app/admin/case_logs.rb
index 43cea56b2..4efa249b3 100644
--- a/app/admin/case_logs.rb
+++ b/app/admin/case_logs.rb
@@ -2,7 +2,122 @@ ActiveAdmin.register CaseLog do
# See permitted parameters documentation:
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
permit_params do
- permitted = %i[status tenant_code age1 sex1 tenant_ethnic_group tenant_nationality previous_housing_situation armedforces ecstat1 other_hhmemb relat2 age2 sex2 ecstat2 relat3 age3 sex3 ecstat3 relat4 age4 sex4 ecstat4 relat5 age5 sex5 ecstat5 relat6 age6 sex6 ecstat6 relat7 age7 person_7_gender ecstat7 relat8 age8 sex8 ecstat8 homelessness reason benefit_cap_spare_room_subsidy armed_forces_active armed_forces_injured medical_conditions pregnancy accessibility_requirements condition_effects tenancy_code tenancy_start_date starter_tenancy fixed_term_tenancy tenancy_type letting_type letting_provider la previous_postcode property_relet property_vacancy_reason property_reference property_unit_type property_building_type property_number_of_bedrooms property_void_date majorrepairs mrcdate property_wheelchair_accessible net_income net_income_frequency net_income_uc_proportion hb rent_frequency basic_rent service_charge personal_service_charge support_charge total_charge tshortfall time_lived_in_la time_on_la_waiting_list prevloc property_postcode reasonable_preference reasonable_preference_reason cbl_letting chr_letting cap_letting hbrentshortfall other_reason accessibility_requirements_fully_wheelchair_accessible_housing accessibility_requirements_wheelchair_access_to_essential_rooms accessibility_requirements_level_access_housing accessibility_requirements_other_disability_requirements accessibility_requirements_no_disability_requirements accessibility_requirements_do_not_know accessibility_requirements_prefer_not_to_say condition_effects_vision condition_effects_hearing condition_effects_mobility condition_effects_dexterity condition_effects_stamina condition_effects_learning condition_effects_memory condition_effects_mental_health condition_effects_social_or_behavioral condition_effects_other condition_effects_prefer_not_to_say reasonable_preference_reason_homeless reasonable_preference_reason_unsatisfactory_housing reasonable_preference_reason_medical_grounds reasonable_preference_reason_avoid_hardship reasonable_preference_reason_do_not_know other_tenancy_type override_net_income_validation net_income_known]
+ permitted = %i[status
+ tenant_code
+ age1
+ sex1
+ tenant_ethnic_group
+ tenant_nationality
+ previous_housing_situation
+ armedforces
+ ecstat1
+ other_hhmemb
+ relat2
+ age2
+ sex2
+ ecstat2
+ relat3
+ age3
+ sex3
+ ecstat3
+ relat4
+ age4
+ sex4
+ ecstat4
+ relat5
+ age5
+ sex5
+ ecstat5
+ relat6
+ age6
+ sex6
+ ecstat6
+ relat7
+ age7
+ person_7_gender
+ ecstat7
+ relat8
+ age8
+ sex8
+ ecstat8
+ homelessness
+ reason
+ benefit_cap_spare_room_subsidy
+ armed_forces_active
+ armed_forces_injured
+ medical_conditions
+ pregnancy
+ accessibility_requirements
+ condition_effects
+ tenancy_code
+ tenancy_start_date
+ starter_tenancy
+ fixed_term_tenancy
+ tenancy_type
+ letting_type
+ letting_provider
+ la
+ previous_postcode
+ property_relet
+ property_vacancy_reason
+ property_reference
+ property_unit_type
+ property_building_type
+ property_number_of_bedrooms
+ property_void_date
+ majorrepairs
+ mrcdate
+ property_wheelchair_accessible
+ net_income
+ net_income_frequency
+ net_income_uc_proportion
+ hb
+ rent_frequency
+ basic_rent
+ service_charge
+ personal_service_charge
+ support_charge
+ total_charge
+ tshortfall
+ time_lived_in_la
+ time_on_la_waiting_list
+ prevloc
+ property_postcode
+ reasonable_preference
+ reasonable_preference_reason
+ cbl_letting
+ chr_letting
+ cap_letting
+ hbrentshortfall
+ other_reason
+ accessibility_requirements_fully_wheelchair_accessible_housing
+ accessibility_requirements_wheelchair_access_to_essential_rooms
+ accessibility_requirements_level_access_housing
+ accessibility_requirements_other_disability_requirements
+ accessibility_requirements_no_disability_requirements
+ accessibility_requirements_do_not_know
+ accessibility_requirements_prefer_not_to_say
+ condition_effects_vision
+ condition_effects_hearing
+ condition_effects_mobility
+ condition_effects_dexterity
+ condition_effects_stamina
+ condition_effects_learning
+ condition_effects_memory
+ condition_effects_mental_health
+ condition_effects_social_or_behavioral
+ condition_effects_other
+ condition_effects_prefer_not_to_say
+ reasonable_preference_reason_homeless
+ reasonable_preference_reason_unsatisfactory_housing
+ reasonable_preference_reason_medical_grounds
+ reasonable_preference_reason_avoid_hardship
+ reasonable_preference_reason_do_not_know
+ other_tenancy_type
+ override_net_income_validation
+ net_income_known
+ owning_organisation_id
+ managing_organisation_id]
permitted
end
@@ -14,6 +129,8 @@ ActiveAdmin.register CaseLog do
column :status
column :tenant_code
column :property_postcode
+ column :owning_organisation
+ column :managing_organisation
actions
end
end
diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb
index 48e546236..0f4ca0cab 100644
--- a/app/controllers/case_logs_controller.rb
+++ b/app/controllers/case_logs_controller.rb
@@ -9,7 +9,7 @@ class CaseLogsController < ApplicationController
end
def create
- case_log = CaseLog.create(api_case_log_params)
+ case_log = CaseLog.create(case_log_params)
respond_to do |format|
format.html { redirect_to case_log }
format.json do
@@ -138,6 +138,21 @@ private
http_basic_authenticate_or_request_with name: ENV["API_USER"], password: ENV["API_KEY"]
end
+ def case_log_params
+ if current_user
+ org_params.merge(api_case_log_params)
+ else
+ api_case_log_params
+ end
+ end
+
+ def org_params
+ {
+ "owning_organisation_id" => current_user.organisation.id,
+ "managing_organisation_id" => current_user.organisation.id,
+ }
+ end
+
def api_case_log_params
return {} unless params[:case_log]
diff --git a/app/models/bulk_upload.rb b/app/models/bulk_upload.rb
index 6f6d1f066..8bf0e2131 100644
--- a/app/models/bulk_upload.rb
+++ b/app/models/bulk_upload.rb
@@ -26,8 +26,14 @@ class BulkUpload
else
data_range = FIRST_DATA_ROW..last_row
data_range.map do |row_num|
- case_log = CaseLog.create!
- map_row(sheet.row(row_num)).each do |attr_key, attr_val|
+ row = sheet.row(row_num)
+ owning_organisation = Organisation.find(row[111])
+ managing_organisation = Organisation.find(row[113])
+ case_log = CaseLog.create!(
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ map_row(row).each do |attr_key, attr_val|
update = case_log.update(attr_key => attr_val)
unless update
# TODO: determine what to do when a bulk upload contains field values that don't pass validations
@@ -167,9 +173,9 @@ class BulkUpload
# postcode: row[108],
# postcod2: row[109],
# row[110] removed
- property_owner_organisation: row[111],
+ # row[111] is owning organisation used above
# username: row[112],
- property_manager_organisation: row[113],
+ # row[113] is managing organisation used above
leftreg: row[114],
# uprn: row[115],
incfreq: row[116],
diff --git a/app/models/case_log.rb b/app/models/case_log.rb
index 35150f279..487a39cfb 100644
--- a/app/models/case_log.rb
+++ b/app/models/case_log.rb
@@ -44,6 +44,9 @@ class CaseLog < ApplicationRecord
validates_with CaseLogValidator
before_save :update_status!
+ belongs_to :owning_organisation, class_name: "Organisation"
+ belongs_to :managing_organisation, class_name: "Organisation"
+
attr_accessor :page_id
enum status: { "not_started" => 0, "in_progress" => 1, "completed" => 2 }
@@ -224,7 +227,9 @@ private
end
def all_fields_nil?
- mandatory_fields.all? { |_key, val| val.nil? }
+ init_fields = %w[owning_organisation_id managing_organisation_id]
+ fields = mandatory_fields.except(*init_fields)
+ fields.all? { |_key, val| val.nil? }
end
def mandatory_fields
diff --git a/app/models/organisation.rb b/app/models/organisation.rb
index 8874d1e58..a4201d089 100644
--- a/app/models/organisation.rb
+++ b/app/models/organisation.rb
@@ -1,3 +1,5 @@
class Organisation < ApplicationRecord
has_many :users
+ has_many :case_logs, as: :owning_organisation
+ has_many :case_logs, as: :managing_organisation
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 095f34753..c2212fa2d 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -4,4 +4,5 @@ class User < ApplicationRecord
devise :database_authenticatable, :recoverable, :rememberable, :validatable
belongs_to :organisation
+ has_many :case_logs, through: :organisation
end
diff --git a/app/views/case_logs/index.html.erb b/app/views/case_logs/index.html.erb
index ef1bc3975..49ba90516 100644
--- a/app/views/case_logs/index.html.erb
+++ b/app/views/case_logs/index.html.erb
@@ -3,7 +3,6 @@
Your logs
-
<%= link_to "Create new log", case_logs_path, method: :post, class: "govuk-button" %>
<% if @in_progress_case_logs.present? %>
diff --git a/db/migrate/20211126142105_user_belongs_to_organisation.rb b/db/migrate/20211126142105_user_belongs_to_organisation.rb
deleted file mode 100644
index 38bcb162a..000000000
--- a/db/migrate/20211126142105_user_belongs_to_organisation.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-class UserBelongsToOrganisation < ActiveRecord::Migration[6.1]
- def up
- change_table :users, bulk: true do |t|
- t.remove :organisation
- t.belongs_to :organisation
- end
- end
-
- def down
- change_table :users, bulk: true do |t|
- t.remove :organisation_id
- t.column :organisation, :string
- end
- end
-end
diff --git a/db/migrate/20211126142105_user_case_logs_belong_to_organisation.rb b/db/migrate/20211126142105_user_case_logs_belong_to_organisation.rb
new file mode 100644
index 000000000..d689910bf
--- /dev/null
+++ b/db/migrate/20211126142105_user_case_logs_belong_to_organisation.rb
@@ -0,0 +1,23 @@
+class UserCaseLogsBelongToOrganisation < ActiveRecord::Migration[6.1]
+ def up
+ change_table :users, bulk: true do |t|
+ t.remove :organisation
+ t.belongs_to :organisation
+ end
+ change_table :case_logs, bulk: true do |t|
+ t.belongs_to :owning_organisation, class_name: "Organisation"
+ t.belongs_to :managing_organisation, class_name: "Organisation"
+ end
+ end
+
+ def down
+ change_table :users, bulk: true do |t|
+ t.remove :organisation_id
+ t.column :organisation, :string
+ end
+ change_table :case_logs, bulk: true do |t|
+ t.remove :owning_organisation_id
+ t.remove :managing_organisation_id
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 16cae1241..05e42a9b4 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -166,7 +166,11 @@ ActiveRecord::Schema.define(version: 2021_11_26_142105) do
t.string "why_dont_you_know_la"
t.integer "unitletas"
t.integer "builtype"
+ t.bigint "owning_organisation_id"
+ t.bigint "managing_organisation_id"
t.index ["discarded_at"], name: "index_case_logs_on_discarded_at"
+ t.index ["managing_organisation_id"], name: "index_case_logs_on_managing_organisation_id"
+ t.index ["owning_organisation_id"], name: "index_case_logs_on_owning_organisation_id"
end
create_table "organisations", force: :cascade do |t|
diff --git a/spec/controllers/admin/case_logs_controller_spec.rb b/spec/controllers/admin/case_logs_controller_spec.rb
index 1ffec1073..fc26bdb42 100644
--- a/spec/controllers/admin/case_logs_controller_spec.rb
+++ b/spec/controllers/admin/case_logs_controller_spec.rb
@@ -18,12 +18,23 @@ describe Admin::CaseLogsController, type: :controller do
expect(page).to have_content(resource_title)
expect(page).to have_table("index_table_case_logs")
expect(page).to have_link(case_log.id.to_s)
+ expect(page).to have_link(case_log.owning_organisation.name.to_s)
end
end
describe "Create case logs" do
+ let(:owning_organisation) { FactoryBot.create(:organisation) }
+ let(:managing_organisation) { owning_organisation }
+ let(:params) do
+ {
+ "case_log": {
+ "owning_organisation_id": owning_organisation.id,
+ "managing_organisation_id": managing_organisation.id,
+ },
+ }
+ end
it "creates a new case log" do
- expect { post :create, session: valid_session }.to change(CaseLog, :count).by(1)
+ expect { post :create, session: valid_session, params: params }.to change(CaseLog, :count).by(1)
end
end
end
diff --git a/spec/controllers/case_logs_controller_spec.rb b/spec/controllers/case_logs_controller_spec.rb
index 257981879..0acffe52c 100644
--- a/spec/controllers/case_logs_controller_spec.rb
+++ b/spec/controllers/case_logs_controller_spec.rb
@@ -14,14 +14,23 @@ RSpec.describe CaseLogsController, type: :controller do
end
describe "Post #create" do
+ let(:owning_organisation) { FactoryBot.create(:organisation) }
+ let(:managing_organisation) { owning_organisation }
+ let(:params) do
+ {
+ "owning_organisation_id": owning_organisation.id,
+ "managing_organisation_id": managing_organisation.id,
+ }
+ end
+
it "creates a new case log record" do
expect {
- post :create, params: {}, session: valid_session
+ post :create, params: params, session: valid_session
}.to change(CaseLog, :count).by(1)
end
it "redirects to that case log" do
- post :create, params: {}, session: valid_session
+ post :create, params: params, session: valid_session
expect(response.status).to eq(302)
end
end
diff --git a/spec/factories/case_log.rb b/spec/factories/case_log.rb
index 944be4237..dd636f9d9 100644
--- a/spec/factories/case_log.rb
+++ b/spec/factories/case_log.rb
@@ -1,5 +1,7 @@
FactoryBot.define do
factory :case_log do
+ owning_organisation { FactoryBot.create(:organisation) }
+ managing_organisation { FactoryBot.create(:organisation) }
trait :in_progress do
status { 1 }
tenant_code { "TH356" }
diff --git a/spec/features/form/form_navigation_spec.rb b/spec/features/form/form_navigation_spec.rb
index 0c697ae3d..791d72643 100644
--- a/spec/features/form/form_navigation_spec.rb
+++ b/spec/features/form/form_navigation_spec.rb
@@ -1,6 +1,7 @@
require "rails_helper"
RSpec.describe "Form Navigation" do
+ let(:user) { FactoryBot.create(:user) }
let(:case_log) { FactoryBot.create(:case_log, :in_progress) }
let(:id) { case_log.id }
let(:question_answers) do
@@ -13,7 +14,10 @@ RSpec.describe "Form Navigation" do
end
before do
- allow_any_instance_of(CaseLogsController).to receive(:authenticate_user!).and_return(true)
+ visit("/case_logs")
+ fill_in("user_email", with: user.email)
+ fill_in("user_password", with: user.password)
+ click_button("Sign in")
end
describe "Create new log" do
diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb
index 0ffb5cc9c..389795dfc 100644
--- a/spec/models/case_log_spec.rb
+++ b/spec/models/case_log_spec.rb
@@ -1,32 +1,89 @@
require "rails_helper"
RSpec.describe Form, type: :model do
+ let(:owning_organisation) { FactoryBot.create(:organisation) }
+ let(:managing_organisation) { owning_organisation }
+
describe "#new" do
it "validates age is a number" do
- expect { CaseLog.create!(age1: "random") }.to raise_error(ActiveRecord::RecordInvalid)
- expect { CaseLog.create!(age3: "random") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age1: "random",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age3: "random",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validates age is under 120" do
- expect { CaseLog.create!(age1: 121) }.to raise_error(ActiveRecord::RecordInvalid)
- expect { CaseLog.create!(age3: 121) }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age1: 121,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age3: 121,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validates age is over 0" do
- expect { CaseLog.create!(age1: 0) }.to raise_error(ActiveRecord::RecordInvalid)
- expect { CaseLog.create!(age3: 0) }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age1: 0,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age3: 0,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validates number of relets is a number" do
- expect { CaseLog.create!(offered: "random") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ offered: "random",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validates number of relets is under 20" do
- expect { CaseLog.create!(offered: 21) }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ offered: 21,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validates number of relets is over 0" do
- expect { CaseLog.create!(offered: 0) }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ offered: 0,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
context "reasonable preference is yes" do
@@ -37,7 +94,9 @@ RSpec.describe Form, type: :model do
rp_insan_unsat: nil,
rp_medwel: nil,
rp_hardship: nil,
- rp_dontknow: nil)
+ rp_dontknow: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -46,6 +105,8 @@ RSpec.describe Form, type: :model do
CaseLog.create!(
homeless: "No",
reasonpref: "Yes",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -54,7 +115,12 @@ RSpec.describe Form, type: :model do
context "reasonable preference is no" do
it "validates no reason is needed" do
expect {
- CaseLog.create!(reasonpref: "No", rp_homeless: "No")
+ CaseLog.create!(
+ reasonpref: "No",
+ rp_homeless: "No",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
}.not_to raise_error
end
@@ -63,6 +129,8 @@ RSpec.describe Form, type: :model do
CaseLog.create!(
reasonpref: "No",
rp_medwel: "Yes",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -72,7 +140,9 @@ RSpec.describe Form, type: :model do
it "Reason for leaving must be don't know if reason for leaving settled home (Q9a) is don't know." do
expect {
CaseLog.create!(reason: "Do not know",
- underoccupation_benefitcap: "Yes - benefit cap")
+ underoccupation_benefitcap: "Yes - benefit cap",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
end
@@ -80,14 +150,18 @@ RSpec.describe Form, type: :model do
it "must be provided if main reason for leaving last settled home was given as other" do
expect {
CaseLog.create!(reason: "Other",
- other_reason_for_leaving_last_settled_home: nil)
+ other_reason_for_leaving_last_settled_home: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "must not be provided if the main reason for leaving settled home is not other" do
expect {
CaseLog.create!(reason: "Repossession",
- other_reason_for_leaving_last_settled_home: "the other reason provided")
+ other_reason_for_leaving_last_settled_home: "the other reason provided",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
end
@@ -96,14 +170,18 @@ RSpec.describe Form, type: :model do
it "must be answered if tenant was a regular or reserve in armed forces" do
expect {
CaseLog.create!(armedforces: "A current or former regular in the UK Armed Forces (exc. National Service)",
- reservist: nil)
+ reservist: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "must be answered if tenant was not a regular or reserve in armed forces" do
expect {
CaseLog.create!(armedforces: "No",
- reservist: "Yes")
+ reservist: "Yes",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
end
@@ -113,7 +191,9 @@ RSpec.describe Form, type: :model do
expect {
CaseLog.create!(preg_occ: "Yes",
sex1: "Male",
- age1: 20)
+ age1: 20,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -121,7 +201,9 @@ RSpec.describe Form, type: :model do
expect {
CaseLog.create!(preg_occ: "Yes",
sex1: "Female",
- age1: 51)
+ age1: 51,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -129,7 +211,9 @@ RSpec.describe Form, type: :model do
expect {
CaseLog.create!(preg_occ: "Prefer not to say",
sex1: "Male",
- age1: 20)
+ age1: 20,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -137,7 +221,9 @@ RSpec.describe Form, type: :model do
expect {
CaseLog.create!(preg_occ: "Yes",
sex1: "Female",
- age1: 20)
+ age1: 20,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.not_to raise_error
end
@@ -146,7 +232,9 @@ RSpec.describe Form, type: :model do
CaseLog.create!(preg_occ: "Yes",
sex1: "Male", age1: 99,
sex2: "Female",
- age2: 20)
+ age2: 20,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.not_to raise_error
end
end
@@ -155,7 +243,9 @@ RSpec.describe Form, type: :model do
it "you must have more than zero bedrooms" do
expect {
CaseLog.create!(unittype_gn: "Shared house",
- beds: 0)
+ beds: 0,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -163,7 +253,9 @@ RSpec.describe Form, type: :model do
expect {
CaseLog.create!(unittype_gn: "Shared bungalow",
beds: 8,
- other_hhmemb: 1)
+ other_hhmemb: 1,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -171,21 +263,27 @@ RSpec.describe Form, type: :model do
expect {
CaseLog.create!(unittype_gn: "Shared bungalow",
beds: 4,
- other_hhmemb: 0)
+ other_hhmemb: 0,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "A bedsit must only have one room" do
expect {
CaseLog.create!(unittype_gn: "Bed-sit",
- beds: 2)
+ beds: 2,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "A bedsit must only have one room" do
expect {
CaseLog.create!(unittype_gn: "Bed-sit",
- beds: 0)
+ beds: 0,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
end
@@ -194,14 +292,18 @@ RSpec.describe Form, type: :model do
it "must be anwered if answered yes to outstanding rent or charges" do
expect {
CaseLog.create!(hbrentshortfall: "Yes",
- tshortfall: nil)
+ tshortfall: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "must be not be anwered if answered no to outstanding rent or charges" do
expect {
CaseLog.create!(hbrentshortfall: "No",
- tshortfall: 99)
+ tshortfall: 99,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
end
@@ -209,19 +311,35 @@ RSpec.describe Form, type: :model do
context "tenant’s income is from Universal Credit, state pensions or benefits" do
it "Cannot be All if person 1 works full time" do
expect {
- CaseLog.create!(benefits: "All", ecstat1: "Full-time - 30 hours or more")
+ CaseLog.create!(
+ benefits: "All",
+ ecstat1: "Full-time - 30 hours or more",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "Cannot be All if person 1 works part time" do
expect {
- CaseLog.create!(benefits: "All", ecstat1: "Part-time - Less than 30 hours")
+ CaseLog.create!(
+ benefits: "All",
+ ecstat1: "Part-time - Less than 30 hours",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "Cannot be 1 All if any of persons 2-4 are person 1's partner and work part or full time" do
expect {
- CaseLog.create!(benefits: "All", relat2: "Partner", ecstat2: "Part-time - Less than 30 hours")
+ CaseLog.create!(
+ benefits: "All",
+ relat2: "Partner",
+ ecstat2: "Part-time - Less than 30 hours",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
}.to raise_error(ActiveRecord::RecordInvalid)
end
end
@@ -230,46 +348,62 @@ RSpec.describe Form, type: :model do
it "Must not be completed if Type of main tenancy is not responded with either Secure or Assured shorthold " do
expect {
CaseLog.create!(tenancy: "Other",
- tenancylength: 10)
+ tenancylength: 10,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "Must be completed and between 2 and 99 if type of tenancy is Assured shorthold" do
expect {
CaseLog.create!(tenancy: "Assured Shorthold",
- tenancylength: 1)
+ tenancylength: 1,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
expect {
CaseLog.create!(tenancy: "Assured Shorthold",
- tenancylength: nil)
+ tenancylength: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
expect {
CaseLog.create!(tenancy: "Assured Shorthold",
- tenancylength: 2)
+ tenancylength: 2,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.not_to raise_error
end
it "Must be empty or between 2 and 99 if type of tenancy is Secure" do
expect {
CaseLog.create!(tenancy: "Secure (including flexible)",
- tenancylength: 1)
+ tenancylength: 1,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
expect {
CaseLog.create!(tenancy: "Secure (including flexible)",
- tenancylength: 100)
+ tenancylength: 100,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
expect {
CaseLog.create!(tenancy: "Secure (including flexible)",
- tenancylength: nil)
+ tenancylength: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.not_to raise_error
expect {
CaseLog.create!(tenancy: "Secure (including flexible)",
- tenancylength: 2)
+ tenancylength: 2,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.not_to raise_error
end
end
@@ -278,14 +412,18 @@ RSpec.describe Form, type: :model do
it "must be answered if ever served in the forces as a regular" do
expect {
CaseLog.create!(armedforces: "A current or former regular in the UK Armed Forces (exc. National Service)",
- leftreg: nil)
+ leftreg: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "must not be answered if not ever served as a regular" do
expect {
CaseLog.create!(armedforces: "No",
- leftreg: "Yes")
+ leftreg: "Yes",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -294,42 +432,103 @@ RSpec.describe Form, type: :model do
expect do
CaseLog.create!(armedforces: "A current or former regular in the UK Armed Forces (exc. National Service)",
leftreg: "Yes",
- reservist: "Yes")
+ reservist: "Yes",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
end
end
end
context "household_member_validations" do
it "validate that persons aged under 16 must have relationship Child" do
- expect { CaseLog.create!(age2: 14, relat2: "Partner") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age2: 14,
+ relat2: "Partner",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validate that persons aged over 70 must be retired" do
- expect { CaseLog.create!(age2: 71, ecstat2: "Full-time - 30 hours or more") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age2: 71,
+ ecstat2: "Full-time - 30 hours or more",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validate that a male, retired persons must be over 65" do
- expect { CaseLog.create!(age2: 64, sex2: "Male", ecstat2: "Retired") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age2: 64,
+ sex2: "Male",
+ ecstat2: "Retired",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validate that a female, retired persons must be over 60" do
- expect { CaseLog.create!(age2: 59, sex2: "Female", ecstat2: "Retired") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age2: 59,
+ sex2: "Female",
+ ecstat2: "Retired",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validate that persons aged under 16 must be a child (economically speaking)" do
- expect { CaseLog.create!(age2: 15, ecstat2: "Full-time - 30 hours or more") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age2: 15,
+ ecstat2: "Full-time - 30 hours or more",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validate that persons aged between 16 and 19 that are a child must be a full time student or economic status refused" do
- expect { CaseLog.create!(age2: 17, relat2: "Child - includes young adult and grown-up", ecstat2: "Full-time - 30 hours or more") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age2: 17,
+ relat2: "Child - includes young adult and grown-up",
+ ecstat2: "Full-time - 30 hours or more",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validate that persons aged under 16 must be a child relationship" do
- expect { CaseLog.create!(age2: 15, relat2: "Partner") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ age2: 15,
+ relat2: "Partner",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validate that no more than 1 partner relationship exists" do
- expect { CaseLog.create!(relat2: "Partner", relat3: "Partner") }.to raise_error(ActiveRecord::RecordInvalid)
+ expect {
+ CaseLog.create!(
+ relat2: "Partner",
+ relat3: "Partner",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
+ )
+ }.to raise_error(ActiveRecord::RecordInvalid)
end
end
@@ -337,24 +536,32 @@ RSpec.describe Form, type: :model do
it "must be provided if tenancy type was given as other" do
expect {
CaseLog.create!(tenancy: "Other",
- tenancyother: nil)
+ tenancyother: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
expect {
CaseLog.create!(tenancy: "Other",
- tenancyother: "type")
+ tenancyother: "type",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.not_to raise_error
end
it "must not be provided if tenancy type is not other" do
expect {
CaseLog.create!(tenancy: "Secure (including flexible)",
- tenancyother: "the other reason provided")
+ tenancyother: "the other reason provided",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.to raise_error(ActiveRecord::RecordInvalid)
expect {
CaseLog.create!(tenancy: "Secure (including flexible)",
- tenancyother: nil)
+ tenancyother: nil,
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation)
}.not_to raise_error
end
end
@@ -366,6 +573,8 @@ RSpec.describe Form, type: :model do
ecstat1: "Full-time - 30 hours or more",
earnings: 5000,
incfreq: "Weekly",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
)
}.to raise_error(ActiveRecord::RecordInvalid)
end
@@ -376,6 +585,8 @@ RSpec.describe Form, type: :model do
ecstat1: "Full-time - 30 hours or more",
earnings: 1,
incfreq: "Weekly",
+ owning_organisation: owning_organisation,
+ managing_organisation: managing_organisation,
)
}.to raise_error(ActiveRecord::RecordInvalid)
end
diff --git a/spec/requests/bulk_upload_controller_spec.rb b/spec/requests/bulk_upload_controller_spec.rb
index 6b9ab16e0..b83288ad3 100644
--- a/spec/requests/bulk_upload_controller_spec.rb
+++ b/spec/requests/bulk_upload_controller_spec.rb
@@ -2,6 +2,10 @@ require "rails_helper"
RSpec.describe BulkUploadController, type: :request do
let(:url) { "/case_logs/bulk_upload" }
+ let(:organisation) { FactoryBot.create(:organisation) }
+ before do
+ allow(Organisation).to receive(:find).with(107_242).and_return(organisation)
+ end
describe "GET #show" do
before do
diff --git a/spec/requests/case_log_controller_spec.rb b/spec/requests/case_log_controller_spec.rb
index 06427a4e8..f8956f5b0 100644
--- a/spec/requests/case_log_controller_spec.rb
+++ b/spec/requests/case_log_controller_spec.rb
@@ -1,6 +1,8 @@
require "rails_helper"
RSpec.describe CaseLogsController, type: :request do
+ let(:owning_organisation) { FactoryBot.create(:organisation) }
+ let(:managing_organisation) { owning_organisation }
let(:api_username) { "test_user" }
let(:api_password) { "test_password" }
let(:basic_credentials) do
@@ -32,6 +34,8 @@ RSpec.describe CaseLogsController, type: :request do
let(:params) do
{
+ "owning_organisation_id": owning_organisation.id,
+ "managing_organisation_id": managing_organisation.id,
"tenant_code": tenant_code,
"age1": age1,
"property_postcode": property_postcode,
@@ -78,8 +82,17 @@ RSpec.describe CaseLogsController, type: :request do
end
context "complete case log submission" do
+ let(:org_params) do
+ {
+ "case_log" => {
+ "owning_organisation_id" => owning_organisation.id,
+ "managing_organisation_id" => managing_organisation.id,
+ },
+ }
+ end
+ let(:case_log_params) { JSON.parse(File.open("spec/fixtures/complete_case_log.json").read) }
let(:params) do
- JSON.parse(File.open("spec/fixtures/complete_case_log.json").read)
+ case_log_params.merge(org_params) { |_k, a_val, b_val| a_val.merge(b_val) }
end
it "marks the record as completed" do