package uk.ac.ox.zoo.seeg.abraid.mp.common.service.core; import org.junit.Before; import org.junit.Test; import uk.ac.ox.zoo.seeg.abraid.mp.common.dao.DistanceToExtentCacheEntryDao; import uk.ac.ox.zoo.seeg.abraid.mp.common.dao.EnvironmentalSuitabilityCacheEntryDao; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DistanceToExtentCacheEntry; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.EnvironmentalSuitabilityCacheEntry; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.ValidationParameterCacheEntryId; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.*; /** * Tests for ValidationParameterCacheService. * Copyright (c) 2015 University of Oxford */ public class ValidationParameterCacheServiceTest { private DistanceToExtentCacheEntryDao distanceToExtentCacheEntryDao; private EnvironmentalSuitabilityCacheEntryDao environmentalSuitabilityCacheEntryDao; private ValidationParameterCacheService validationParameterCacheService; @Before public void setUp() { environmentalSuitabilityCacheEntryDao = mock(EnvironmentalSuitabilityCacheEntryDao.class); distanceToExtentCacheEntryDao = mock(DistanceToExtentCacheEntryDao.class); validationParameterCacheService = new ValidationParameterCacheServiceImpl(distanceToExtentCacheEntryDao, environmentalSuitabilityCacheEntryDao); } @Test public void getDistanceToExtentFromCacheReturnsCorrectValue() { // Arrange DistanceToExtentCacheEntry mock = mock(DistanceToExtentCacheEntry.class); when(mock.getDistance()).thenReturn(3d); when(distanceToExtentCacheEntryDao.getById(eq(new ValidationParameterCacheEntryId(1, 2)))).thenReturn(mock); // Act Double result = validationParameterCacheService.getDistanceToExtentFromCache(1, 2); // Assert assertThat(result).isEqualTo(3d); } @Test public void getDistanceToExtentFromCacheReturnsCorrectValueIfNull() { // Arrange when(distanceToExtentCacheEntryDao.getById(eq(new ValidationParameterCacheEntryId(1, 2)))).thenReturn(null); // Act Double result = validationParameterCacheService.getDistanceToExtentFromCache(1, 2); // Assert assertThat(result).isNull(); } @Test public void clearDistanceToExtentCacheForDiseaseCallsDao() { // Act validationParameterCacheService.clearDistanceToExtentCacheForDisease(1); // Assert verify(distanceToExtentCacheEntryDao).clearCacheForDisease(1); } @Test public void saveDistanceToExtentCacheEntryCallsDao() { // Act validationParameterCacheService.saveDistanceToExtentCacheEntry(1, 2, 3d); // Assert verify(distanceToExtentCacheEntryDao).save(eq(new DistanceToExtentCacheEntry(1, 2, 3d))); } @Test public void getEnvironmentalSuitabilityFromCacheReturnsCorrectValue() { // Arrange EnvironmentalSuitabilityCacheEntry mock = mock(EnvironmentalSuitabilityCacheEntry.class); when(mock.getEnvironmentalSuitability()).thenReturn(3d); when(environmentalSuitabilityCacheEntryDao.getById(eq(new ValidationParameterCacheEntryId(1, 2)))).thenReturn(mock); // Act Double result = validationParameterCacheService.getEnvironmentalSuitabilityFromCache(1, 2); // Assert assertThat(result).isEqualTo(3d); } @Test public void getEnvironmentalSuitabilityFromCacheReturnsCorrectValueIfNull() { // Arrange when(environmentalSuitabilityCacheEntryDao.getById(eq(new ValidationParameterCacheEntryId(1, 2)))).thenReturn(null); // Act Double result = validationParameterCacheService.getEnvironmentalSuitabilityFromCache(1, 2); // Assert assertThat(result).isNull(); } @Test public void clearEnvironmentalSuitabilityCacheForDiseaseCallsDao() { // Act validationParameterCacheService.clearEnvironmentalSuitabilityCacheForDisease(1); // Assert verify(environmentalSuitabilityCacheEntryDao).clearCacheForDisease(1); } @Test public void saveEnvironmentalSuitabilityCacheEntryCallsDao() { // Act validationParameterCacheService.saveEnvironmentalSuitabilityCacheEntry(1, 2, 3d); // Assert verify(environmentalSuitabilityCacheEntryDao).save(eq(new EnvironmentalSuitabilityCacheEntry(1, 2, 3d))); } }