class BibCheckAmendableRecordTest(InvenioTestCase): """ Check the AmendableRecord class """ def setUp(self): """ Create a mock amenda record to test with """ self.record = AmendableRecord(MOCK_RECORD) self.record.set_rule(RULE_MOCK) def test_valid(self): """ Test the set_invalid method """ self.assertTrue(self.record.valid) self.record.set_invalid("test message") self.assertFalse(self.record.valid) self.assertEqual(self.record.errors, ["Rule test_rule: test message"]) def test_amend(self): """ Test the amend method """ self.assertFalse(self.record.amendments) self.record.amend_field(("100__a", 0, 0), "Pepe", "Changed author") self.assertEqual(self.record["100"][0][0][0][1], "Pepe") self.assertTrue(self.record.amended) self.assertEqual(self.record.amendments, ["Rule test_rule: Changed author"]) def test_itertags(self): """ Test the itertags method """ self.assertEqual( set(self.record.keys()), set(self.record.itertags("%%%")) ) self.assertEqual(set(['100']), set(self.record.itertags("100"))) self.assertEqual(set(['001', '005']), set(self.record.itertags("00%"))) self.assertEqual(set(), set(self.record.itertags("111"))) def test_iterfields(self): """ Test the iterfields method """ self.assertEqual(set(), set(self.record.iterfields(["111%%%"]))) self.assertEqual( set([(("100__a", 0, 0), "Pepe")]), set(self.record.iterfields(["1%%%%%"])) ) self.assertEqual( set([(("9944_u", 0, 0), self.record["994"][0][0][0][1]), (("9954_u", 0, 0), self.record["995"][0][0][0][1]), (("9964_u", 0, 0), self.record["996"][0][0][0][1]), (("9974_u", 0, 0), self.record["997"][0][0][0][1]), (("9984_u", 0, 0), self.record["998"][0][0][0][1]), (("9994_u", 0, 0), self.record["999"][0][0][0][1])]), set(self.record.iterfields(["9%%%%u"])) ) def test_is_dummy(self): """ Test the is_dummy method """ dummy_record = { '001': [([], ' ', ' ', '1', 1)] } record = AmendableRecord(dummy_record) self.assertTrue(record.is_dummy())
def assertFails(self, test, **kwargs): """ Assert that the plugin test marks the record as invalid when called with params kwargs. """ record = AmendableRecord(MOCK_RECORD) record.set_rule(RULE_MOCK) test.check_record(record, **kwargs) self.assertFalse(record.valid) self.assertTrue(len(record._errors) > 0)
def assertFails(self, test, **kwargs): """ Assert that the plugin test marks the record as invalid when called with params kwargs. """ record = AmendableRecord(MOCK_RECORD) record.set_rule(RULE_MOCK) test.check_record(record, **kwargs) self.assertFalse(record.valid) self.assertTrue(len(record.errors) > 0)
def assertOk(self, test, **kwargs): """ Assert that the plugin test doesn't make any modification to the record when called with params kwargs. """ record = AmendableRecord(MOCK_RECORD) record.set_rule(RULE_MOCK) test.check_record(record, **kwargs) self.assertTrue(record.valid) self.assertFalse(record.amended) self.assertEqual(len(record._amendments), 0) self.assertEqual(len(record._errors), 0)
def assertOk(self, test, **kwargs): """ Assert that the plugin test doesn't make any modification to the record when called with params kwargs. """ record = AmendableRecord(MOCK_RECORD) record.set_rule(RULE_MOCK) test.check_record(record, **kwargs) self.assertTrue(record.valid) self.assertFalse(record.amended) self.assertEqual(len(record.amendments), 0) self.assertEqual(len(record.errors), 0)
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')))
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 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)
class BibCheckAmendableRecordTest(InvenioTestCase): """ Check the AmendableRecord class """ def setUp(self): """ Create a mock amenda record to test with """ self.record = AmendableRecord(MOCK_RECORD) self.record.set_rule(RULE_MOCK) def test_valid(self): """ Test the set_invalid method """ self.assertTrue(self.record.valid) self.record.set_invalid("test message") self.assertFalse(self.record.valid) self.assertEqual(len(self.record._errors), 1) error = self.record._errors[0] self.assertEqual(error.nature, "error") self.assertEqual(error.rule, "test_rule") self.assertEqual(error.msg, "test message") def test_amend(self): """ Test the amend method """ self.assertFalse(self.record._amendments) self.record.amend_field(("100__a", 0, 0), "Pepe", "Changed author") self.assertEqual(self.record["100"][0][0][0][1], "Pepe") self.assertTrue(self.record.amended) self.assertEqual(len(self.record._amendments), 1) amendment = self.record._amendments[0] self.assertEqual(amendment.nature, "amendment") self.assertEqual(amendment.rule, "test_rule") self.assertEqual(amendment.msg, "Changed author") def test_itertags(self): """ Test the itertags method """ self.assertEqual(set(self.record.keys()), set(self.record.itertags("%%%"))) self.assertEqual(set(['100']), set(self.record.itertags("100"))) self.assertEqual(set(['001', '005']), set(self.record.itertags("00%"))) self.assertEqual(set(), set(self.record.itertags("111"))) def test_iterfields(self): """ Test the iterfields method """ self.assertEqual(set(), set(self.record.iterfields(["111%%%"]))) self.assertEqual(set([(("100__a", 0, 0), "Pepe")]), set(self.record.iterfields(["1%%%%%"]))) self.assertEqual( set([(("695__a", 0, 0, 1), "gravitation: nonlocal")]), set( self.record.iterfields(["695__a"], subfield_filter=('2', 'INSPIRE')))) self.assertEqual( set([(("696__a", 0, 1, 0), "gravitation: nonlocal")]), set( self.record.iterfields(["696__a"], subfield_filter=('2', 'INSPIRE')))) self.assertEqual( set(), set( self.record.iterfields(["697__a"], subfield_filter=('2', 'INSPIRE')))) self.assertEqual( set([(("698__a", 0, 0, 2), "gravitation: nonlocal"), (("698__a", 0, 1, 2), "propagator"), (("698__a", 0, 3, 2), "singularity")]), set( self.record.iterfields(["698__a"], subfield_filter=('2', 'INSPIRE')))) self.assertEqual( set([(("699__a", 0, 1, 0), "gravitation"), (("699__a", 1, 1, 0), "antigravitation")]), set( self.record.iterfields(["699__a"], subfield_filter=('2', 'INSPIRE')))) self.assertEqual( set([(("9944_u", 0, 0), self.record["994"][0][0][0][1]), (("9954_u", 0, 0), self.record["995"][0][0][0][1]), (("9964_u", 0, 0), self.record["996"][0][0][0][1]), (("9974_u", 0, 0), self.record["997"][0][0][0][1]), (("9984_u", 0, 0), self.record["998"][0][0][0][1]), (("9994_u", 0, 0), self.record["999"][0][0][0][1])]), set(self.record.iterfields(["9%%%%u"]))) def test_is_dummy(self): """ Test the is_dummy method """ dummy_record = {'001': [([], ' ', ' ', '1', 1)]} record = AmendableRecord(dummy_record) self.assertTrue(record.is_dummy())