Пример #1
0
    def test_set_equivalence(self):
        edition = self._edition()
        edition.title = "The House on Mango Street"
        edition.add_contributor(Contributor(viaf="112460612"),
                                Contributor.AUTHOR_ROLE)
        identifier = edition.primary_identifier

        i1 = self._identifier()
        identifierdata1 = IdentifierData(type=i1.type,
                                         identifier=i1.identifier)
        good_metadata = Metadata(DataSource.lookup(self._db,
                                                   DataSource.GUTENBERG),
                                 primary_identifier=identifierdata1,
                                 title="The House on Mango Street",
                                 contributors=[Contributor(viaf="112460612")])

        i2 = self._identifier()
        identifierdata2 = IdentifierData(type=i2.type,
                                         identifier=i2.identifier)
        bad_metadata = Metadata(DataSource.lookup(self._db,
                                                  DataSource.GUTENBERG),
                                primary_identifier=identifierdata2,
                                title="Calvin & Hobbes",
                                contributors=[Contributor(viaf="101010")])

        self.provider.set_equivalence(identifier, good_metadata)
        self.provider.set_equivalence(identifier, bad_metadata)
        equivalencies = Equivalency.for_identifiers(self._db,
                                                    [identifier]).all()

        # The identifier for the bad metadata isn't made equivalent
        eq_([i1], [x.output for x in equivalencies])
        eq_([1], [x.strength for x in equivalencies])

        # But if the existing identifier has no editions, they're made equivalent.
        identifier = self._identifier()
        self.provider.set_equivalence(identifier, bad_metadata)
        equivalencies = Equivalency.for_identifiers(self._db,
                                                    [identifier]).all()
        eq_([i2], [x.output for x in equivalencies])
        eq_([1], [x.strength for x in equivalencies])