Exemplo n.º 1
0
    def assert_person_case_is_under_n_years_old(self, n_years, criteria_name):
        rule = _create_empty_rule(self.domain, case_type='person')
        rule.add_criteria(CustomMatchDefinition, name=criteria_name)

        with _with_case(self.domain, 'person', datetime.utcnow()) as case:
            dob = datetime(2018, 2, 22, 12, 0)
            # No value for dob yet
            self.assertFalse(rule.criteria_match(case, dob))

            # Bad value for dob
            case = self._set_dob(case, 'x')
            self.assertFalse(rule.criteria_match(case, dob))

            # Set dob
            case = self._set_dob(case, '2018-02-22')

            for assert_, age in [
                    # Test over N years old
                (self.assertFalse, relativedelta(years=n_years)),
                (self.assertFalse, relativedelta(years=n_years, days=90)),
                    # Test under N years old
                (self.assertTrue, relativedelta(years=n_years, days=-1)),
                (self.assertTrue, relativedelta(days=90)),
            ]:
                assert_(rule.criteria_match(case, dob + age), age)

        # Test wrong case type
        rule = _create_empty_rule(self.domain, case_type='x')
        rule.add_criteria(CustomMatchDefinition, name=criteria_name)

        with _with_case(self.domain, 'x', datetime.utcnow()) as case:
            case = self._set_dob(case, '2018-02-22')
            self.assertFalse(
                rule.criteria_match(case, dob + relativedelta(days=90)))
    def test_child_health_case_that_is_availing_services(self):
        rule = _create_empty_rule(self.domain, case_type='child_health')
        rule.add_criteria(
            CustomMatchDefinition,
            name='ICDS_CHILD_HEALTH_CASE_CHILD_AVAILING_SERVICES')

        with _with_case(self.domain, 'person', datetime.utcnow()) as child:
            with _with_case(self.domain, 'child_health',
                            datetime.utcnow()) as child_health:
                set_parent_case(self.domain,
                                child_health,
                                child,
                                relationship='extension')
                self._set_case_props(child,
                                     {"registered_status": "registered"})
                self._set_case_props(child,
                                     {"migration_status": "not_migrated"})
                self.assertTrue(
                    rule.criteria_match(child_health, datetime.utcnow()))

        with _with_case(self.domain, 'person', datetime.utcnow()) as child:
            with _with_case(self.domain, 'child_health',
                            datetime.utcnow()) as child_health:
                self._set_case_props(child,
                                     {"registered_status": "not_registered"})
                self._set_case_props(child,
                                     {"migration_status": "not_migrated"})
                set_parent_case(self.domain,
                                child_health,
                                child,
                                relationship='extension')
                self.assertFalse(
                    rule.criteria_match(child_health, datetime.utcnow()))
Exemplo n.º 3
0
    def test_is_usercase_of_ls(self):
        rule = _create_empty_rule(self.domain, case_type=USERCASE_TYPE)
        rule.add_criteria(CustomMatchDefinition, name='ICDS_IS_USERCASE_OF_LS')

        with create_user_case(self.aww) as aww_uc, create_user_case(
                self.ls) as ls_uc:
            self.assertFalse(rule.criteria_match(aww_uc, datetime.utcnow()))
            self.assertTrue(rule.criteria_match(ls_uc, datetime.utcnow()))
    def test_is_usercase_of_aww(self):
        rule = _create_empty_rule(self.domain, case_type=USERCASE_TYPE)
        rule.add_criteria(CustomMatchDefinition,
                          name='ICDS_IS_USERCASE_OF_AWW')

        with _with_case(self.domain, USERCASE_TYPE, datetime.utcnow(), owner_id=self.aww.get_id) as aww_uc,\
                _with_case(self.domain, USERCASE_TYPE, datetime.utcnow(), owner_id=self.ls.get_id) as ls_uc:

            self.assertTrue(rule.criteria_match(aww_uc, datetime.utcnow()))
            self.assertFalse(rule.criteria_match(ls_uc, datetime.utcnow()))
    def test_person_case_is_under_6_years_old(self):
        rule = _create_empty_rule(self.domain, case_type='person')
        rule.add_criteria(CustomMatchDefinition,
                          name='ICDS_PERSON_CASE_IS_UNDER_6_YEARS_OLD')

        with _with_case(self.domain, 'person', datetime.utcnow()) as case:
            # No value for dob yet
            self.assertFalse(
                rule.criteria_match(case, datetime(2018, 2, 22, 12, 0)))

            # Bad value for dob
            case = self._set_dob(case, 'x')
            self.assertFalse(
                rule.criteria_match(case, datetime(2018, 2, 22, 12, 0)))

            # Set dob
            case = self._set_dob(case, '2018-02-22')

            # Test over 6 years old
            self.assertFalse(
                rule.criteria_match(case, datetime(2024, 2, 22, 12, 0)))
            self.assertFalse(
                rule.criteria_match(case, datetime(2024, 5, 22, 12, 0)))

            # Test under 6 years old
            self.assertTrue(
                rule.criteria_match(case, datetime(2024, 2, 21, 12, 0)))
            self.assertTrue(
                rule.criteria_match(case, datetime(2018, 5, 22, 12, 0)))

        # Test wrong case type
        rule = _create_empty_rule(self.domain, case_type='x')
        rule.add_criteria(CustomMatchDefinition,
                          name='ICDS_PERSON_CASE_IS_UNDER_6_YEARS_OLD')

        with _with_case(self.domain, 'x', datetime.utcnow()) as case:
            case = self._set_dob(case, '2018-02-22')
            self.assertFalse(
                rule.criteria_match(case, datetime(2018, 5, 22, 12, 0)))
Exemplo n.º 6
0
    def test_ccs_record_case_has_future_edd(self):
        rule = _create_empty_rule(self.domain, case_type='ccs_record')
        rule.add_criteria(CustomMatchDefinition,
                          name='ICDS_CCS_RECORD_CASE_HAS_FUTURE_EDD')

        def check(case, edd, match):
            case = self._set_case_props(case, {"edd": edd})
            (self.assertTrue if match else self.assertFalse)(
                rule.criteria_match(case, now),
                "%s case with edd=%s should%s match" % (
                    case.type,
                    edd,
                    "" if match else " not",
                ))
Exemplo n.º 7
0
    def test_ccs_record_case_that_is_availing_services(self):
        rule = _create_empty_rule(self.domain, case_type='ccs_record')
        rule.add_criteria(CustomMatchDefinition,
                          name='ICDS_CCS_RECORD_CASE_AVAILING_SERVICES')

        def check(case, add, match):
            case = self._set_case_props(case, {"add": add})
            (self.assertTrue if match else self.assertFalse)(
                rule.criteria_match(case, now),
                "%s case with add=%s should%s match" % (
                    case.type,
                    add,
                    "" if match else " not",
                ))