def valid_file_contents(file_contents):
    """
    This function checks to see that the file contents are valid: no required fields are missing, location
    information is complete, birth_date and passport/visa number is valid.

    :param file_contents: a list of dictionaries denoting returning citizens
    :return: True if the file contents are valid, False otherwise
    """
    valid_file = True
    for person in file_contents:
        for item in REQUIRED_FIELDS:
            if item not in person:
                valid_file = False
        for item in person:
            if item in LOCATION_FIELDS:
                if not valid_location_field(person[item]):
                    valid_file = False
            elif item is "passport":
                if not valid_passport_format(person[item]):
                    valid_file = False
            elif item is "visa":
                if not valid_date_format(person["visa"]["date"]):
                    valid_file = False
                if not valid_visa_format(person["visa"]["code"]):
                    valid_file = False
            elif item is "entry_reason":
                if person[item] not in REASON_FOR_ENTRY:
                    valid_file = False
            elif item is "birth_date":
                if not valid_date_format(person[item]):
                    valid_file = False
        if unknown_location_exists(person, COUNTRIES):
            valid_file = False
    return valid_file
예제 #2
0
def valid_file_contents(file_contents):
    """
    This function checks to see that the file contents are valid: no required fields are missing, location
    information is complete, birth_date and passport/visa number is valid.

    :param file_contents: a list of dictionaries denoting returning citizens
    :return: True if the file contents are valid, False otherwise
    """
    valid_file = True
    for person in file_contents:
        for item in REQUIRED_FIELDS:
            if item not in person:
                valid_file = False
        for item in person:
            if item in LOCATION_FIELDS:
                if not valid_location_field(person[item]):
                    valid_file = False
            elif item is "passport":
                if not valid_passport_format(person[item]):
                    valid_file = False
            elif item is "visa":
                if not valid_date_format(person["visa"]["date"]):
                    valid_file = False
                if not valid_visa_format(person["visa"]["code"]):
                    valid_file = False
            elif item is "entry_reason":
                if person[item] not in REASON_FOR_ENTRY:
                    valid_file = False
            elif item is "birth_date":
                if not valid_date_format(person[item]):
                    valid_file = False
        if unknown_location_exists(person, COUNTRIES):
            valid_file = False
    return valid_file
def test_decide_unknown_locations_file():
    """
    Ensure that the file contains travellers that have locations listed that are unknown, and that they have no
    missing information that is required.
    """
    with open("test_decide_unknown_locations.json", "r") as citizen_file:
        citizen_content = citizen_file.read()
    citizen_json = json.loads(citizen_content)

    for person in citizen_json:
        for item in REQUIRED_FIELDS:
            assert item in person
        required_location_fields = LOCATION_FIELDS[:2]
        for item in required_location_fields:
            assert item in person
        assert unknown_location_exists(person, COUNTRIES)
예제 #4
0
def test_decide_unknown_locations_file():
    """
    Ensure that the file contains travellers that have locations listed that are unknown, and that they have no
    missing information that is required.
    """
    with open("test_decide_unknown_locations.json", "r") as citizen_file:
        citizen_content = citizen_file.read()
    citizen_json = json.loads(citizen_content)

    for person in citizen_json:
        for item in REQUIRED_FIELDS:
            assert item in person
        required_location_fields = LOCATION_FIELDS[:2]
        for item in required_location_fields:
            assert item in person
        assert unknown_location_exists(person, COUNTRIES)
