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])