예제 #1
0
    def test_write_xml_metadata_file(self):
        record = m2m.MetadataRecord('mphillips')
        record.mapping('agent', 'publisher', 'UNT Libraries',
                       location='Denton, Texas')
        record.setBaseDirectory('tests')
        record.setFolderName('test_data')

        record.writeTemplateFiles(record.baseDirectory, record.foldername)

        self.assertTrue(os.path.exists(record.baseDirectory))
        self.assertTrue(os.path.exists(os.path.join(
                                       record.baseDirectory, record.foldername)))
        self.assertTrue(os.path.exists(os.path.join(
                                       record.baseDirectory, record.foldername, 'metadata.xml')))

        self.pub_tree.publisher.name = 'UNT Libraries'
        self.pub_tree.publisher.location = 'Denton, Texas'
        self.pub_tree.meta = 'mphillips'
        self.pub_tree.meta.set('qualifier', 'metadataCreator')

        filename = os.path.join(record.baseDirectory, record.foldername, 'metadata.xml')
        record_from_file = open(filename, 'rb').read()
        self.assertEqual(record_from_file, xml_to_pretty_string(self.pub_tree))

        # remove test files that were written
        os.remove(os.path.join(record.baseDirectory, record.foldername, 'metadata.xml'))
        os.rmdir(os.path.join(record.baseDirectory, record.foldername))
예제 #2
0
    def test_empty_split_function_of_map(self):
        record = m2m.MetadataRecord('mphillips')
        record.mapping('basic', 'title', 'm|f', split='')

        self.tree.title = 'm|f'
        self.tree.meta = 'mphillips'
        self.tree.meta.set('qualifier', 'metadataCreator')

        self.assertEqual(bytes(record), xml_to_pretty_string(self.tree))
예제 #3
0
    def test_element_not_in_field_type(self):

        record = m2m.MetadataRecord('mphillips')

        with self.assertRaises(m2m.MetadataConverterException) as cm:
            record.mapping('basic', 'author', 'text')

        expected_error = 'Element named "author" not in fieldTypes'
        self.assertEqual(str(cm.exception), expected_error)
예제 #4
0
    def test_basic_map_empty_qualified_no_options(self):
        record = m2m.MetadataRecord('mphillips')
        record.mapping('basic', 'title', 'test_title', qualifier='')

        self.tree.title = 'test_title'
        self.tree.meta = 'mphillips'
        self.tree.meta.set('qualifier', 'metadataCreator')

        self.assertEqual(bytes(record), xml_to_pretty_string(self.tree))
예제 #5
0
    def test_missing_required_metadata_value(self):

        record = m2m.MetadataRecord('mphillips')

        with self.assertRaises(m2m.MetadataConverterException) as cm:
            record.mapping('basic', 'title', '')

        expected_error = 'Value required for element named "title"'
        self.assertEqual(str(cm.exception), expected_error)
예제 #6
0
    def test_unsupported_mapping_function_type(self):

        record = m2m.MetadataRecord('mphillips')

        with self.assertRaises(m2m.MetadataConverterException) as cm:
            record.mapping('simple', 'title', 'text')

        expected_error = 'Unsupported mapping function type, simple'
        self.assertEqual(str(cm.exception), expected_error)
예제 #7
0
    def test_agent_incorrect_use_of_location_that_is_not_publisher(self):

        record = m2m.MetadataRecord('mphillips')

        with self.assertRaises(m2m.MetadataConverterException) as cm:
            record.mapping('agent', 'creator', 'Phillips, Mark',
                           location='aut')

        expected_error = 'location can only be used on publisher element'
        self.assertEqual(str(cm.exception), expected_error)
예제 #8
0
    def test_incorrect_element_type_for_valid_element(self):

        record = m2m.MetadataRecord('mphillips')

        with self.assertRaises(m2m.MetadataConverterException) as cm:
            record.mapping('agent', 'title', 'test')

        expected_error = 'Element "title" should be of basic type, but you' \
                         ' are attempting to add it as "agent" type.'
        self.assertEqual(str(cm.exception), expected_error)
예제 #9
0
    def test_agent_map_qualified_with_location(self):
        record = m2m.MetadataRecord('mphillips')
        record.mapping('agent', 'publisher', 'UNT Libraries',
                       location='Denton, Texas')

        self.pub_tree.publisher.name = 'UNT Libraries'
        self.pub_tree.publisher.location = 'Denton, Texas'
        self.pub_tree.meta = 'mphillips'
        self.pub_tree.meta.set('qualifier', 'metadataCreator')

        self.assertEqual(bytes(record), xml_to_pretty_string(self.pub_tree))
예제 #10
0
    def test_metadata_record_setup_with_date(self):

        record = m2m.MetadataRecord('mphillips', addDate=True)
        self.assertIsInstance(record, m2m.MetadataRecord)

        s = etree.fromstring(bytes(record))
        self.assertEqual(len(s.findall('meta[@qualifier="metadataCreationDate"]')), 1)

        date_string_regex = re.compile(r'\d\d\d\d-\d\d-\d\d, \d\d:\d\d:\d\d')
        meta_date_string = s.findall('meta[@qualifier="metadataCreationDate"]')[0].text
        self.assertTrue(date_string_regex.match(meta_date_string))
