Esempio n. 1
0
    def assert_parser_after_write(self, parser_type, in_file, out_file_path, use_template=False):

        parser = parser_type(in_file, out_file_path)

        complex_defs = get_complex_definitions()

        # Update each value and read the file in again
        for prop in get_supported_props():

            if prop in (ATTRIBUTES, CONTACTS, DIGITAL_FORMS, PROCESS_STEPS):
                value = [{}.fromkeys(complex_defs[prop], "test"), {}.fromkeys(complex_defs[prop], prop)]
            elif prop in (BOUNDING_BOX, LARGER_WORKS):
                value = {}.fromkeys(complex_defs[prop], "test " + prop)
            elif prop == DATES:
                value = {DATE_TYPE: DATE_TYPE_RANGE, DATE_VALUES: ["test", prop]}
            elif prop in (KEYWORDS_PLACE, KEYWORDS_THEME):
                value = ["test", prop]
            else:
                value = "test " + prop

            if prop in get_complex_definitions():
                value = get_default_for_complex(prop, value)

            setattr(parser, prop, value)

        parser.write(use_template=use_template)

        with open(out_file_path) as out_file:
            self.assert_parsers_are_equal(parser, parser_type(out_file))
Esempio n. 2
0
    def assert_parsers_are_equal(self, parser_tgt, parser_val):
        parser_type = type(parser_tgt).__name__

        self.assert_valid_parser(parser_tgt)
        self.assert_valid_parser(parser_val)

        for prop in get_supported_props():
            self.assert_equal_for(parser_type, prop, getattr(parser_val, prop), getattr(parser_tgt, prop))
Esempio n. 3
0
    def test_validate_simple_values(self):
        complex_props = set(get_complex_definitions().keys())
        simple_props = set(get_supported_props()).difference(complex_props)

        invalid_values = (None, [None], dict(), [dict()], set(), [set()], tuple(), [tuple()])

        for parser in (ArcGISParser().validate(), FgdcParser().validate(), IsoParser().validate()):
            for prop in simple_props:
                for invalid in invalid_values:
                    self.assert_validates_for(parser, prop, invalid)
Esempio n. 4
0
    def assert_parser_conversion(self, content_parser, target_parser, comparison_type=""):
        converted = content_parser.convert_to(target_parser)

        self.assert_valid_parser(content_parser)
        self.assert_valid_parser(target_parser)

        self.assertFalse(
            converted is target_parser,
            "{0} conversion is returning the original {0} instance".format(type(converted).__name__),
        )

        for prop in get_supported_props():
            self.assertEqual(
                getattr(content_parser, prop),
                getattr(converted, prop),
                "{0} {1}conversion does not equal original {2} content for {3}".format(
                    type(converted).__name__, comparison_type, type(content_parser).__name__, prop
                ),
            )
Esempio n. 5
0
    def test_reparse_simple_values(self):

        complex_props = set(get_complex_definitions().keys())
        required_props = set(get_supported_props())

        simple_props = required_props.difference(complex_props)
        simple_props = simple_props.difference({KEYWORDS_PLACE, KEYWORDS_THEME})

        simple_empty_vals = ("", u"", [])
        simple_valid_vals = (u"value", [u"item", u"list"])

        arcgis_parser = ArcGISParser(self.arcgis_metadata)
        fgdc_parser = FgdcParser(self.fgdc_metadata)
        iso_parser = IsoParser(self.iso_metadata)

        for parser in (arcgis_parser, fgdc_parser, iso_parser):

            # Test reparsed empty values
            for val in simple_empty_vals:
                self.assert_reparsed_simple_for(parser, simple_props, val, u"")

            # Test reparsed valid values
            for val in simple_valid_vals:
                self.assert_reparsed_simple_for(parser, simple_props, val, val)