예제 #1
0
    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)
예제 #2
0
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)
예제 #7
0
 def __init__(self):
     self.__risk_profile = RiskProfile(products={})
예제 #8
0
 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)
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
 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)