/* * Copyright 2016-2017 Hewlett Packard Enterprise Development Company, L.P. * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. */ package com.hp.autonomy.frontend.find.idol.comparison; import com.autonomy.aci.client.services.AciErrorException; import com.hp.autonomy.frontend.find.idol.comparison.ComparisonRequest.Builder; import com.hp.autonomy.searchcomponents.idol.search.IdolDocumentsService; import com.hp.autonomy.searchcomponents.idol.search.IdolQueryRestrictions; import com.hp.autonomy.searchcomponents.idol.search.IdolSearchResult; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.util.Collections; import java.util.List; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class ComparisonControllerTest { private static final String MOCK_STATE_TOKEN_1 = "abc"; private static final String MOCK_STATE_TOKEN_2 = "def"; @Mock private ComparisonService<IdolSearchResult, AciErrorException> comparisonService; @Mock private IdolDocumentsService documentsService; private ComparisonController<IdolQueryRestrictions, IdolSearchResult, AciErrorException> comparisonController; @Mock private IdolQueryRestrictions queryRestrictions; @SuppressWarnings("unchecked") @Before public void setUp() throws Exception { comparisonController = new ComparisonController<>(comparisonService, documentsService); when(documentsService.getStateToken(any(), anyInt(), anyBoolean())) .thenReturn(MOCK_STATE_TOKEN_1); } @Test public void compareStateTokens() throws AciErrorException { final ComparisonRequest<IdolQueryRestrictions> comparisonRequest = new Builder<IdolQueryRestrictions>() .setFirstQueryStateToken(MOCK_STATE_TOKEN_1) .setSecondQueryStateToken(MOCK_STATE_TOKEN_2) .build(); comparisonController.getCompareStateTokens(comparisonRequest); verify(comparisonService).getCompareStateTokens(eq(MOCK_STATE_TOKEN_1), eq(MOCK_STATE_TOKEN_2)); } @Test public void compareTokenAndRestriction() throws AciErrorException { final ComparisonRequest<IdolQueryRestrictions> comparisonRequest = new Builder<IdolQueryRestrictions>() .setFirstQueryStateToken(MOCK_STATE_TOKEN_1) .setSecondRestrictions(queryRestrictions) .build(); comparisonController.getCompareStateTokens(comparisonRequest); verify(comparisonService).getCompareStateTokens(eq(MOCK_STATE_TOKEN_1), eq(MOCK_STATE_TOKEN_1)); } @Test public void compareRestrictionAndToken() throws AciErrorException { final ComparisonRequest<IdolQueryRestrictions> comparisonRequest = new Builder<IdolQueryRestrictions>() .setFirstRestrictions(queryRestrictions) .setSecondQueryStateToken(MOCK_STATE_TOKEN_2) .build(); comparisonController.getCompareStateTokens(comparisonRequest); verify(comparisonService).getCompareStateTokens(eq(MOCK_STATE_TOKEN_1), eq(MOCK_STATE_TOKEN_2)); } @Test public void compareRestrictions() throws AciErrorException { final ComparisonRequest<IdolQueryRestrictions> comparisonRequest = new Builder<IdolQueryRestrictions>() .setFirstRestrictions(queryRestrictions) .setSecondRestrictions(queryRestrictions) .build(); comparisonController.getCompareStateTokens(comparisonRequest); verify(comparisonService).getCompareStateTokens(eq(MOCK_STATE_TOKEN_1), eq(MOCK_STATE_TOKEN_1)); } @Test public void getResults() throws AciErrorException { final List<String> stateMatchIds = Collections.singletonList(MOCK_STATE_TOKEN_1); final List<String> stateDontMatchIds = Collections.singletonList(MOCK_STATE_TOKEN_2); final String text = "*"; final String fieldText = "EXISTS{}:LATITUDE AND EXISTS{}:LONGITUDE"; final int start = 3; final int maxResults = 6; final String summary = "context"; final String sort = "relevance"; final boolean highlight = true; comparisonController.getResults(stateMatchIds, stateDontMatchIds, text, fieldText, start, maxResults, summary, sort, highlight, false); verify(comparisonService).getResults(eq(stateMatchIds), eq(stateDontMatchIds), eq(text), eq(fieldText), eq(start), eq(maxResults), eq(summary), eq(sort), eq(highlight)); } }