Search in sources :

Example 6 with SearchRequest

use of org.nzbhydra.searching.searchrequests.SearchRequest in project nzbhydra2 by theotherp.

the class BinsearchTest method shouldAddRequiredWords.

@Test
public void shouldAddRequiredWords() throws IndexerSearchAbortedException {
    SearchRequest searchRequest = new SearchRequest(SearchSource.INTERNAL, SearchType.SEARCH, 0, 100);
    searchRequest.getInternalData().setRequiredWords(Arrays.asList("a", "b"));
    searchRequest.setQuery("query");
    UriComponentsBuilder builder = testee.buildSearchUrl(searchRequest, 0, 100);
    assertThat(builder.build().toString(), is("https://www.binsearch.info/?adv_col=on&postdate=date&adv_sort=date&min=0&max=100&q=query a b"));
}
Also used : SearchRequest(org.nzbhydra.searching.searchrequests.SearchRequest) UriComponentsBuilder(org.springframework.web.util.UriComponentsBuilder) Test(org.junit.Test)

Example 7 with SearchRequest

use of org.nzbhydra.searching.searchrequests.SearchRequest in project nzbhydra2 by theotherp.

the class IndexerTest method shouldUseFallback.

@Test
public void shouldUseFallback() throws Exception {
    SearchRequest searchRequest = new SearchRequest(SearchSource.INTERNAL, SearchType.SEARCH, 0, 100);
    Map<IdType, String> identifiers = new HashMap<>();
    identifiers.put(IdType.IMDB, "123");
    searchRequest.setIdentifiers(identifiers);
    SearchResultItem item = new SearchResultItem();
    item.setIndexer(indexerMock);
    item.setIndexerGuid("indexerGuid");
    // searchResultItemsToReturn = Arrays.asList(item);
    IndexerSearchResult search = testee.search(searchRequest, 0, 100);
    verify(testee, times(2)).searchInternal(searchRequestCaptor.capture(), anyInt(), anyInt());
}
Also used : SearchRequest(org.nzbhydra.searching.searchrequests.SearchRequest) HashMap(java.util.HashMap) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) IdType(org.nzbhydra.mediainfo.InfoProvider.IdType) Test(org.junit.Test)

Example 8 with SearchRequest

use of org.nzbhydra.searching.searchrequests.SearchRequest in project nzbhydra2 by theotherp.

the class NewznabTest method shouldThrowAuthException.

@Test(expected = IndexerAuthException.class)
public void shouldThrowAuthException() throws Exception {
    doReturn(new NewznabXmlError("101", "Wrong API key")).when(testee).getAndStoreResultToDatabase(any(), eq(Xml.class), eq(IndexerApiAccessType.SEARCH));
    doNothing().when(testee).handleFailure(errorMessageCaptor.capture(), disabledPermanentlyCaptor.capture(), any(IndexerApiAccessType.class), any(), indexerApiAccessResultCaptor.capture());
    testee.searchInternal(new SearchRequest(SearchSource.INTERNAL, SearchType.SEARCH, 0, 100), 0, 100);
}
Also used : SearchRequest(org.nzbhydra.searching.searchrequests.SearchRequest) Test(org.junit.Test)

Example 9 with SearchRequest

use of org.nzbhydra.searching.searchrequests.SearchRequest in project nzbhydra2 by theotherp.

the class NewznabTest method shouldGenerateQueryIfFallbackRequested.

