Skip to content

Commit

Permalink
Merge pull request #3206 from DFE-Digital/LUPEYALPHA-1043/update-clai…
Browse files Browse the repository at this point in the history
…m-matching

Match across all policies
  • Loading branch information
rjlynch authored Sep 30, 2024
2 parents 30ac038 + 1d48645 commit 580daf0
Show file tree
Hide file tree
Showing 5 changed files with 217 additions and 16 deletions.
4 changes: 2 additions & 2 deletions app/models/policies/early_career_payments.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ module EarlyCareerPayments
POLICY_END_YEAR = AcademicYear.new(2024).freeze

# Used in
# - checking payments with multiple policies: ClaimsPreventingPaymentFinder
# - matching claims with multiple policies: MatchingAttributeFinder
OTHER_CLAIMABLE_POLICIES = [
LevellingUpPremiumPayments,
StudentLoans
StudentLoans,
FurtherEducationPayments
].freeze

ELIGIBILITY_MATCHING_ATTRIBUTES = [["teacher_reference_number"]].freeze
Expand Down
9 changes: 8 additions & 1 deletion app/models/policies/further_education_payments.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,14 @@ module FurtherEducationPayments
include BasePolicy
extend self

OTHER_CLAIMABLE_POLICIES = []
# Used in
# - matching claims with multiple policies: MatchingAttributeFinder
OTHER_CLAIMABLE_POLICIES = [
EarlyCareerPayments,
StudentLoans,
LevellingUpPremiumPayments
]

ELIGIBILITY_MATCHING_ATTRIBUTES = [["teacher_reference_number"]].freeze

# Percentage of claims to QA
Expand Down
4 changes: 2 additions & 2 deletions app/models/policies/levelling_up_premium_payments.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ module LevellingUpPremiumPayments
].freeze

# Used in
# - checking payments with multiple policies: ClaimsPreventingPaymentFinder
# - matching claims with multiple policies: MatchingAttributeFinder
OTHER_CLAIMABLE_POLICIES = [
EarlyCareerPayments,
StudentLoans
StudentLoans,
FurtherEducationPayments
].freeze

ELIGIBILITY_MATCHING_ATTRIBUTES = [["teacher_reference_number"]].freeze
Expand Down
4 changes: 2 additions & 2 deletions app/models/policies/student_loans.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ module StudentLoans
ACADEMIC_YEARS_QUALIFIED_TEACHERS_CAN_CLAIM_FOR = 11

# Used in
# - checking payments with multiple policies: ClaimsPreventingPaymentFinder
# - matching claims with multiple policies: MatchingAttributeFinder
OTHER_CLAIMABLE_POLICIES = [
EarlyCareerPayments,
LevellingUpPremiumPayments
LevellingUpPremiumPayments,
FurtherEducationPayments
]

ELIGIBILITY_MATCHING_ATTRIBUTES = [["teacher_reference_number"]].freeze
Expand Down
212 changes: 203 additions & 9 deletions spec/models/claim/matching_attribute_finder_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -277,31 +277,29 @@
it { is_expected.to eq [other_claim] }
end

describe "matching_claims - blank trn, another field group with same contract type, blank provision_search" do
before do
stub_const("Policies::FurtherEducationPayments::ELIGIBILITY_MATCHING_ATTRIBUTES", [["teacher_reference_number"], ["provision_search", "contract_type"]])
end

describe "matching_claims - blank trn, matching email addresses" do
let(:policy) { Policies::FurtherEducationPayments }

let!(:source_claim) {
eligibility = create(:further_education_payments_eligibility, :eligible, contract_type: "permanent", provision_search: nil)
eligibility = create(:further_education_payments_eligibility, :eligible)
create(
:claim,
:submitted,
policy: policy,
eligibility: eligibility
eligibility: eligibility,
email_address: "[email protected]"
)
}

let!(:other_claim) {
eligibility = create(:further_education_payments_eligibility, :eligible, contract_type: "permanent", provision_search: nil)
eligibility = create(:further_education_payments_eligibility, :eligible)
create(
:claim,
:submitted,
policy: policy,
eligibility: eligibility,
surname: Faker::Name.last_name
surname: Faker::Name.last_name,
email_address: "[email protected]"
)
}

