コード例 #1
0
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())
コード例 #2
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)
コード例 #3
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)
コード例 #4
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)
コード例 #5
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)
コード例 #6
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')))
コード例 #7
0
 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)
コード例 #8
0
 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)
コード例 #9
0
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())