Example #1
0
    def test_US18_half_sibling_text(self):
        # testing half sibling
        self.famMap["F1"] = {
            "HUSB": ["I1"],
            "WIFE": ["I2"],
            "CHIL": ["I10", "I1"],
            "MARR": [1, 1, 2009],
            "NOTE": "JAY/GLORIA FAMILY",
            "FAM": "F1"
        }
        self.famMap["F3"] = {
            "HUSB": ["I8"],
            "WIFE": ["I2"],
            "CHIL": ["I9", "I2"],
            "MARR": [1, 1, 1995],
            "DIV": [1, 1, 2006],
            "NOTE": "JAVIER/GLORIA",
            "FAM": "F3"
        }

        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us18_no_siblingmarriages(self.parentId2Children)

        ret = self.logger.get_logs()
        str1 = "F1 has siblings as parents: ['I1', 'I2']"
        str2 = "F4 has siblings as parents: ['I4', 'I5']"
        expected_ret = [('Error', 'Family', 18, str1),
                        ('Error', 'Family', 18, str2)]
        self.assertListEqual(expected_ret, ret,
                             "Expected Return does not match")
Example #2
0
    def test_US17_2family_text(self):
        # should find 2 matches and the following expected result
        # Adding Lorraine as a child of Frank's first marriage
        self.indMap["I12"] = {
            "NAME": "Lorraine/Dunphy/",
            "SEX": "F",
            "BIRT": [1, 1, 1965],
            "FAMS": ["F8", "F7"],
            "AGE": 55,
            "INDI": "I12"
        }
        self.famMap["F7"] = {
            "HUSB": ["I11"],
            "WIFE": ["I13"],
            "CHIL": ["I7", "I12"],
            "MARR": [1, 1, 1965],
            "NOTE": "FRANK/GRACE FAMILY",
            "FAM": "F7"
        }
        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us17_no_marr2child(self.parentId2Children)

        ret = self.logger.get_logs()
        str1 = "F8: My spouse (I12) is one of my children: Parent (I11), Children (['I7', 'I12'])"
        str2 = "F11: My spouse (I26) is one of my children: Parent (I27), Children (['I26'])"
        expected_ret = [('Error', 'Family', 17, str1),
                        ('Error', 'Family', 17, str2)]
        self.assertListEqual(expected_ret, ret,
                             "Expected Return does not match")
Example #3
0
    def test_US18_half_sibling(self):
        # should get 2 matches
        # testing half sibling
        self.famMap["F1"] = {
            "HUSB": ["I1"],
            "WIFE": ["I2"],
            "CHIL": ["I10", "I1"],
            "MARR": [1, 1, 2009],
            "NOTE": "JAY/GLORIA FAMILY",
            "FAM": "F1"
        }
        self.famMap["F3"] = {
            "HUSB": ["I8"],
            "WIFE": ["I2"],
            "CHIL": ["I9", "I2"],
            "MARR": [1, 1, 1995],
            "DIV": [1, 1, 2006],
            "NOTE": "JAVIER/GLORIA",
            "FAM": "F3"
        }
        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us18_no_siblingmarriages(self.parentId2Children)

        ret = self.logger.get_logs()
        self.assertEqual(len(ret), 2, "Did not get the expected results")
Example #4
0
    def test_US17_2family(self):
        # should get 2 matches
        # Adding Lorraine as a child of Frank's first marriage
        self.indMap["I12"] = {
            "NAME": "Lorraine/Dunphy/",
            "SEX": "F",
            "BIRT": [1, 1, 1965],
            "FAMS": ["F8", "F7"],
            "AGE": 55,
            "INDI": "I12"
        }
        self.famMap["F7"] = {
            "HUSB": ["I11"],
            "WIFE": ["I13"],
            "CHIL": ["I7", "I12"],
            "MARR": [1, 1, 1965],
            "NOTE": "FRANK/GRACE FAMILY",
            "FAM": "F7"
        }

        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us17_no_marr2child(self.parentId2Children)

        ret = self.logger.get_logs()
        self.assertEqual(len(ret), 2, "Did not get the expected results")
Example #5
0
    def test_US18_1family(self):
        # should to get 1 match
        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us18_no_siblingmarriages(self.parentId2Children)

        ret = self.logger.get_logs()
        self.assertEqual(len(ret), 1, "Did not get the expected results")
