Esempio n. 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())
Esempio n. 2
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())