@Test
public void shouldGenerateQueryIfFallbackRequested() throws Exception {
    testee.config = new IndexerConfig();
    baseConfig.getSearching().setGenerateQueries(SearchSourceRestriction.BOTH);
    testee.config.setHost("http://www.indexer.com");
    testee.config.setSupportedSearchIds(Arrays.asList(IdType.TVDB));
    testee.config.setSupportedSearchTypes(Arrays.asList(ActionAttribute.TVSEARCH, ActionAttribute.SEARCH));
    SearchRequest searchRequest = new SearchRequest(SearchSource.INTERNAL, SearchType.TVSEARCH, 0, 100);
    searchRequest.getInternalData().setFallbackState(FallbackState.REQUESTED);
    searchRequest.getIdentifiers().put(IdType.TVDB, "tvdbId");
    when(infoProviderMock.canConvert(any(), any())).thenReturn(false);
    MediaInfo mediaInfo = new MediaInfo();
    mediaInfo.setTitle("someShow");
    when(infoProviderMock.convert("tvdbId", IdType.TVDB)).thenReturn(mediaInfo);
    assertEquals("someShow", testee.generateQueryIfApplicable(searchRequest, ""));
    // Don't add season/episode for fallback queries
    searchRequest.getInternalData().setFallbackState(FallbackState.REQUESTED);
    searchRequest.setSeason(1);
    searchRequest.setEpisode("1");
    assertEquals("someShow", testee.generateQueryIfApplicable(searchRequest, ""));
}
Also used : SearchRequest(org.nzbhydra.searching.searchrequests.SearchRequest) MediaInfo(org.nzbhydra.mediainfo.MediaInfo) Test(org.junit.Test)

Example 10 with SearchRequest

use of org.nzbhydra.searching.searchrequests.SearchRequest in project nzbhydra2 by theotherp.

the class NewznabTest method shouldAccountForRejectedResults.

@Test
public void shouldAccountForRejectedResults() throws Exception {
    List<NewznabXmlItem> items = Arrays.asList(RssItemBuilder.builder("title1").build(), RssItemBuilder.builder("title2").build(), RssItemBuilder.builder("title3").build(), RssItemBuilder.builder("title4").build(), RssItemBuilder.builder("title5").build());
    NewznabXmlRoot root = RssBuilder.builder().items(items).newznabResponse(100, 105).build();
    when(indexerWebAccessMock.get(any(), eq(testee.config), any())).thenReturn(root);
    // Two items will be rejected
    when(resultAcceptorMock.acceptResults(any(), any(), any())).thenAnswer(new Answer<AcceptorResult>() {

        @Override
        public AcceptorResult answer(InvocationOnMock invocation) throws Throwable {
            List<SearchResultItem> argument = invocation.getArgument(0);
            HashMultiset<String> reasonsForRejection = HashMultiset.create();
            reasonsForRejection.add("some reason", 2);
            return new AcceptorResult(argument.subList(0, 3), reasonsForRejection);
        }
    });
    IndexerSearchResult indexerSearchResult = testee.searchInternal(new SearchRequest(SearchSource.INTERNAL, SearchType.SEARCH, 0, 100), 0, 100);
    assertThat(indexerSearchResult.getSearchResultItems().size(), is(3));
    assertThat(indexerSearchResult.getTotalResults(), is(105));
    assertThat(indexerSearchResult.isHasMoreResults(), is(false));
    assertThat(indexerSearchResult.isTotalResultsKnown(), is(true));
}
Also used : AcceptorResult(org.nzbhydra.searching.SearchResultAcceptor.AcceptorResult) SearchRequest(org.nzbhydra.searching.searchrequests.SearchRequest) InvocationOnMock(org.mockito.invocation.InvocationOnMock) HashMultiset(com.google.common.collect.HashMultiset) Test(org.junit.Test)

Aggregations

SearchRequest (org.nzbhydra.searching.searchrequests.SearchRequest)48 Test (org.junit.Test)40 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)8 UriComponentsBuilder (org.springframework.web.util.UriComponentsBuilder)8 Stopwatch (com.google.common.base.Stopwatch)5 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)5 IdType (org.nzbhydra.mediainfo.InfoProvider.IdType)4 Iterables (com.google.common.collect.Iterables)3 Sets (com.google.common.collect.Sets)3 Instant (java.time.Instant)3 java.util (java.util)3 HashMap (java.util.HashMap)3 Collectors (java.util.stream.Collectors)3 ConfigProvider (org.nzbhydra.config.ConfigProvider)3 Indexer (org.nzbhydra.indexers.Indexer)3 LoggingMarkers (org.nzbhydra.logging.LoggingMarkers)3 MediaInfo (org.nzbhydra.mediainfo.MediaInfo)3 SearchSource (org.nzbhydra.searching.searchrequests.SearchRequest.SearchSource)3 Logger (org.slf4j.Logger)3 LoggerFactory (org.slf4j.LoggerFactory)3