def test_add_identical_conflict_field(self): """ BibUpload Revision Verifier - Rev3-100/970/888, Added identical 888 to Rev2(100/970), No conflict Expected""" upload_conf_rec = xml_marc_to_records(self.rev2_add_conf_field) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() #print "%s %s" % (upload_conf_rec[0], orig_recs[0]), self.data self.assert_(rev_verifier.verify_revision(upload_conf_rec[0], orig_recs[0], 'replace'))
def test_add_new_field(self): """ BibUpload Revision Verifier - Rev3-100/970/888, Added 300 to Rev2(100/970), Patch Generated for 300""" upload_recs = xml_marc_to_records(self.rev2_add_field) orig_recs = xml_marc_to_records(self.data["rev3"][0]) rev_verifier = RevisionVerifier() (opt_mode, patch, dummy_affected_tags) = rev_verifier.verify_revision(upload_recs[0], orig_recs[0], "replace") self.assertEqual("correct", opt_mode) self.assertEqual(compare_xmbuffers(record_xml_output(patch), self.patch), "")
def test_correcting_added_field_with_diff_ind(self): """ BibUpload Revision Verifier - Rev3-100/970__/888, Added 970CP in Rev2(100/970__), Patch Generated for 970CP""" upload_recs = xml_marc_to_records(self.rev2_mod_field_diff_ind) orig_recs = xml_marc_to_records(self.data["rev3"][0]) rev_verifier = RevisionVerifier() (opt_mode, patch, dummy_affected_tags) = rev_verifier.verify_revision(upload_recs[0], orig_recs[0], "replace") self.assertEqual("correct", opt_mode) self.assertEqual(compare_xmbuffers(record_xml_output(patch), self.patch_diff_ind), "")
def test_invalid_operation(self): """ BibUpload Revision Verifier - Incorrect opt_mode parameter.""" upload_recs = xml_marc_to_records(self.rev2_modified) orig_recs = xml_marc_to_records(self.data["rev3"][0]) rev_verifier = RevisionVerifier() for item in ["append", "format", "insert", "delete", "reference"]: self.assertEqual(rev_verifier.verify_revision(upload_recs[0], orig_recs[0], item), None)
def test_add_identical_conflict_field(self): """ BibUpload Revision Verifier - Rev3-100/970/888, Added identical 888 to Rev2(100/970), No conflict Expected""" upload_conf_rec = xml_marc_to_records(self.rev2_add_conf_field) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() #print "%s %s" % (upload_conf_rec[0], orig_recs[0]), self.data self.assert_( rev_verifier.verify_revision(upload_conf_rec[0], orig_recs[0], 'replace'))
def test_interchanged_fields(self): """ BibUpload Revision Verifier - Rev1--100-1/100-2/100-3/970/888, Rev1-Up--100-2/100-3/100-1/970/888, Patch Generated for 100""" upload_recs = xml_marc_to_records(self.rev1_mod) orig_recs = xml_marc_to_records(self.rev1) rev_verifier = RevisionVerifier() (opt_mode, patch, dummy_affected_tags) = rev_verifier.verify_revision(upload_recs[0], orig_recs[0], "replace") self.assertEqual("correct", opt_mode) self.assertEqual(compare_xmbuffers(record_xml_output(patch), self.patch), "")
def test_add_identical_field(self): """ BibUpload Revision Verifier - Rev3-100/970/888, Added 100 to Rev2(100/970), Patch Generated for 100""" upload_identical_rec = xml_marc_to_records(self.rev2_add_sim_field) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() (opt_mode, patch, dummy_affected_tags) = rev_verifier.verify_revision(upload_identical_rec[0], \ orig_recs[0], \ 'replace') self.assertEqual('correct', opt_mode) self.assertEqual(compare_xmbuffers(record_xml_output(patch), self.patch_identical_field), '')
def test_for_special_delete_field(self): """ BibUpload Revision Verifier - Rev1-100/300, Modified 100 in Rev1-Mod, Deleted 300 in Rev1-Mod (100/300), Patch for DELETE generated""" upload_rec = xml_marc_to_records(self.rev1_mod) orig_rec = xml_marc_to_records(self.rev1) rev_verifier = RevisionVerifier() (opt_mode, final_patch, dummy_affected_tags) = rev_verifier.verify_revision(upload_rec[0], \ orig_rec[0], \ 'replace') self.assertEqual('correct', opt_mode) self.failUnless((compare_xmbuffers(self.patch_1, record_xml_output(final_patch))!='') or \ (compare_xmbuffers(self.patch_2, record_xml_output(final_patch))!=''))
def test_correcting_added_field_with_diff_ind(self): """ BibUpload Revision Verifier - Rev3-100/970__/888, Added 970CP in Rev2(100/970__), Patch Generated for 970CP""" upload_recs = xml_marc_to_records(self.rev2_mod_field_diff_ind) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() (opt_mode, patch, dummy_affected_tags) = rev_verifier.verify_revision( upload_recs[0], \ orig_recs[0], \ 'replace') self.assertEqual('correct', opt_mode) self.assertEqual(compare_xmbuffers(record_xml_output(patch), self.patch_diff_ind), '')
def test_invalid_operation(self): """ BibUpload Revision Verifier - Incorrect opt_mode parameter.""" upload_recs = xml_marc_to_records(self.rev2_modified) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() for item in ['append', 'format', 'insert', 'delete', 'reference']: self.assertEqual(rev_verifier.verify_revision( upload_recs[0], \ orig_recs[0], \ item), None)
def test_interchanged_fields(self): """ BibUpload Revision Verifier - Rev1--100-1/100-2/100-3/970/888, Rev1-Up--100-2/100-3/100-1/970/888, Patch Generated for 100""" upload_recs = xml_marc_to_records(self.rev1_mod) orig_recs = xml_marc_to_records(self.rev1) rev_verifier = RevisionVerifier() (opt_mode, patch, dummy_affected_tags) = rev_verifier.verify_revision( upload_recs[0], \ orig_recs[0], \ 'replace') self.assertEqual('correct', opt_mode) self.assertEqual(compare_xmbuffers(record_xml_output(patch), self.patch), '')
def test_correcting_del_field_add_field_diff_ind(self): """ BibUpload Revision Verifier - Rev3-100/970__/888, Deleted 970__ and Added 970CP in Rev2(100/970__), Patch Generated for 970__/970CP""" upload_recs = xml_marc_to_records(self.rev2_mod_del_one_add_one) orig_recs = xml_marc_to_records(self.data["rev3"][0]) rev_verifier = RevisionVerifier() (opt_mode, patch, dummy_affected_tags) = rev_verifier.verify_revision(upload_recs[0], orig_recs[0], "replace") self.assertEqual("correct", opt_mode) # NOTE:for multiple fields in patch it is better to compare with different possible patch strings # This is due to unsorted key-value pairs of generated patch dictionary # self.assertEqual(compare_xmbuffers(record_xml_output(patch), self.patch_del_one_add_one), '') self.failUnless( (compare_xmbuffers(record_xml_output(patch), self.patch_del_one_add_one) != "") or (compare_xmbuffers(record_xml_output(patch), self.patch_del_one_add_one_2) != "") )
def test_correcting_del_field_add_field_diff_ind(self): """ BibUpload Revision Verifier - Rev3-100/970__/888, Deleted 970__ and Added 970CP in Rev2(100/970__), Patch Generated for 970__/970CP""" upload_recs = xml_marc_to_records(self.rev2_mod_del_one_add_one) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() (opt_mode, patch, dummy_affected_tags) = rev_verifier.verify_revision( upload_recs[0], \ orig_recs[0], \ 'replace') self.assertEqual('correct', opt_mode) #NOTE:for multiple fields in patch it is better to compare with different possible patch strings #This is due to unsorted key-value pairs of generated patch dictionary #self.assertEqual(compare_xmbuffers(record_xml_output(patch), self.patch_del_one_add_one), '') self.failUnless((compare_xmbuffers(record_xml_output(patch), self.patch_del_one_add_one)!='') \ or (compare_xmbuffers(record_xml_output(patch), self.patch_del_one_add_one_2)!=''))
def test_add_conflict_field(self): """ BibUpload Revision Verifier - Rev3-100/970/888, Added 888 to Rev2(100/970), Conflict Expected""" upload_conf_rec = xml_marc_to_records(self.rev2_add_conf_field) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() self.assertRaises(InvenioBibUploadConflictingRevisionsError, \ rev_verifier.verify_revision, \ upload_conf_rec[0], \ orig_recs[0], \ 'replace')
def test_conflicting_modfield(self): """ BibUpload Revision Verifier - Rev3-100/970/888, Added 100 to Rev2(100/970), Rev3 100 modified, Conflict Expected""" upload_identical_rec = xml_marc_to_records(self.rev2_add_sim_field) orig_recs = xml_marc_to_records(self.rev3_mod) rev_verifier = RevisionVerifier() self.assertRaises(InvenioBibUploadConflictingRevisionsError, \ rev_verifier.verify_revision, \ upload_identical_rec[0], \ orig_recs[0], \ 'replace')
def test_conflicting_deleted_field(self): """ BibUpload Revision Verifier - Rev3-100/970/888, Modified 970 in Rev2(100/970), 970 removed in Rev3, Conflict Expected""" upload_conf_recs = xml_marc_to_records(self.rev2_mod_field) orig_recs = xml_marc_to_records(self.rev3_deleted) rev_verifier = RevisionVerifier() self.assertRaises( InvenioBibUploadConflictingRevisionsError, \ rev_verifier.verify_revision, \ upload_conf_recs[0], \ orig_recs[0], \ 'replace')
def test_unchanged_record_upload(self): """ BibUpload Revision Verifier - Uploading Unchanged Record, Raise UnchangedRecordError""" upload_recs = xml_marc_to_records(self.data['rev3'][0]) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() self.assertRaises(InvenioBibUploadUnchangedRecordError, \ rev_verifier.verify_revision, \ upload_recs[0], \ orig_recs[0], \ 'replace')
def test_invalid_revision(self): """ BibUpload Revision Verifier - Wrong Revision in the Upload Record, Raise InvalidRevisionError""" self.rev2_modified = self.rev2_modified.replace( '<controlfield tag="005">20110101000000.0</controlfield>', \ '<controlfield tag="005">20110101020304.0</controlfield>') rev_verifier = RevisionVerifier() upload_recs = xml_marc_to_records(self.rev2_modified) orig_recs = xml_marc_to_records(self.data['rev3'][0]) self.assertRaises(InvenioBibUploadInvalidRevisionError, \ rev_verifier.verify_revision, \ upload_recs[0], \ orig_recs[0], \ 'replace')
def test_missing_revision(self): """ BibUpload Revision Verifier - Missing 005 Tag scenario, Raise Missing005Error.""" self.rev2_modified = self.rev2_modified.replace( '<controlfield tag="005">20110101000000.0</controlfield>', \ '') upload_recs = xml_marc_to_records(self.rev2_modified) orig_recs = xml_marc_to_records(self.data['rev3'][0]) rev_verifier = RevisionVerifier() self.assertRaises(InvenioBibUploadMissing005Error, \ rev_verifier.verify_revision, \ upload_recs[0], \ orig_recs[0], \ 'replace')