From e598c861ae52412b3a4a35d5275ab48a96640c5b Mon Sep 17 00:00:00 2001 From: Hassan Mir Date: Fri, 22 Nov 2024 11:26:38 +0000 Subject: [PATCH 1/4] Adding trs_match column to ApplicationForms which will hold the current value of dqt_match on the same model --- app/models/application_form.rb | 1 + config/analytics.yml | 1 + ...d_trs_match_column_to_application_forms.rb | 11 +++++++++++ db/schema.rb | 3 ++- docs/diagram.pdf | Bin 69604 -> 69617 bytes spec/factories/application_forms.rb | 1 + spec/models/application_form_spec.rb | 1 + 7 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20241122110920_add_trs_match_column_to_application_forms.rb diff --git a/app/models/application_form.rb b/app/models/application_form.rb index 66d458bb5..5ced863d8 100644 --- a/app/models/application_form.rb +++ b/app/models/application_form.rb @@ -46,6 +46,7 @@ # submitted_at :datetime # teaching_authority_provides_written_statement :boolean default(FALSE), not null # teaching_qualification_part_of_degree :boolean +# trs_match :jsonb # withdrawn_at :datetime # work_history_status :string default("not_started"), not null # working_days_since_submission :integer diff --git a/config/analytics.yml b/config/analytics.yml index 38de10194..e99f76165 100644 --- a/config/analytics.yml +++ b/config/analytics.yml @@ -48,6 +48,7 @@ - teacher_id - teaching_authority_provides_written_statement - teaching_qualification_part_of_degree + - trs_match - updated_at - withdrawn_at - work_history_status diff --git a/db/migrate/20241122110920_add_trs_match_column_to_application_forms.rb b/db/migrate/20241122110920_add_trs_match_column_to_application_forms.rb new file mode 100644 index 000000000..5f1a985c2 --- /dev/null +++ b/db/migrate/20241122110920_add_trs_match_column_to_application_forms.rb @@ -0,0 +1,11 @@ +class AddTRSMatchColumnToApplicationForms < ActiveRecord::Migration[7.2] + def up + add_column :application_forms, :trs_match, :jsonb, default: {} + + ApplicationForm.update_all("trs_match = dqt_match") + end + + def down + remove_column :application_forms, :trs_match + end +end diff --git a/db/schema.rb b/db/schema.rb index cb7b6913f..7af52d778 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.2].define(version: 2024_10_29_152315) do +ActiveRecord::Schema[7.2].define(version: 2024_11_22_110920) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" enable_extension "plpgsql" @@ -98,6 +98,7 @@ t.boolean "qualification_changed_work_history_duration", default: false, null: false t.boolean "teaching_qualification_part_of_degree" t.boolean "subject_limited", default: false, null: false + t.jsonb "trs_match", default: {} t.index ["action_required_by"], name: "index_application_forms_on_action_required_by" t.index ["assessor_id"], name: "index_application_forms_on_assessor_id" t.index ["english_language_provider_id"], name: "index_application_forms_on_english_language_provider_id" diff --git a/docs/diagram.pdf b/docs/diagram.pdf index c150c9d90d475cdd42dba502c11bf293016cc7d3..b6f8927c264baf747791b881c1cb308450ac5aa3 100644 GIT binary patch delta 22167 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

