package com.bitmonlab.osiris.api.map.managers.impl;
import java.util.Collection;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.powermock.core.classloader.annotations.PrepareForTest;
import com.bitmonlab.osiris.api.core.map.dao.api.FeatureRepository;
import com.bitmonlab.osiris.api.core.map.dao.api.MapRepository;
import com.bitmonlab.osiris.api.core.map.exceptions.QueryException;
import com.bitmonlab.osiris.api.core.map.managers.impl.SearchManagerImpl;
import com.bitmonlab.osiris.api.core.map.transferobject.LayerDTO;
import com.bitmonlab.osiris.commons.map.model.geojson.Feature;
@RunWith(MockitoJUnitRunner.class)
//@RunWith(PowerMockRunner.class)
@PrepareForTest({SearchManagerImpl.class, Integer.class})
public class SearchManagerImplTest {
@InjectMocks
private SearchManagerImpl searchManagerImpl;
@Mock
private FeatureRepository featureRepository;
@Mock
private MapRepository mapRepository;
@Mock
private Collection<Feature> collectionFeatures;
@Mock
private Collection<Feature> collectionMap;
@Test
public void getFeaturesByQueryAllTest() throws QueryException{
String idApplication = "9";
String query ="query";
Integer pageIndex=5;
Integer pageSize= 20;
LayerDTO layerDTO=LayerDTO.ALL;
//Fixture
Mockito.when(featureRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize)).thenReturn(collectionFeatures);
Mockito.when(mapRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize)).thenReturn(collectionMap);
//Experimentation
searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize);
//Expectation
Mockito.verify(featureRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize);
Mockito.verify(mapRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize);
Mockito.verify(collectionFeatures).addAll(collectionMap);
}
@Test
public void getFeaturesByQueryFeaturesTest() throws QueryException{
String idApplication = "9";
String query ="query";
Integer pageIndex=5;
Integer pageSize= 20;
LayerDTO layerDTO=LayerDTO.FEATURES;
//Fixture
Mockito.when(featureRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize)).thenReturn(collectionFeatures);
//Experimentation
searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize);
//Expectation
Mockito.verify(featureRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize);
}
@Test
public void getFeaturesByQueryMapTest() throws QueryException{
String idApplication = "9";
String query ="query";
Integer pageIndex=5;
Integer pageSize= 20;
LayerDTO layerDTO=LayerDTO.MAP;
//Fixture
Mockito.when(mapRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize)).thenReturn(collectionFeatures);
//Experimentation
searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize);
//Expectation
Mockito.verify(mapRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize);
}
@Test
public void getFeaturesByQueryAllWithOrderTest() throws QueryException{
String idApplication = "9";
String query ="query";
Integer pageIndex=5;
Integer pageSize= 20;
LayerDTO layerDTO=LayerDTO.ALL;
String orderField="field";
String order="ASC";
//Fixture
Mockito.when(featureRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize, orderField, order)).thenReturn(collectionFeatures);
Mockito.when(mapRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize, orderField, order)).thenReturn(collectionMap);
//Experimentation
searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize, orderField, order);
//Expectation
Mockito.verify(featureRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize, orderField, order);
Mockito.verify(mapRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize, orderField, order);
Mockito.verify(collectionFeatures).addAll(collectionMap);
}
@Test
public void getFeaturesByQueryFeaturesWithOrderTest() throws QueryException{
String idApplication = "9";
String query ="query";
Integer pageIndex=5;
Integer pageSize= 20;
LayerDTO layerDTO=LayerDTO.FEATURES;
String orderField="field";
String order="ASC";
//Fixture
Mockito.when(featureRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize, orderField, order)).thenReturn(collectionFeatures);
//Experimentation
searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize, orderField, order);
//Expectation
Mockito.verify(featureRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize, orderField, order);
}
@Test
public void getFeaturesByQueryMapWithOrderTest() throws QueryException{
String idApplication = "9";
String query ="query";
Integer pageIndex=5;
Integer pageSize= 20;
LayerDTO layerDTO=LayerDTO.MAP;
String orderField="field";
String order="ASC";
//Fixture
Mockito.when(mapRepository.searchIDAppAndQuery(idApplication,query, pageIndex, pageSize, orderField, order)).thenReturn(collectionFeatures);
//Experimentation
searchManagerImpl.getFeaturesByQuery(idApplication, query, layerDTO, pageIndex, pageSize, orderField, order);
//Expectation
Mockito.verify(mapRepository).searchIDAppAndQuery(idApplication, query, pageIndex, pageSize, orderField, order);
}
}