TEST_F(ContributionLadder_Ingen_CONTEXT_KI_OSV_25_50, Bidragsstigningsform_Ingen_PrivateTaxedMK_Gage_NEGATIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV ta.setValue(kAftaleIkraftdato, 20150701); // ta.setValue(kUnionAgreementRelationship, kOUTSIDE); ta.setValue(kBidragEjFoesteTrin_MK, false); ta.setValue(kBidragsstigningsform, "Ingen"); ta.setValue(kHospitalsdaekning_MK, false); ta.setValue(kHospitalsdaekningFrivillig_MK, false); ta.setValue(kTAEReguleringskode, "Gage"); ta.setValue(kDoedReguleringskode, "Gage"); ta.setValue(kPrivate_Taxed_MK, true); ta.setValue(kPrivate_Taxed_Reguleringskode, "Gage"); ta.setValue(kPrivate_Taxed_SA_Administrated_MK, true); ta.setValue(kPrivate_Premium_pct, 3); ta.setValue(kPrivate_Premium_BL, 40000); auto r = re.validate(ta, false); EXPECT_FALSE(r.isAllOk()); EXPECT_TRUE(r.hasMessages(kPrivate_Premium_pct, kValueUnderLimit)); EXPECT_TRUE(r.hasMessages(kPrivate_Premium_BL, kProductElementNotAllowed)); cout << r; ta.setValue(kPrivate_Premium_pct, 5); ta.remove(kPrivate_Premium_BL); r = re.validate(ta, true); EXPECT_FALSE(r.hasMessages(kPrivate_Premium_pct, kValueUnderLimit)); EXPECT_FALSE(r.hasMessages(kPrivate_Premium_BL, kProductElementNotAllowed)); cout << r; }
TEST_F(Invaliditetsdaekning_KI_OSV_25_49, Invaliditetsdaekning_SoliMax_TAEDaekningstype) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040" }; ta.setValue(kTAESoliMax, "Tegningsmaks"); auto r = re.validate(ta, false); // if (!r.isAllOk()) cout << r; EXPECT_TRUE(r.isAllOk()); // ta.setValue(kTAESoliMax, "Obligatorisk maks"); r = re.validate(ta, false); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEDaekningstype, kProductElementRequired)); ta.setValue(kTAEDaekningstype, re.getDefaultValue(kTAEDaekningstype)->stringValue()); r = re.validate(ta, false); cout << r; EXPECT_TRUE(r.isAllOk()); ta.setValue(kTAESoliMax, "Tegningsmaks"); r = re.validate(ta, false); cout << r; EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEDaekningstype, kProductElementNotAllowed)); r = re.validate(ta, false); cout << r; ta.remove(kTAEDaekningstype); ta.setValue(kTAESoliMax, "Ingen"); r = re.validate(ta, false); cout << r; EXPECT_EQ(1, r.getValidationResults().size()); EXPECT_TRUE(r.hasMessages(kTAEDaekningstype, kProductElementRequired)); }
TEST_F(Incremental_TA_CONTEXT_KI_OSV_25_50, Incremental_TA_POSITIVE) { RuleEngine::_printDebugAtValidation = true; TA ta { "15124040"}; // KonceptOid 4 - OSV // ta.setValue(kUnionAgreementRelationship, kOUTSIDE); bool full {false}; auto r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; //************************************************************ // GENERAL PAGE //************************************************************ // // // ***** Date // // need to calculate Ikraftdato minus rc_Ikraftdato_min number of months and see if todays date is before that. // same with rc_Ikraftdato_max ta.setValue(kIkraftDato, (long) 11); // r = re.validate(ta, full); // EXPECT_FALSE(r.isAllOk()); // if (r.isAllOk()) cout << r; // ASSERT_EQ(1, r.getValidationResults(kIkraftDato).size()); // EXPECT_EQ(sbx::ValidationCode::kProductElementRequired, r.getValidationResults(kIkraftDato).at(0).getValidationCode()); // // ***** Indmeldelseskriterier, age, anciennitet // ta.setValue(kIndmeldelsesAlder, (long) 5); r = re.validate(ta, full); EXPECT_FALSE(r.isAllOk()); if (!r.isAllOk()) cout << r; ASSERT_EQ(1, r.getValidationResults(kIndmeldelsesAlder).size()); EXPECT_EQ(sbx::ValidationCode::kValueUnderLimit, r.getValidationResults(kIndmeldelsesAlder).at(0).getValidationCode()); ta.setValue(kIndmeldelsesAlder, (long) 31); r = re.validate(ta, full); EXPECT_FALSE(r.isAllOk()); if (r.isAllOk()) cout << r; ASSERT_EQ(1, r.getValidationResults(kIndmeldelsesAlder).size()); EXPECT_EQ(sbx::ValidationCode::kValueOverLimit, r.getValidationResults(kIndmeldelsesAlder).at(0).getValidationCode()); ta.setValue(kIndmeldelsesAlder, (long) 20); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; ta.setValue(kAnciennitet, (long) 30); r = re.validate(ta, full); ASSERT_EQ(1, r.getValidationResults(kAnciennitet).size()); EXPECT_EQ(sbx::ValidationCode::kValueOverLimit, r.getValidationResults(kAnciennitet).at(0).getValidationCode()); ta.setValue(kAnciennitet, (long) 12); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; ta.setValue(kAnciennitetTidlArbejdsplads, true); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; // // ***** Fravalg grupper // ta.setValue(kGrpElever, true); ta.setValue(kGrpLaerlinge, true); ta.setValue(kGrpStuderende, true); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; // //************************************************************ // PRODUKT PAGE //************************************************************ // // // ****** Udlobsalder // ta.setValue(kUdlobsalder_Pension, (long) 67); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; // // ******* Fravalg af risikodaekning // ta.setValue(kFravalgRisiko_MK, true); r = re.validate(ta, full); cout << r; EXPECT_FALSE(r.isAllOk()); EXPECT_EQ(1, r.getValidationResults(kFravalgRisikoAlder).size()); EXPECT_EQ(1, r.getValidationResults(kFravalgRisiko_MK).size()); EXPECT_EQ(sbx::ValidationCode::kProductElementRequired, r.getValidationResults(kFravalgRisikoAlder).at(0).getValidationCode()); EXPECT_EQ(sbx::ValidationCode::kValueNotAllowed, r.getValidationResults(kFravalgRisiko_MK).at(0).getValidationCode()); ta.setValue(kFravalgRisikoAlder, (long) 45); // now age is set, so all should be ok r = re.validate(ta, full); EXPECT_FALSE(r.isAllOk()); cout << r; EXPECT_EQ(1, r.getValidationResults(kFravalgRisiko_MK).size()); EXPECT_EQ(sbx::ValidationCode::kValueNotAllowed, r.getValidationResults(kFravalgRisiko_MK).at(0).getValidationCode()); ta.setValue(kFravalgRisiko_MK, false); ta.remove(kFravalgRisikoAlder); r = re.validate(ta, full); cout << r; EXPECT_TRUE(r.isAllOk()); // // ****** Opsparingsprodukter // ta.setValue(kStandardProduct, "Traditionel_MK"); ta.setValue(kTraditionel_MK, false); // expecting to fail as the standardprodukt hasn't been set on the ta r = re.validate(ta, full); EXPECT_FALSE(r.isAllOk()); if (r.isAllOk()) cout << r; ta.setValue(kTraditionel_MK, true); ta.setValue(kLink_MK, true); ta.setValue(kMarkedspension_MK, true); ta.setValue(kTidspensionMedGaranti_MK, true); ta.setValue(kTidspensionUdenGaranti_MK, true); // now savings products has been set, so everything should be fine r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; ta.setValue(kUdbetalingsform, re.getDefaultValue(kUdbetalingsform)->stringValue()); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; ta.setValue(kUdbetalingsperiode, re.getDefaultValue(kUdbetalingsperiode)->longValue()); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; ta.setValue(kMaxAndelLinkBidragPCT, (double) 5.5); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; ta.setValue(kMaxAndelMarkedspensionBidragPct, (double) 6.1); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; ta.setValue(kLinkKunForEgetBidrag_MK, true); r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); if (!r.isAllOk()) cout << r; // // Invaliditetsdaekning // // ta.setValue(kInvalidesum); // //************************************************************ // SALARY PAGE //************************************************************ // // // ***** Lon og betaling // ta.setValue(kLoenDefinition, "garbage"); r = re.validate(ta, full); EXPECT_FALSE(r.isAllOk()); if (r.isAllOk()) cout << r; ASSERT_EQ(1, r.getValidationResults(kLoenDefinition).size()); EXPECT_EQ(sbx::ValidationCode::kValueNotAllowed, r.getValidationResults(kLoenDefinition).at(0).getValidationCode()); ta.setValue(kLoenDefinition, re.getDefaultValue(kLoenDefinition)->stringValue()); ta.setValue(kLoenRegulering, "garbage"); r = re.validate(ta, full); EXPECT_FALSE(r.isAllOk()); if (r.isAllOk()) cout << r; ASSERT_EQ(1, r.getValidationResults(kLoenRegulering).size()); EXPECT_EQ(sbx::ValidationCode::kValueNotAllowed, r.getValidationResults(kLoenRegulering).at(0).getValidationCode()); ta.setValue(kLoenRegulering, "januar"); ta.setValue(kLoenreguleringsfrekvens, "garbage"); r = re.validate(ta, full); EXPECT_FALSE(r.isAllOk()); if (r.isAllOk()) cout << r; ASSERT_EQ(1, r.getValidationResults(kLoenreguleringsfrekvens).size()); EXPECT_EQ(sbx::ValidationCode::kValueNotAllowed, r.getValidationResults(kLoenreguleringsfrekvens).at(0).getValidationCode()); ta.setValue(kLoenreguleringsfrekvens, re.getDefaultValue(kLoenreguleringsfrekvens)->stringValue()); ta.setValue(kBidragsstigningsform, "garbage"); r = re.validate(ta, full); EXPECT_FALSE(r.isAllOk()); if (r.isAllOk()) cout << r; ASSERT_EQ(1, r.getValidationResults(kBidragsstigningsform).size()); EXPECT_EQ(sbx::ValidationCode::kValueNotAllowed, r.getValidationResults(kBidragsstigningsform).at(0).getValidationCode()); ta.setValue(kBidragsstigningsform, "Ingen"); ta.addContributionStep({0, 2, 2}); ta.setValue(kPrivate_Taxed_MK, true); // set privately taxed but no value for premium ta.setValue(kPrivate_Taxed_Reguleringskode, "Pristal"); ta.setValue(kTAEReguleringskode, "Pristal"); ta.setValue(kTAEBlGrMin, 100000); ta.setValue(kTAEBlOblMax, 200000); ta.setValue(kDoedReguleringskode, "Pristal"); ta.setValue(kDoedBlGrMin, 400000); ta.setValue(kDoedBlOblMax, 600000); r = re.validate(ta, full); // ...and expect to fail EXPECT_FALSE(r.isAllOk()); if (r.isAllOk()) cout << r; EXPECT_TRUE(r.hasMessages(kPrivate_Premium_BL, kProductElementRequired)); EXPECT_TRUE(r.hasMessages(kPrivate_Taxed_SA_Administrated_MK, kProductElementRequired)); ta.setValue(kPrivate_Taxed_SA_Administrated_MK, true); ta.setValue(kPrivate_Premium_BL, (double) 150234.5); // set a premium ... ta.setValue(kHospitalsdaekning_MK, false); r = re.validate(ta, full); // ... and expect not to fail EXPECT_TRUE(r.isAllOk()); cout << r; ta.setValue(kBidragEjFoesteTrin_MK, false); // set the r = re.validate(ta, full); EXPECT_TRUE(r.isAllOk()); cout << r; }