te^lqy^3F_LA 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 C;pnyi delta 22122 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 Date: Fri, 22 Nov 2024 11:34:10 +0000 Subject: [PATCH 2/4] Updating updates of dqt_match column to be trs_match instead --- app/jobs/update_trs_match_job.rb | 2 +- .../assessor_interface/application_forms_show_view_object.rb | 4 ++-- ...0241122110920_add_trs_match_column_to_application_forms.rb | 2 ++ spec/jobs/update_trs_match_job_spec.rb | 4 ++-- .../duplicate_applicant_application_form_spec.rb | 4 ++-- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/jobs/update_trs_match_job.rb b/app/jobs/update_trs_match_job.rb index e73d6f81e..ef0145943 100644 --- a/app/jobs/update_trs_match_job.rb +++ b/app/jobs/update_trs_match_job.rb @@ -15,7 +15,7 @@ def perform(application_form) TRS::Client::FindTeachers.call(application_form:, reverse_name: true) end - application_form.update!(dqt_match: { teachers: }) + application_form.update!(trs_match: { teachers: }) UpdateTRSMatchJob.set(wait: 24.hours).perform_later(application_form) end diff --git a/app/view_objects/assessor_interface/application_forms_show_view_object.rb b/app/view_objects/assessor_interface/application_forms_show_view_object.rb index 7f004da30..8fc780d94 100644 --- a/app/view_objects/assessor_interface/application_forms_show_view_object.rb +++ b/app/view_objects/assessor_interface/application_forms_show_view_object.rb @@ -15,7 +15,7 @@ def application_form end def duplicate_matches - dqt_match.fetch("teachers", dqt_match.present? ? [dqt_match] : []) + trs_match.fetch("teachers", trs_match.present? ? [trs_match] : []) end def task_list_sections @@ -85,7 +85,7 @@ def management_tasks attr_reader :params, :current_staff delegate :assessment, - :dqt_match, + :trs_match, :teacher, :teaching_authority_provides_written_statement, :work_histories, diff --git a/db/migrate/20241122110920_add_trs_match_column_to_application_forms.rb b/db/migrate/20241122110920_add_trs_match_column_to_application_forms.rb index 5f1a985c2..1a292917a 100644 --- a/db/migrate/20241122110920_add_trs_match_column_to_application_forms.rb +++ b/db/migrate/20241122110920_add_trs_match_column_to_application_forms.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddTRSMatchColumnToApplicationForms < ActiveRecord::Migration[7.2] def up add_column :application_forms, :trs_match, :jsonb, default: {} diff --git a/spec/jobs/update_trs_match_job_spec.rb b/spec/jobs/update_trs_match_job_spec.rb index 44f05fab9..ac872f0d1 100644 --- a/spec/jobs/update_trs_match_job_spec.rb +++ b/spec/jobs/update_trs_match_job_spec.rb @@ -26,7 +26,7 @@ end it "does not update the application form if no results are returned" do - expect { perform }.to change(application_form, :dqt_match).to( + expect { perform }.to change(application_form, :trs_match).to( { "teachers" => [] }, ) end @@ -51,7 +51,7 @@ application_form:, ).and_return(results) - expect { perform }.to change(application_form, :dqt_match).to( + expect { perform }.to change(application_form, :trs_match).to( { "teachers" => results }, ) end diff --git a/spec/system/assessor_interface/duplicate_applicant_application_form_spec.rb b/spec/system/assessor_interface/duplicate_applicant_application_form_spec.rb index 409d4f5a5..f8b4ff709 100644 --- a/spec/system/assessor_interface/duplicate_applicant_application_form_spec.rb +++ b/spec/system/assessor_interface/duplicate_applicant_application_form_spec.rb @@ -38,7 +38,7 @@ def and_i_see_the_warning_of_an_existing_record_in_dqt end def and_the_applicant_matches_a_record_in_dqt - application_form.update!(dqt_match:) + application_form.update!(trs_match:) end def application_form @@ -64,7 +64,7 @@ def application_form delegate :reference, to: :application_form - def dqt_match + def trs_match { "first_name" => "John", "last_name" => "Smith", From b401038998c22e6211c1b9f288b61d8070d3eb0f Mon Sep 17 00:00:00 2001 From: Hassan Mir Date: Thu, 28 Nov 2024 21:26:08 +0000 Subject: [PATCH 3/4] Adding trs_match column to PII data --- config/analytics_hidden_pii.yml | 1 + db/scripts/sanitise.sql | 1 + 2 files changed, 2 insertions(+) diff --git a/config/analytics_hidden_pii.yml b/config/analytics_hidden_pii.yml index 5aa229ed6..a50bc43b4 100644 --- a/config/analytics_hidden_pii.yml +++ b/config/analytics_hidden_pii.yml @@ -7,6 +7,7 @@ - given_names - registration_number - dqt_match + - trs_match :assessments: - recommendation_assessor_note :further_information_request_items: diff --git a/db/scripts/sanitise.sql b/db/scripts/sanitise.sql index 9cdda1f14..0e60b5fa9 100644 --- a/db/scripts/sanitise.sql +++ b/db/scripts/sanitise.sql @@ -14,6 +14,7 @@ SET alternative_given_names = '', alternative_family_name = '', dqt_match = '{}', + trs_match = '{}', registration_number = ''; -- AssessmentSectionFailureReason From 02b3e507b66ef7679efbe318486b50dc5fbcbc73 Mon Sep 17 00:00:00 2001 From: Hassan Mir Date: Mon, 2 Dec 2024 11:01:03 +0000 Subject: [PATCH 4/4] Fix flaky test --- spec/forms/support_interface/country_form_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/forms/support_interface/country_form_spec.rb b/spec/forms/support_interface/country_form_spec.rb index ba2df1f68..9940075f7 100644 --- a/spec/forms/support_interface/country_form_spec.rb +++ b/spec/forms/support_interface/country_form_spec.rb @@ -251,7 +251,7 @@ it "sets has_regions to true" do expect(subject).to have_attributes( has_regions: true, - region_names: "Madrid\nBarcelona", + region_names: country.reload.regions.map(&:name).join("\n"), ) end end