def assertAmends(self, test, changes, **kwargs): """ Assert that the plugin "test" amends the mock record when called with params kwargs. """ record = AmendableRecord(MOCK_RECORD) record.set_rule(RULE_MOCK) test.check_record(record, **kwargs) self.assertTrue(record.amended) self.assertEqual(len(record._amendments), len(changes)) for field, val in changes.iteritems(): if val is not None: self.assertEqual(((field, 0, 0), val), list(record.iterfield(field))[0]) else: self.assertEqual(len(list(record.iterfield(field))), 1)
def getInspireRecordMetadata(inspireID): '''For a given INSPIRE ID, collect the desired metadata fields and return them. ''' fieldArray = {'0247_2': 'stdIDsource', '0247_a': 'stdID', '245__a': 'title', '8564_u': 'files'} fieldValues = {} fieldKeys = fieldArray.keys() for fKey in fieldKeys: fieldValues[fKey] = get_fieldvalues(inspireID, fKey) print "fieldValues=", fKey, ":", fieldValues[fKey] # ThS suggested approach for dealing with the problem of two repeating # fields that correspond (say, a type in one field, and a value in another) record = AmendableRecord(get_bibrecord(inspireID)) for _, val in record.iterfield('035__a', subfield_filter=('9', 'arXiv')): fieldValues['arxivID'] = val pdfList = [] for z in fieldValues['8564_u']: if 'pdf' in z: pdfList.append(z) fieldValues['8564_u'] = pdfList return fieldValues
def assertAmends(self, test, changes, **kwargs): """ Assert that the plugin "test" amends the mock record when called with params kwargs. """ record = AmendableRecord(MOCK_RECORD) record.set_rule(RULE_MOCK) test.check_record(record, **kwargs) self.assertTrue(record.amended) self.assertEqual(len(record.amendments), len(changes)) for field, val in changes.iteritems(): if val is not None: self.assertEqual( [((field, 0, 0), val)], list(record.iterfield(field)) ) else: self.assertEqual(len(list(record.iterfield(field))), 1)
def assertDeletions(self, test, deletions, **kwargs): """ Assert that the plugin "test" deletes from the mock record the fields in the list 'deletions' and makes the record amended when called with params kwargs. """ record = AmendableRecord(MOCK_RECORD) record.set_rule(RULE_MOCK) test.check_record(record) self.assertTrue(record.amended) self.assertEqual(len(record._amendments), len(deletions)) for field in deletions: self.assertEqual(0, len(list(record.iterfield(field)))) if kwargs.get('tagremoved'): self.assertFalse(record.get(kwargs.get('tagremoved')))