def __init__(self, test_session=None): # Allows tests to run without db session overlap. if test_session: self._session = test_session self.coverage = LinkedDataCoverageProvider(self._db) self.oclc_classify = OCLCClassifyCoverageProvider(self._db) self.viaf = VIAFClient(self._db)
def setup(self): super(TestOCLCClassifyCoverageProvider, self).setup() self.edition, ignore = self._edition( with_license_pool=True, data_source_name=DataSource.GUTENBERG ) self.identifier = self.edition.primary_identifier self.api = MockOCLCClassifyAPI() self.provider = OCLCClassifyCoverageProvider(self._db, api=self.api)
def providers(self): """Instantiate required and optional CoverageProviders. All Identifiers in this Collection's catalog will be run through each provider. If an optional provider fails, nothing will happen. If a required provider fails, the coverage operation as a whole will fail. NOTE: This method creates CoverageProviders that go against real servers. Because of this, tests must use a subclass that mocks providers(), such as MockIdentifierResolutionCoverageProvider. """ # All books must be run through Content Cafe and OCLC # Classify, assuming their identifiers are of the right # type. content_cafe = ContentCafeCoverageProvider(self._db, api=self.content_cafe_api, uploader=self.uploader) oclc_classify = OCLCClassifyCoverageProvider(self._db) optional = [] required = [content_cafe, oclc_classify] # All books derived from OPDS import against the open-access # content server must be looked up in that server. # # TODO: This could stand some generalization. Any OPDS server # that also supports the lookup protocol can be used here. if (self.collection.protocol == ExternalIntegration.OPDS_IMPORT and self.collection.data_source and self.collection.data_source.name == DataSource.OA_CONTENT_SERVER): required.append(LookupClientCoverageProvider(self.collection)) # All books obtained from Overdrive must be looked up via the # Overdrive API. if self.collection.protocol == ExternalIntegration.OVERDRIVE: required.append( OverdriveBibliographicCoverageProvider( self.collection, api_class=self.overdrive_api)) return optional, required