Example #6
0
    def test_US18_1family_text(self):
        # should find 1 match and the following expected result
        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us18_no_siblingmarriages(self.parentId2Children)

        ret = self.logger.get_logs()
        str1 = "F4 has siblings as parents: ['I4', 'I5']"
        expected_ret = [('Error', 'Family', 18, str1)]
        self.assertListEqual(expected_ret, ret,
                             "Expected Return does not match")
Example #7
0
    def test_US17_1family_text(self):
        # should find 1 match and the following expected result
        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us17_no_marr2child(self.parentId2Children)

        ret = self.logger.get_logs()
        str1 = "F11: My spouse (I26) is one of my children: Parent (I27), Children (['I26'])"
        expected_ret = [('Error', 'Family', 17, str1)]
        self.assertListEqual(expected_ret, ret,
                             "Expected Return does not match")
Example #8
0
    def test_US18_nomatches(self):
        self.famMap["F4"] = {
            "HUSB": ["I4", "I5"],
            "CHIL": ["I14", "I15"],
            "MARR": [1, 1, 2014],
            "NOTE": "PRITCHETT/TUCKER FAMILY",
            "FAM": "F4",
            "WIFE": []
        }
        # Remove the family where parent is married to a child
        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us18_no_siblingmarriages(self.parentId2Children)

        ret = self.logger.get_logs()
        self.assertEqual(len(ret), 0, "Did not get the expected results")
Example #9
0
    def test_US17_nomatches(self):
        # Remove the family where parent is married to a child
        self.famMap["F11"] = {
            "HUSB": ["I26"],
            "WIFE": ["I27"],
            "CHIL": ["I3"],
            "MARR": [16, 1, 2018],
            "NOTE": "MarryToChildFAMILY",
            "FAM": "F11"
        }

        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us17_no_marr2child(self.parentId2Children)

        ret = self.logger.get_logs()
        self.assertEqual(len(ret), 0, "Did not get the expected results")
Example #10
0
    def test_US18_nomatches_text(self):
        # Remove the family where parent is married to a child
        self.famMap["F4"] = {
            "HUSB": ["I4", "I5"],
            "CHIL": ["I14", "I15"],
            "MARR": [1, 1, 2014],
            "NOTE": "PRITCHETT/TUCKER FAMILY",
            "FAM": "F4",
            "WIFE": []
        }
        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us18_no_siblingmarriages(self.parentId2Children)

        ret = self.logger.get_logs()
        expected_ret = []
        self.assertListEqual(expected_ret, ret,
                             "Expected Return does not match")
Example #11
0
    def test_US17_nomatches_text(self):
        # Remove the family where parent is married to a child
        self.famMap["F11"] = {
            "HUSB": ["I26"],
            "WIFE": ["I27"],
            "CHIL": ["I3"],
            "MARR": [16, 1, 2018],
            "NOTE": "MarryToChildFAMILY",
            "FAM": "F11"
        }

        self.logger.clear_logs()
        self.parentId2Children = getParent2ChildrenMap(self.famMap)
        for id, fam in self.famMap.items():
            spousecheck = spouseCrossChecker(self.logger, fam, self.indMap)
            spousecheck.us17_no_marr2child(self.parentId2Children)

        expected_ret = []
        ret = self.logger.get_logs()
        self.assertListEqual(expected_ret, ret,
                             "Expected Return does not match")
Example #12
0
    individual["INDI"] = parsed_individual_id
    individual_database.AddObj(individual)

    indiDatechecker.us03_birtBeforeDeat(individual)
    indiDatechecker.us38_upcomingBirt(individual)

    if born_within_one_month(individual):
        logger.log_individual_info(
            35,
            "{} Was born in the last 30 days!".format(parsed_individual_id))

    for key in [key for key in ["BIRT", "DEAT"] if key in individual]:
        dateValidator.validate_date(individual[key], True)

# get the map of siblings
parentId2Children = getParent2ChildrenMap(parsed_families)

for family_id in parsed_families:
    family = parsed_families[family_id]
    family["FAM"] = family_id

    # Error handling to fill in required fields which are not present in one or more families
    # Placeholder logic to Proof-of-concept all the branches working together
    if "MARR" not in family:
        logger.log_family_error(
            0, "Family {}  missing required tag MARR".format(family_id))
        family["MARR"] = TablePrinter.error_output
    if "WIFE" not in family:
        logger.log_family_error(
            0, "Family {} missing wife".format(family_id).format(family_id))
        family["WIFE"] = TablePrinter.error_output