Browse Source

Merge pull request #50 from communitiesuk/CLCD-495/times-prev-offered

Clcd 495/times prev offered
pull/51/head
Matthew J. Phelan 3 years ago committed by GitHub
parent
commit
4e953cfbc2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      app/models/case_log.rb
  2. 5
      db/migrate/20211015090040_update_property_number_of_times_relet_type.rb
  3. 4
      db/schema.rb
  4. 12
      spec/models/case_log_spec.rb
  5. 5
      spec/requests/case_log_controller_spec.rb

12
app/models/case_log.rb

@ -1,7 +1,7 @@
class CaseLogValidator < ActiveModel::Validator class CaseLogValidator < ActiveModel::Validator
# Methods need to be named 'validate_' followed by field name # Methods to be used on save and continue need to be named 'validate_'
# this is how the metaprogramming of the method name being # followed by field name this is how the metaprogramming of the method
# call in the validate method works. # name being call in the validate method works.
def validate_tenant_age(record) def validate_tenant_age(record)
if record.tenant_age && !/^[1-9][0-9]?$|^120$/.match?(record.tenant_age.to_s) if record.tenant_age && !/^[1-9][0-9]?$|^120$/.match?(record.tenant_age.to_s)
@ -9,6 +9,12 @@ class CaseLogValidator < ActiveModel::Validator
end end
end end
def validate_property_number_of_times_relet(record)
if record.property_number_of_times_relet && !/^[1-9]$|^0[1-9]$|^1[0-9]$|^20$/.match?(record.property_number_of_times_relet.to_s)
record.errors.add :property_number_of_times_relet, "must be between 0 and 20"
end
end
def validate(record) def validate(record)
# If we've come from the form UI we only want to validate the specific fields # If we've come from the form UI we only want to validate the specific fields
# that have just been submitted. If we're submitting a log via API or Bulk Upload # that have just been submitted. If we're submitting a log via API or Bulk Upload

5
db/migrate/20211015090040_update_property_number_of_times_relet_type.rb

@ -0,0 +1,5 @@
class UpdatePropertyNumberOfTimesReletType < ActiveRecord::Migration[6.1]
def change
change_column :case_logs, :property_number_of_times_relet, :integer
end
end

4
db/schema.rb

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2021_10_14_154616) do ActiveRecord::Schema.define(version: 2021_10_15_090040) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -84,7 +84,6 @@ ActiveRecord::Schema.define(version: 2021_10_14_154616) do
t.string "property_void_date" t.string "property_void_date"
t.string "property_major_repairs" t.string "property_major_repairs"
t.string "property_major_repairs_date" t.string "property_major_repairs_date"
t.string "property_number_of_times_relet"
t.string "property_wheelchair_accessible" t.string "property_wheelchair_accessible"
t.string "net_income" t.string "net_income"
t.string "net_income_frequency" t.string "net_income_frequency"
@ -131,6 +130,7 @@ ActiveRecord::Schema.define(version: 2021_10_14_154616) do
t.boolean "reasonable_preference_reason_medical_grounds" t.boolean "reasonable_preference_reason_medical_grounds"
t.boolean "reasonable_preference_reason_avoid_hardship" t.boolean "reasonable_preference_reason_avoid_hardship"
t.boolean "reasonable_preference_reason_do_not_know" t.boolean "reasonable_preference_reason_do_not_know"
t.integer "property_number_of_times_relet"
t.datetime "discarded_at" t.datetime "discarded_at"
t.index ["discarded_at"], name: "index_case_logs_on_discarded_at" t.index ["discarded_at"], name: "index_case_logs_on_discarded_at"
end end

12
spec/models/case_log_spec.rb

@ -13,6 +13,18 @@ RSpec.describe Form, type: :model do
it "validates age is over 0" do it "validates age is over 0" do
expect { CaseLog.create!(tenant_age: 0) }.to raise_error(ActiveRecord::RecordInvalid) expect { CaseLog.create!(tenant_age: 0) }.to raise_error(ActiveRecord::RecordInvalid)
end end
it "validates number of relets is a number" do
expect { CaseLog.create!(property_number_of_times_relet: "random") }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validates number of relets is under 20" do
expect { CaseLog.create!(property_number_of_times_relet: 21) }.to raise_error(ActiveRecord::RecordInvalid)
end
it "validates number of relets is over 0" do
expect { CaseLog.create!(property_number_of_times_relet: 0) }.to raise_error(ActiveRecord::RecordInvalid)
end
end end
describe "status" do describe "status" do

5
spec/requests/case_log_controller_spec.rb

@ -25,6 +25,7 @@ RSpec.describe CaseLogsController, type: :request do
describe "POST #create" do describe "POST #create" do
let(:tenant_code) { "T365" } let(:tenant_code) { "T365" }
let(:tenant_age) { 35 } let(:tenant_age) { 35 }
let(:property_number_of_times_relet) { 12 }
let(:property_postcode) { "SE11 6TY" } let(:property_postcode) { "SE11 6TY" }
let(:in_progress) { "in_progress" } let(:in_progress) { "in_progress" }
let(:completed) { "completed" } let(:completed) { "completed" }
@ -34,6 +35,7 @@ RSpec.describe CaseLogsController, type: :request do
"tenant_code": tenant_code, "tenant_code": tenant_code,
"tenant_age": tenant_age, "tenant_age": tenant_age,
"property_postcode": property_postcode, "property_postcode": property_postcode,
"property_number_of_times_relet": property_number_of_times_relet
} }
end end
@ -59,11 +61,12 @@ RSpec.describe CaseLogsController, type: :request do
context "invalid json params" do context "invalid json params" do
let(:tenant_age) { 2000 } let(:tenant_age) { 2000 }
let(:property_number_of_times_relet) { 21 }
it "validates case log parameters" do it "validates case log parameters" do
json_response = JSON.parse(response.body) json_response = JSON.parse(response.body)
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response["errors"]).to eq(["Tenant age must be between 0 and 120"]) expect(json_response["errors"]).to match_array(["Tenant age must be between 0 and 120", "Property number of times relet must be between 0 and 20"])
end end
end end

Loading…
Cancel
Save