diff --git a/lib/taskana-core/src/main/java/pro/taskana/SummaryService.java b/lib/taskana-core/src/main/java/pro/taskana/SummaryService.java index 1c980fb21..4171b43be 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/SummaryService.java +++ b/lib/taskana-core/src/main/java/pro/taskana/SummaryService.java @@ -2,6 +2,7 @@ package pro.taskana; import java.util.List; +import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.model.TaskSummary; /** @@ -9,5 +10,5 @@ import pro.taskana.model.TaskSummary; */ public interface SummaryService { - List getTaskSummariesByWorkbasketId(String workbasketId); + List getTaskSummariesByWorkbasketId(String workbasketId) throws WorkbasketNotFoundException; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/SummaryServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/SummaryServiceImpl.java index 9b19df98f..fbf3fb7f9 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/SummaryServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/SummaryServiceImpl.java @@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory; import pro.taskana.SummaryService; import pro.taskana.TaskanaEngine; +import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.impl.util.LoggerUtils; import pro.taskana.model.TaskSummary; import pro.taskana.model.mappings.SummaryMapper; @@ -28,9 +29,10 @@ public class SummaryServiceImpl implements SummaryService { } @Override - public List getTaskSummariesByWorkbasketId(String workbasketId) { + public List getTaskSummariesByWorkbasketId(String workbasketId) throws WorkbasketNotFoundException { LOGGER.debug("entry to getTaskSummariesByWorkbasketId(workbasketId = {}", workbasketId); List taskSummaries = new ArrayList<>(); + taskanaEngineImpl.getWorkbasketService().getWorkbasket(workbasketId); try { taskanaEngineImpl.openConnection(); taskSummaries = summaryMapper.findTasksummariesByWorkbasketId(workbasketId); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/SummaryServiceImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/SummaryServiceImplTest.java index 7b76c1ce2..68d5cc0b4 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/SummaryServiceImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/SummaryServiceImplTest.java @@ -1,28 +1,24 @@ package pro.taskana.impl; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.junit.Assert.assertThat; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - import org.apache.ibatis.session.SqlSession; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; - +import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.model.TaskSummary; +import pro.taskana.model.Workbasket; import pro.taskana.model.mappings.SummaryMapper; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.*; + /** * Testing the {@link SummaryServiceImpl} component. * Mocks are initialized before each Method by @Runner-Annotation. @@ -42,14 +38,19 @@ public class SummaryServiceImplTest { @Mock private SqlSession sqlSessionMock; + @Mock + private WorkbasketServiceImpl workbasketServiceMock; + @Test - public void testGetTaskSummariesByWorkbasketIdWithInternalException() { + public void testGetTaskSummariesByWorkbasketIdWithInternalException() throws WorkbasketNotFoundException { // given - set behaviour and expected result String workbasketId = "1"; List expectedResultList = new ArrayList<>(); doNothing().when(taskanaEngineImplMock).openConnection(); doThrow(new IllegalArgumentException("Invalid ID: " + workbasketId)).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId); doNothing().when(taskanaEngineImplMock).returnConnection(); + doReturn(workbasketServiceMock).when(taskanaEngineImplMock).getWorkbasketService(); + doReturn(new Workbasket()).when(workbasketServiceMock).getWorkbasket(any()); // when - make the call List actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId); @@ -58,42 +59,56 @@ public class SummaryServiceImplTest { verify(taskanaEngineImplMock, times(1)).openConnection(); verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId); verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(summaryMapperMock, taskanaEngineImplMock, sqlSessionMock); + verify(taskanaEngineImplMock, times(1)).getWorkbasketService(); + verify(workbasketServiceMock, times(1)).getWorkbasket(any()); + + verifyNoMoreInteractions(summaryMapperMock, taskanaEngineImplMock, sqlSessionMock, + workbasketServiceMock); assertThat(actualResultList, equalTo(expectedResultList)); } @Test - public void testGetTaskSummariesByWorkbasketIdGettingResults() { + public void testGetTaskSummariesByWorkbasketIdGettingResults() throws WorkbasketNotFoundException { String workbasketId = "1"; List expectedResultList = Arrays.asList(new TaskSummary(), new TaskSummary()); doNothing().when(taskanaEngineImplMock).openConnection(); doNothing().when(taskanaEngineImplMock).returnConnection(); + doReturn(workbasketServiceMock).when(taskanaEngineImplMock).getWorkbasketService(); + doReturn(new Workbasket()).when(workbasketServiceMock).getWorkbasket(any()); doReturn(expectedResultList).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId); List actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId); + verify(taskanaEngineImplMock, times(1)).getWorkbasketService(); + verify(workbasketServiceMock, times(1)).getWorkbasket(any()); verify(taskanaEngineImplMock, times(1)).openConnection(); verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId); verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(summaryMapperMock, taskanaEngineImplMock, sqlSessionMock); + verifyNoMoreInteractions(summaryMapperMock, taskanaEngineImplMock, sqlSessionMock, workbasketServiceMock); assertThat(actualResultList, equalTo(expectedResultList)); assertThat(actualResultList.size(), equalTo(expectedResultList.size())); } @Test - public void testGetTaskSummariesByWorkbasketIdGettingNull() { + public void testGetTaskSummariesByWorkbasketIdGettingNull() throws WorkbasketNotFoundException { String workbasketId = "1"; List expectedResultList = new ArrayList<>(); doNothing().when(taskanaEngineImplMock).openConnection(); doNothing().when(taskanaEngineImplMock).returnConnection(); doReturn(null).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId); + doReturn(workbasketServiceMock).when(taskanaEngineImplMock).getWorkbasketService(); + doReturn(new Workbasket()).when(workbasketServiceMock).getWorkbasket(any()); List actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId); verify(taskanaEngineImplMock, times(1)).openConnection(); verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId); verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(summaryMapperMock, taskanaEngineImplMock, sqlSessionMock); + verify(taskanaEngineImplMock, times(1)).getWorkbasketService(); + verify(workbasketServiceMock, times(1)).getWorkbasket(any()); + verifyNoMoreInteractions(summaryMapperMock, taskanaEngineImplMock, sqlSessionMock, + workbasketServiceMock); + assertThat(actualResultList, equalTo(expectedResultList)); assertThat(actualResultList.size(), equalTo(expectedResultList.size())); } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/SummaryServiceImplIntAutoCommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/SummaryServiceImplIntAutoCommitTest.java index d5b037946..21e39d4e9 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/SummaryServiceImplIntAutoCommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/SummaryServiceImplIntAutoCommitTest.java @@ -1,30 +1,15 @@ package pro.taskana.impl.integration; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.junit.Assert.assertThat; - -import java.io.FileNotFoundException; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -import javax.security.auth.login.LoginException; -import javax.sql.DataSource; - import org.h2.store.fs.FileUtils; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; - import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine.ConnectionManagementMode; import pro.taskana.configuration.TaskanaEngineConfiguration; -import pro.taskana.impl.ClassificationServiceImpl; -import pro.taskana.impl.SummaryServiceImpl; -import pro.taskana.impl.TaskServiceImpl; -import pro.taskana.impl.TaskanaEngineImpl; -import pro.taskana.impl.WorkbasketServiceImpl; +import pro.taskana.exceptions.WorkbasketNotFoundException; +import pro.taskana.impl.*; import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.model.Classification; @@ -32,6 +17,16 @@ import pro.taskana.model.Task; import pro.taskana.model.TaskSummary; import pro.taskana.model.Workbasket; +import javax.security.auth.login.LoginException; +import javax.sql.DataSource; +import java.io.FileNotFoundException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertThat; + /** * Testing {@link SummaryServiceImpl} with real DB-Connection and * real results. @@ -95,22 +90,20 @@ public class SummaryServiceImplIntAutoCommitTest { assertThat(actualTaskSumamryResult.size(), equalTo(expectedTaskSumamries.size())); } - @Test - public void shouldReturnEmptyTaskSummaryListByNullParameter() { - List expectedTaskSumamries = new ArrayList<>(); + @Test(expected = WorkbasketNotFoundException.class) + public void shouldThrowWorkbasketNotFoundExceptionByNullParameter() throws WorkbasketNotFoundException { List actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId(null); - assertThat(actualTaskSumamryResult, equalTo(expectedTaskSumamries)); - assertThat(actualTaskSumamryResult.size(), equalTo(expectedTaskSumamries.size())); } - @Test - public void shouldReturnEmptyTaskSummaryListByNoResultFound() { - List expectedTaskSumamries = new ArrayList<>(); - List actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId("123"); - assertThat(actualTaskSumamryResult, equalTo(expectedTaskSumamries)); - assertThat(actualTaskSumamryResult.size(), equalTo(expectedTaskSumamries.size())); + @Test(expected = WorkbasketNotFoundException.class) + public void shouldThrowWorkbasketNotFoundExceptionByInvalidWorkbasketParameter() throws WorkbasketNotFoundException { + Workbasket wb = new Workbasket(); + wb.setName("wb"); + workbasketServiceImpl.createWorkbasket(wb); + List actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId("1"); } + private void generateDummyData() throws Exception { dummyWorkbasket = new Workbasket(); dummyWorkbasket.setId("1");