Skip to content

Commit 16f79f1

Browse files
authored
Merge pull request #3762 from nhsuk/update-vaccine-methods
Ensure `StatusUpdater` sets `vaccine_methods`
2 parents 42822f7 + 14c5706 commit 16f79f1

4 files changed

Lines changed: 50 additions & 9 deletions

File tree

app/lib/status_updater.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def update_consent_statuses!
4343
batch,
4444
on_duplicate_key_update: {
4545
conflict_target: [:id],
46-
columns: %i[status]
46+
columns: %i[status vaccine_methods]
4747
}
4848
)
4949
end

app/models/concerns/has_vaccine_methods.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,12 @@ module HasVaccineMethods
1010

1111
validates :vaccine_methods, subset: %w[injection nasal]
1212
end
13+
14+
def vaccine_method_injection? = vaccine_methods.include?("injection")
15+
16+
def vaccine_method_nasal? = vaccine_methods.include?("nasal")
17+
18+
def vaccine_method_injection_and_nasal?
19+
vaccine_method_injection? && vaccine_method_nasal?
20+
end
1321
end

app/models/consent_form_programme.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,6 @@ class ConsentFormProgramme < ApplicationRecord
3030

3131
enum :response, { given: 0, refused: 1 }, prefix: true
3232

33-
def vaccine_method_injection? = vaccine_methods.include?("injection")
34-
35-
def vaccine_method_nasal? = vaccine_methods.include?("nasal")
36-
37-
def vaccine_method_injection_and_nasal?
38-
vaccine_method_injection? && vaccine_method_nasal?
39-
end
40-
4133
def vaccines
4234
Vaccine.active.where(programme_id:, method: vaccine_methods)
4335
end

spec/lib/status_updater_spec.rb

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,47 @@
3030
end
3131
end
3232

33+
context "with an Flu session and eligible patient" do
34+
let(:programmes) { [create(:programme, :flu)] }
35+
let(:patient) { create(:patient, year_group: 8) }
36+
37+
it "creates a consent status" do
38+
expect { call }.to change(patient.consent_statuses, :count).by(1)
39+
expect(patient.consent_statuses.first).to be_no_response
40+
end
41+
42+
context "when consent is given" do
43+
before { create(:consent, patient:, programme: programmes.first) }
44+
45+
it "sets the vaccine methods" do
46+
expect { call }.to change(patient.consent_statuses, :count).by(1)
47+
expect(patient.consent_statuses.first).to be_vaccine_method_injection
48+
end
49+
end
50+
51+
it "creates a registration status" do
52+
expect { call }.to change {
53+
patient_session.reload.registration_status
54+
}.from(nil)
55+
expect(patient_session.registration_status).to be_unknown
56+
end
57+
58+
it "creates a triage status" do
59+
expect { call }.to change(patient.triage_statuses, :count).by(1)
60+
expect(patient.triage_statuses.first).to be_not_required
61+
end
62+
63+
it "creates a patient vaccination status" do
64+
expect { call }.to change(patient.vaccination_statuses, :count).by(1)
65+
expect(patient.vaccination_statuses.first).to be_none_yet
66+
end
67+
68+
it "creates a patient session session vaccination status" do
69+
expect { call }.to change(patient_session.session_statuses, :count).by(1)
70+
expect(patient_session.session_statuses.first).to be_none_yet
71+
end
72+
end
73+
3374
context "with an HPV session and eligible patient" do
3475
let(:programmes) { [create(:programme, :hpv)] }
3576
let(:patient) { create(:patient, year_group: 8) }

0 commit comments

Comments
 (0)