From fa23a47bc2af1e8271f9d33234ba2d2f30e26945 Mon Sep 17 00:00:00 2001 From: Sam Williams Date: Mon, 8 Jan 2024 08:20:28 -0500 Subject: [PATCH] 5015-draft-support-nov // response to CR --- app/decorators/case_contact_decorator.rb | 24 +++++++++++++++--------- app/models/case_contact.rb | 9 +++++++++ spec/requests/case_contacts/form_spec.rb | 2 +- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/decorators/case_contact_decorator.rb b/app/decorators/case_contact_decorator.rb index 704a6d3589..424c759beb 100644 --- a/app/decorators/case_contact_decorator.rb +++ b/app/decorators/case_contact_decorator.rb @@ -11,14 +11,7 @@ def duration_minutes elsif minutes <= 60 "#{minutes} minutes" else - formatted_hour_value = minutes / 60 - formatted_minutes_value = minutes.remainder(60) - - if formatted_minutes_value.zero? - "#{formatted_hour_value} #{"hour".pluralize(formatted_hour_value)}" - else - "#{formatted_hour_value} #{"hour".pluralize(formatted_hour_value)} #{formatted_minutes_value} minutes" - end + formatted_hours_and_minutes(minutes) end end @@ -115,7 +108,7 @@ def additional_expenses_count end def address_of_volunteer - if volunteer_address && !volunteer_address.empty? + if volunteer_address&.present? volunteer_address elsif volunteer volunteer.address&.content @@ -139,4 +132,17 @@ def form_page_notes def form_updated_message "Case contact created at #{I18n.l(created_at, format: :time_on_date)}, was successfully updated." end + + private + + def formatted_hours_and_minutes(minutes) + formatted_hour_value = minutes / 60 + formatted_minutes_value = minutes.remainder(60) + + if formatted_minutes_value.zero? + "#{formatted_hour_value} #{"hour".pluralize(formatted_hour_value)}" + else + "#{formatted_hour_value} #{"hour".pluralize(formatted_hour_value)} #{formatted_minutes_value} minutes" + end + end end diff --git a/app/models/case_contact.rb b/app/models/case_contact.rb index 3953dcc000..eb50bdaa6f 100644 --- a/app/models/case_contact.rb +++ b/app/models/case_contact.rb @@ -12,6 +12,7 @@ class CaseContact < ApplicationRecord validate :occurred_at_not_in_future validate :reimbursement_only_when_miles_driven, if: :active_or_expenses? validate :volunteer_address_when_reimbursement_wanted, if: :active_or_expenses? + validate :volunteer_address_is_valid, if: :active_or_expenses? belongs_to :creator, class_name: "User" has_one :supervisor_volunteer, -> { @@ -199,6 +200,14 @@ def volunteer_address_when_reimbursement_wanted end end + def volunteer_address_is_valid + if volunteer_address&.present? + if Address.new(user_id: creator.id, content: volunteer_address).invalid? + errors.add(:base, "The volunteer's address is not valid.") + end + end + end + def contact_made_chosen errors.add(:base, "Must enter whether the contact was made.") if contact_made.nil? !contact_made.nil? diff --git a/spec/requests/case_contacts/form_spec.rb b/spec/requests/case_contacts/form_spec.rb index 7c11245f6c..84fffa0e87 100644 --- a/spec/requests/case_contacts/form_spec.rb +++ b/spec/requests/case_contacts/form_spec.rb @@ -4,7 +4,7 @@ let(:organization) { build(:casa_org) } let(:admin) { create(:casa_admin, casa_org: organization) } let(:supervisor) { create(:supervisor, casa_org: organization) } - let(:volunteer) { create(:volunteer, casa_org: organization, supervisor: supervisor) } + let!(:volunteer) { create(:volunteer, casa_org: organization, supervisor: supervisor) } let(:creator) { admin } let!(:casa_case) { create(:casa_case, casa_org: organization) }