def test_pick_indexers(self): config.settings.searching.generate_queries = [] config.settings.indexers.extend([self.newznab1, self.newznab2]) getIndexerSettingByName("womble").enabled = True getIndexerSettingByName("womble").accessType = "both" getIndexerSettingByName("nzbclub").enabled = True getIndexerSettingByName("nzbclub").accessType = "both" read_indexers_from_config() search_request = SearchRequest() indexers = search.pick_indexers(search_request) self.assertEqual(3, len(indexers)) # Indexers with tv search and which support queries (actually searching for particular releases) search_request.query = "bla" indexers = search.pick_indexers(search_request) self.assertEqual(3, len(indexers)) # Indexers with tv search, including those that only provide a list of latest releases (womble) but excluding the one that needs a query (nzbclub) search_request.query = None indexers = search.pick_indexers(search_request) self.assertEqual(3, len(indexers)) search_request.identifier_key = "tvdbid" indexers = search.pick_indexers(search_request) self.assertEqual(2, len(indexers)) self.assertEqual("newznab1", indexers[0].name) self.assertEqual("newznab2", indexers[1].name) search_request.identifier_key = "imdbid" search_request.category = getCategoryByName("movies") indexers = search.pick_indexers(search_request) self.assertEqual(1, len(indexers)) self.assertEqual("newznab1", indexers[0].name) # WIth query generation NZBClub should also be returned infos.title_from_id = mock config.settings.searching.generate_queries = ["internal"] search_request.identifier_key = "tvdbid" search_request.query = None search_request.category = None indexers = search.pick_indexers(search_request) self.assertEqual(3, len(indexers)) self.assertEqual("nzbclub", indexers[0].name) self.assertEqual("newznab1", indexers[1].name) self.assertEqual("newznab2", indexers[2].name) # Test picking depending on internal, external, both getIndexerSettingByName("womble").enabled = False getIndexerSettingByName("nzbclub").enabled = False getIndexerSettingByName("newznab1").accessType = "both" search_request.internal = True indexers = search.pick_indexers(search_request) self.assertEqual(2, len(indexers)) search_request.internal = False indexers = search.pick_indexers(search_request) self.assertEqual(2, len(indexers)) config.settings.indexers = [self.newznab1, self.newznab2] getIndexerSettingByName("newznab1").accessType = "external" read_indexers_from_config() search_request.internal = True indexers = search.pick_indexers(search_request) self.assertEqual(1, len(indexers)) search_request.internal = False indexers = search.pick_indexers(search_request) self.assertEqual(2, len(indexers)) getIndexerSettingByName("newznab1").accessType = "internal" read_indexers_from_config() search_request.internal = True indexers = search.pick_indexers(search_request) self.assertEqual(2, len(indexers)) search_request.internal = False indexers = search.pick_indexers(search_request) self.assertEqual(1, len(indexers))