예제 #11
0
    def test_agent_map_unqualified_no_options(self):
        record = m2m.MetadataRecord('mphillips')
        record.mapping('agent', 'creator', 'Phillips, Mark')

        self.agent_tree.creator.name = 'Phillips, Mark'
        del self.agent_tree.creator.info
        del self.agent_tree.creator.type
        self.agent_tree.meta = 'mphillips'
        self.agent_tree.meta.set('qualifier', 'metadataCreator')

        self.assertEqual(bytes(record), xml_to_pretty_string(self.agent_tree))
예제 #12
0
    def test_metadata_record_setup(self):
        """Test that the creation of a record creates a MetadataRecord object."""

        record = m2m.MetadataRecord('mphillips')
        self.assertIsInstance(record, m2m.MetadataRecord)

        s = etree.fromstring(bytes(record))
        self.assertEqual(len(s.findall('meta[@qualifier="metadataCreator"]')), 1)

        creator_string = s.findall('meta[@qualifier="metadataCreator"]')[0].text
        self.assertEqual(creator_string, 'mphillips')
예제 #13
0
    def test_basic_map_qualified_basic_with_function(self):
        record = m2m.MetadataRecord('mphillips')
        record.mapping('basic', 'title', 'test_title',
                       qualifier='officialtitle',
                       function=(lambda x: x.upper())
                       )

        self.tree.title = 'TEST_TITLE'
        self.tree.title.set('qualifier', 'officialtitle')
        self.tree.meta = 'mphillips'
        self.tree.meta.set('qualifier', 'metadataCreator')

        self.assertEqual(bytes(record), xml_to_pretty_string(self.tree))
예제 #14
0
    def test_agent_map_qualified_info_only(self):
        record = m2m.MetadataRecord('mphillips')
        record.mapping('agent', 'creator', 'Phillips, Mark',
                       qualifier='aut', info='First Publication')

        self.agent_tree.creator.info = 'First Publication'
        self.agent_tree.creator.name = 'Phillips, Mark'
        del self.agent_tree.creator.type
        self.agent_tree.creator.set('qualifier', 'aut')
        self.agent_tree.meta = 'mphillips'
        self.agent_tree.meta.set('qualifier', 'metadataCreator')

        self.assertEqual(bytes(record), xml_to_pretty_string(self.agent_tree))
예제 #15
0
    def test_agent_map_qualified_with_function(self):
        record = m2m.MetadataRecord('mphillips')
        record.mapping('agent', 'creator', 'Phillips, Mark',
                       qualifier='aut',
                       function=(lambda x: x.upper())
                       )

        self.agent_tree.creator.name = 'PHILLIPS, MARK'
        del self.agent_tree.creator.info
        del self.agent_tree.creator.type
        self.agent_tree.creator.set('qualifier', 'aut')
        self.agent_tree.meta = 'mphillips'
        self.agent_tree.meta.set('qualifier', 'metadataCreator')

        self.assertEqual(bytes(record), xml_to_pretty_string(self.agent_tree))
예제 #16
0
    def test_write_json_metadata_file(self):
        record = m2m.MetadataRecord('mphillips')

        record.setBaseDirectory('tests')
        record.setFolderName('test_data')
        test_json_data = {'test': 'data'}

        record.writeJSONFile(record.baseDirectory, record.foldername, test_json_data)

        self.assertTrue(os.path.exists(record.baseDirectory))
        self.assertTrue(os.path.exists(os.path.join(
                                       record.baseDirectory, record.foldername)))
        self.assertTrue(os.path.exists(os.path.join(
                                       record.baseDirectory, record.foldername, 'metadata.json')))

        filename = os.path.join(record.baseDirectory, record.foldername, 'metadata.json')
        record_from_file = open(filename).read()

        self.assertEqual(json.loads(record_from_file), test_json_data)

        # remove test files that were written
        os.remove(os.path.join(record.baseDirectory, record.foldername, 'metadata.json'))
        os.rmdir(os.path.join(record.baseDirectory, record.foldername))
예제 #17
0
    def test_none_element_value_equals_none(self):
        # if element value is None then it should return None.

        record = m2m.MetadataRecord('mphillips')
        self.assertEqual(record.mapping('basic', 'title', None), None)
예제 #18
0
    def test_empty_element_value_equals_none(self):
        # if element value is empty for non-required elements
        # then map should return None.

        record = m2m.MetadataRecord('mphillips')
        self.assertEqual(record.mapping('basic', 'title', '', required=False), None)
예제 #19
0
    def test_set_base_directory(self):

        record = m2m.MetadataRecord('mphillips')
        record.setBaseDirectory('out')
        self.assertEqual(record.baseDirectory, 'out')
예제 #20
0
    def test_set_folder_name(self):

        record = m2m.MetadataRecord('mphillips')
        record.setFolderName('folder')
        self.assertEqual(record.foldername, 'folder')