def test_unknown_location_exists():
    countries = {"JIK": {"code": "JIK",
                         "name": "Jikland",
                         "visitor_visa_required": "0",
                         "transit_visa_required": "0",
                         "medical_advisory": ""},
                 "LUG": {"code": "LUG",
                         "name": "Democratic Republic of Lungary",
                         "visitor_visa_required": "1",
                         "transit_visa_required": "1",
                         "medical_advisory": "MUMPS"}}
    p1 = {"passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
          "first_name": "JACK",
          "last_name": "DOE",
          "birth_date": "1938-12-21",
          "home": {"city": "Bala",
                   "region": "ON",
                   "country": "KAN"},
          "entry_reason": "returning",
          "from": {"city": "Wumpus",
                   "region": "Headdeskia",
                   "country": "JIK"}}
    assert unknown_location_exists(p1, countries) is False
    p2 = {"passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
          "first_name": "JACK",
          "last_name": "DOE",
          "birth_date": "1938-12-21",
          "home": {"city": "Bala",
                   "region": "ON",
                   "country": "LUG"},
          "via": {"city": "Gruil",
                  "region": "LU",
                  "country": "JIK"},
          "entry_reason": "returning",
          "from": {"city": "Wumpus",
                   "region": "Headdeskia",
                   "country": "LUG"}}
    assert unknown_location_exists(p2, countries) is False
    p3 = {"passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
          "first_name": "JACK",
          "last_name": "DOE",
          "birth_date": "1938-12-21",
          "home": {"city": "Bala",
                   "region": "ON",
                   "country": "ABC"},
          "entry_reason": "returning",
          "from": {"city": "Wumpus",
                   "region": "Headdeskia",
                   "country": "LUG"}}
    assert unknown_location_exists(p3, countries) is True
    p4 = {"passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
          "first_name": "JACK",
          "last_name": "DOE",
          "birth_date": "1938-12-21",
          "home": {"city": "Bala",
                   "region": "ON",
                   "country": "ABC"},
          "entry_reason": "returning",
          "from": {"city": "Wumpus",
                   "region": "Headdeskia",
                   "country": "DEF"}}
    assert unknown_location_exists(p4, countries) is True
    p5 = {"passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
          "first_name": "JACK",
          "last_name": "DOE",
          "birth_date": "1938-12-21",
          "home": {"city": "Bala",
                   "region": "ON",
                   "country": "KAN"},
          "via": {"city": "Alpha",
                  "region": "BET",
                  "country": "XYZ"},
          "entry_reason": "returning",
          "from": {"city": "Wumpus",
                   "region": "Headdeskia",
                   "country": "LUG"}}
    assert unknown_location_exists(p5, countries) is True
예제 #6
0
def test_unknown_location_exists():
    countries = {
        "JIK": {
            "code": "JIK",
            "name": "Jikland",
            "visitor_visa_required": "0",
            "transit_visa_required": "0",
            "medical_advisory": ""
        },
        "LUG": {
            "code": "LUG",
            "name": "Democratic Republic of Lungary",
            "visitor_visa_required": "1",
            "transit_visa_required": "1",
            "medical_advisory": "MUMPS"
        }
    }
    p1 = {
        "passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
        "first_name": "JACK",
        "last_name": "DOE",
        "birth_date": "1938-12-21",
        "home": {
            "city": "Bala",
            "region": "ON",
            "country": "KAN"
        },
        "entry_reason": "returning",
        "from": {
            "city": "Wumpus",
            "region": "Headdeskia",
            "country": "JIK"
        }
    }
    assert unknown_location_exists(p1, countries) is False
    p2 = {
        "passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
        "first_name": "JACK",
        "last_name": "DOE",
        "birth_date": "1938-12-21",
        "home": {
            "city": "Bala",
            "region": "ON",
            "country": "LUG"
        },
        "via": {
            "city": "Gruil",
            "region": "LU",
            "country": "JIK"
        },
        "entry_reason": "returning",
        "from": {
            "city": "Wumpus",
            "region": "Headdeskia",
            "country": "LUG"
        }
    }
    assert unknown_location_exists(p2, countries) is False
    p3 = {
        "passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
        "first_name": "JACK",
        "last_name": "DOE",
        "birth_date": "1938-12-21",
        "home": {
            "city": "Bala",
            "region": "ON",
            "country": "ABC"
        },
        "entry_reason": "returning",
        "from": {
            "city": "Wumpus",
            "region": "Headdeskia",
            "country": "LUG"
        }
    }
    assert unknown_location_exists(p3, countries) is True
    p4 = {
        "passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
        "first_name": "JACK",
        "last_name": "DOE",
        "birth_date": "1938-12-21",
        "home": {
            "city": "Bala",
            "region": "ON",
            "country": "ABC"
        },
        "entry_reason": "returning",
        "from": {
            "city": "Wumpus",
            "region": "Headdeskia",
            "country": "DEF"
        }
    }
    assert unknown_location_exists(p4, countries) is True
    p5 = {
        "passport": "6P294-42HR2-95PSF-93NFF-2T5WF",
        "first_name": "JACK",
        "last_name": "DOE",
        "birth_date": "1938-12-21",
        "home": {
            "city": "Bala",
            "region": "ON",
            "country": "KAN"
        },
        "via": {
            "city": "Alpha",
            "region": "BET",
            "country": "XYZ"
        },
        "entry_reason": "returning",
        "from": {
            "city": "Wumpus",
            "region": "Headdeskia",
            "country": "LUG"
        }
    }
    assert unknown_location_exists(p5, countries) is True