/*
* Copyright 2015 Hewlett-Packard 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.fields;
import com.autonomy.aci.client.services.AciErrorException;
import com.hp.autonomy.frontend.find.core.fields.AbstractFieldsControllerTest;
import com.hp.autonomy.frontend.find.core.fields.FieldAndValueDetails;
import com.hp.autonomy.frontend.find.idol.configuration.IdolFindConfig;
import com.hp.autonomy.searchcomponents.idol.beanconfiguration.HavenSearchIdolConfiguration;
import com.hp.autonomy.searchcomponents.idol.fields.IdolFieldsRequest;
import com.hp.autonomy.searchcomponents.idol.fields.IdolFieldsRequestBuilder;
import com.hp.autonomy.searchcomponents.idol.fields.IdolFieldsService;
import com.hp.autonomy.searchcomponents.idol.parametricvalues.IdolParametricRequest;
import com.hp.autonomy.searchcomponents.idol.parametricvalues.IdolParametricRequestBuilder;
import com.hp.autonomy.searchcomponents.idol.parametricvalues.IdolParametricValuesService;
import com.hp.autonomy.searchcomponents.idol.search.IdolQueryRestrictions;
import com.hp.autonomy.searchcomponents.idol.search.IdolQueryRestrictionsBuilder;
import com.hp.autonomy.types.requests.idol.actions.tags.params.FieldTypeParam;
import org.mockito.Mock;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.List;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.when;
@SuppressWarnings("SpringJavaAutowiredMembersInspection")
@SpringBootTest(classes = HavenSearchIdolConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class IdolFieldsControllerTest extends AbstractFieldsControllerTest<IdolFieldsController, IdolFieldsRequest, AciErrorException, String, IdolQueryRestrictions, IdolParametricRequest, IdolFindConfig> {
@Mock
private IdolFieldsService idolFieldsService;
@Mock
private IdolParametricValuesService idolParametricValuesService;
@Mock
private ObjectFactory<IdolParametricRequestBuilder> parametricRequestBuilderFactory;
@Mock
private IdolParametricRequestBuilder parametricRequestBuilder;
@Mock
private ObjectFactory<IdolFieldsRequestBuilder> fieldsRequestBuilderFactory;
@Mock
private IdolFieldsRequestBuilder fieldsRequestBuilder;
@Mock
private IdolFieldsRequest fieldsRequest;
@Mock
private ObjectFactory<IdolQueryRestrictionsBuilder> queryRestrictionsBuilderFactory;
@Mock
private IdolQueryRestrictionsBuilder queryRestrictionsBuilder;
@Mock
private IdolFindConfig idolFindConfig;
@Override
protected IdolFieldsController constructController() {
when(parametricRequestBuilderFactory.getObject()).thenReturn(parametricRequestBuilder);
when(parametricRequestBuilder.fieldNames(any())).thenReturn(parametricRequestBuilder);
when(parametricRequestBuilder.queryRestrictions(any())).thenReturn(parametricRequestBuilder);
when(fieldsRequestBuilderFactory.getObject()).thenReturn(fieldsRequestBuilder);
when(fieldsRequestBuilder.fieldTypes(any())).thenReturn(fieldsRequestBuilder);
when(fieldsRequestBuilder.build()).thenReturn(fieldsRequest);
when(queryRestrictionsBuilderFactory.getObject()).thenReturn(queryRestrictionsBuilder);
when(queryRestrictionsBuilder.queryText(anyString())).thenReturn(queryRestrictionsBuilder);
when(queryRestrictionsBuilder.databases(any())).thenReturn(queryRestrictionsBuilder);
return new IdolFieldsController(idolFieldsService, idolParametricValuesService, parametricRequestBuilderFactory, fieldComparatorFactory, tagNameFactory, configService, fieldsRequestBuilderFactory, queryRestrictionsBuilderFactory);
}
@Override
protected IdolFieldsService constructService() {
return idolFieldsService;
}
@Override
protected IdolParametricValuesService constructParametricValuesService() {
return idolParametricValuesService;
}
@Override
protected IdolFindConfig mockConfig() {
return idolFindConfig;
}
@Override
protected List<FieldAndValueDetails> getParametricFields(final FieldTypeParam... fieldTypes) {
when(fieldsRequest.getFieldTypes()).thenReturn(Arrays.asList(fieldTypes));
return controller.getParametricFields(Arrays.asList(fieldTypes));
}
}