Expand All @@ -310,6 +308,202 @@
it { is_expected.to eq [other_claim] }
end

describe "matching claims across policies" do
subject(:matching_claims) do
Claim::MatchingAttributeFinder.new(source_claim).matching_claims
end

let(:source_claim) do
create(
:claim,
:submitted,
policy: source_policy,
email_address: "[email protected]",
academic_year: AcademicYear.current
)
end

let!(:target_claim) do
create(
:claim,
:submitted,
policy: target_policy,
email_address: "[email protected]",
academic_year: AcademicYear.current
)
end

context "with an ECP claim" do
let(:source_policy) { Policies::EarlyCareerPayments }

context "when compared with ECP" do
let(:target_policy) { Policies::EarlyCareerPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with LUP" do
let(:target_policy) { Policies::LevellingUpPremiumPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with TSLR" do
let(:target_policy) { Policies::StudentLoans }

it { is_expected.to include(target_claim) }
end

context "when compared with FE" do
let(:target_policy) { Policies::FurtherEducationPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with IRP" do
let(:target_policy) { Policies::InternationalRelocationPayments }

it { is_expected.not_to include(target_claim) }
end
end

context "with an LUP claim" do
let(:source_policy) { Policies::LevellingUpPremiumPayments }

context "when compared with ECP" do
let(:target_policy) { Policies::EarlyCareerPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with LUP" do
let(:target_policy) { Policies::LevellingUpPremiumPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with TSLR" do
let(:target_policy) { Policies::StudentLoans }

it { is_expected.to include(target_claim) }
end

context "when compared with FE" do
let(:target_policy) { Policies::FurtherEducationPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with IRP" do
let(:target_policy) { Policies::InternationalRelocationPayments }

it { is_expected.not_to include(target_claim) }
end
end

context "with a TSLR claim" do
let(:source_policy) { Policies::StudentLoans }

context "when compared with ECP" do
let(:target_policy) { Policies::EarlyCareerPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with LUP" do
let(:target_policy) { Policies::LevellingUpPremiumPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with TSLR" do
let(:target_policy) { Policies::StudentLoans }

it { is_expected.to include(target_claim) }
end

context "when compared with FE" do
let(:target_policy) { Policies::FurtherEducationPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with IRP" do
let(:target_policy) { Policies::InternationalRelocationPayments }

it { is_expected.not_to include(target_claim) }
end
end

context "with an FE claim" do
let(:source_policy) { Policies::FurtherEducationPayments }

context "when compared with ECP" do
let(:target_policy) { Policies::EarlyCareerPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with LUP" do
let(:target_policy) { Policies::LevellingUpPremiumPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with TSLR" do
let(:target_policy) { Policies::StudentLoans }

it { is_expected.to include(target_claim) }
end

context "when compared with FE" do
let(:target_policy) { Policies::FurtherEducationPayments }

it { is_expected.to include(target_claim) }
end

context "when compared with IRP" do
let(:target_policy) { Policies::InternationalRelocationPayments }

it { is_expected.not_to include(target_claim) }
end
end

context "with an IRP claim" do
let(:source_policy) { Policies::InternationalRelocationPayments }

context "when compared with ECP" do
let(:target_policy) { Policies::EarlyCareerPayments }

it { is_expected.not_to include(target_claim) }
end

context "when compared with LUP" do
let(:target_policy) { Policies::LevellingUpPremiumPayments }

it { is_expected.not_to include(target_claim) }
end

context "when compared with TSLR" do
let(:target_policy) { Policies::StudentLoans }

it { is_expected.not_to include(target_claim) }
end

context "when compared with FE" do
let(:target_policy) { Policies::FurtherEducationPayments }

it { is_expected.not_to include(target_claim) }
end

context "when compared with IRP" do
let(:target_policy) { Policies::InternationalRelocationPayments }

it { is_expected.to include(target_claim) }
end
end
end

describe "#matching_attributes" do
it "returns the attributes that match" do
source_claim = create(
Expand Down

0 comments on commit 580daf0

Please sign in to comment.