package com.bitmonlab.osiris.api.map.rest.impl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import javax.ws.rs.core.Response;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.bitmonlab.osiris.core.validations.validator.Validations;
import com.bitmonlab.osiris.api.core.map.assemblers.MetaDataAssemblerImpl;
import com.bitmonlab.osiris.api.core.map.managers.impl.MetaDataManagerImpl;
import com.bitmonlab.osiris.api.core.map.transferobject.MetaDataDTO;
import com.bitmonlab.osiris.api.map.rest.impl.MetaDataResourceImpl;
import com.bitmonlab.osiris.commons.map.model.geojson.MetaData;
import com.bitmonlab.osiris.commons.model.security.BasicAuth;
@RunWith(PowerMockRunner.class)
@PrepareForTest({MetaDataResourceImpl.class})
public class MetaDataResourceImplTest {
@InjectMocks
private MetaDataResourceImpl metaDataResourceImpl;
@Mock
private MetaDataManagerImpl metaDataManagerImpl;
@Mock
private MetaDataAssemblerImpl metaDataAssemblerImpl;
@Mock
private MetaData metaData;
@Mock
private MetaDataDTO metaDataDTO;
@Mock
private Validations validations;
@Mock
private BasicAuth principal;
@Test
public void getMetaData() throws Exception{
String appIdentifier = "1";
//Fixture
Mockito.when(metaDataManagerImpl.getMetaData(appIdentifier)).thenReturn(metaData);
Mockito.when(metaDataAssemblerImpl.createDataTransferObject(metaData)).thenReturn(metaDataDTO);
//Experimentation
Response response = metaDataResourceImpl.getMetaData(principal, appIdentifier);
//Expectation
Mockito.verify(validations).checkIsNotNullAndNotBlank(appIdentifier);
assertNotNull(response.getEntity());
assertEquals("FeatureDTO is not the expected", metaDataDTO, (MetaDataDTO) response.getEntity());
assertEquals("The Status response is not the expected", 200, response.getStatus());
}
}