def __deduct_points_from(self, risk_profile: RiskProfile): disability = risk_profile.get_product_by(name=DISABILITY_PRODUCT) disability.deduct_score_points(1) life = risk_profile.get_product_by(name=LIFE_PRODUCT) life.deduct_score_points(1) home = risk_profile.get_product_by(name=HOME_PRODUCT) home.deduct_score_points(1) auto = risk_profile.get_product_by(name=VEHICLE_PRODUCT) auto.deduct_score_points(1)
class RiskProfileBuilder: def __init__(self): self.__risk_profile = RiskProfile(products={}) def with_vehicle_product(self): self.__risk_profile.set_product(name=VEHICLE_PRODUCT, product=VehicleProduct()) return self def with_home_product(self): self.__risk_profile.set_product(name=HOME_PRODUCT, product=HomeProduct()) return self def with_life_product(self): self.__risk_profile.set_product(name=LIFE_PRODUCT, product=LifeProduct()) return self def with_disability_product(self): self.__risk_profile.set_product(name=DISABILITY_PRODUCT, product=DisabilityProduct()) return self def build(self): return self.__risk_profile
def __create_risk_profile(self, vehicle_product, home_product, life_product, disability_product): return RiskProfile( products={ VEHICLE_PRODUCT: vehicle_product, HOME_PRODUCT: home_product, LIFE_PRODUCT: life_product, DISABILITY_PRODUCT: disability_product })
def get_result_from(self, risk_profile: RiskProfile): for __, product in risk_profile.get_products().items(): for status in self.__get_product_status(): if status.apply_condition( product.risk_score) and self.__is_not_inelegible( product.status): product.update_status(status.name) return risk_profile
def setUp(self): self.user_profile_information = { 'age': 30, 'dependents': 0, 'income': 100, 'marital_status': 'married', 'risk_question': [False, True, True], 'house': { 'ownership_status': 'owned' }, 'vehicle': { 'year': '2018' } } self.rules_list = RiskAnalysisRulesFactory( PersonRules(), AssetRules()).build_rules_list() self.house = House( ownership_status=self.user_profile_information['house'] ['ownership_status']) self.vehicle = Vehicle( year_manufactured=self.user_profile_information['vehicle']['year']) self.person = Person( age=self.user_profile_information['age'], dependents=self.user_profile_information['dependents'], income=self.user_profile_information['income'], marital_status=self.user_profile_information['marital_status'], risk_question=self.user_profile_information['risk_question'], assets=[self.house, self.vehicle]) self.vehicle_product = VehicleProduct() self.home_product = HomeProduct() self.life_product = LifeProduct() self.disability_product = DisabilityProduct() self.risk_profile = RiskProfile(products={ VEHICLE_PRODUCT: self.vehicle_product, HOME_PRODUCT: self.home_product, LIFE_PRODUCT: self.life_product, DISABILITY_PRODUCT: self.disability_product }, ) self.risk_analysis = RiskAnalysis(person=self.person, risk_profile=self.risk_profile, rules_list=self.rules_list)
def __change_to_ineligible_product_on(self, risk_profile: RiskProfile): life = risk_profile.get_product_by(name=LIFE_PRODUCT) life.update_status(PRODUCT_SCORE_INELIGIBLE) disability = risk_profile.get_product_by(name=DISABILITY_PRODUCT) disability.update_status(PRODUCT_SCORE_INELIGIBLE)
def __init__(self): self.__risk_profile = RiskProfile(products={})
def __change_to_ineligible_home_product_on(self, risk_profile: RiskProfile): home = risk_profile.get_product_by(name=HOME_PRODUCT) home.update_status(PRODUCT_SCORE_INELIGIBLE)
def __add_points_to(self, risk_profile: RiskProfile): disability = risk_profile.get_product_by(name=DISABILITY_PRODUCT) disability.add_score_points(1) home = risk_profile.get_product_by(name=HOME_PRODUCT) home.add_score_points(1)
def __add_and_deduct_points_from(self, risk_profile: RiskProfile): life = risk_profile.get_product_by(name=LIFE_PRODUCT) life.add_score_points(1) disability = risk_profile.get_product_by(name=DISABILITY_PRODUCT) disability.deduct_score_points(1)
def __change_to_ineligible_vehicle_product_on(self, risk_profile: RiskProfile): vehicle = risk_profile.get_product_by(name=VEHICLE_PRODUCT) vehicle.update_status(PRODUCT_SCORE_INELIGIBLE)
def __add_points_to(self, risk_profile: RiskProfile): vehicle = risk_profile.get_product_by(name=VEHICLE_PRODUCT) vehicle.add_score_points(1)