Merge pull request #49 from BVier/TSK62

TSK-62: Let getTaskSummaries throw WorkbasketNotFoundException
This commit is contained in:
Holger Hagen 2017-12-07 14:50:06 +01:00 committed by GitHub
commit c8c037c3db
4 changed files with 61 additions and 50 deletions

View File

@ -2,6 +2,7 @@ package pro.taskana;
import java.util.List; import java.util.List;
import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.model.TaskSummary; import pro.taskana.model.TaskSummary;
/** /**
@ -9,5 +10,5 @@ import pro.taskana.model.TaskSummary;
*/ */
public interface SummaryService { public interface SummaryService {
List<TaskSummary> getTaskSummariesByWorkbasketId(String workbasketId); List<TaskSummary> getTaskSummariesByWorkbasketId(String workbasketId) throws WorkbasketNotFoundException;
} }

View File

@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
import pro.taskana.SummaryService; import pro.taskana.SummaryService;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.util.LoggerUtils; import pro.taskana.impl.util.LoggerUtils;
import pro.taskana.model.TaskSummary; import pro.taskana.model.TaskSummary;
import pro.taskana.model.mappings.SummaryMapper; import pro.taskana.model.mappings.SummaryMapper;
@ -28,9 +29,10 @@ public class SummaryServiceImpl implements SummaryService {
} }
@Override @Override
public List<TaskSummary> getTaskSummariesByWorkbasketId(String workbasketId) { public List<TaskSummary> getTaskSummariesByWorkbasketId(String workbasketId) throws WorkbasketNotFoundException {
LOGGER.debug("entry to getTaskSummariesByWorkbasketId(workbasketId = {}", workbasketId); LOGGER.debug("entry to getTaskSummariesByWorkbasketId(workbasketId = {}", workbasketId);
List<TaskSummary> taskSummaries = new ArrayList<>(); List<TaskSummary> taskSummaries = new ArrayList<>();
taskanaEngineImpl.getWorkbasketService().getWorkbasket(workbasketId);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();
taskSummaries = summaryMapper.findTasksummariesByWorkbasketId(workbasketId); taskSummaries = summaryMapper.findTasksummariesByWorkbasketId(workbasketId);

View File

@ -1,28 +1,24 @@
package pro.taskana.impl; 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.apache.ibatis.session.SqlSession;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoJUnitRunner;
import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.model.TaskSummary; import pro.taskana.model.TaskSummary;
import pro.taskana.model.Workbasket;
import pro.taskana.model.mappings.SummaryMapper; 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. * Testing the {@link SummaryServiceImpl} component.
* Mocks are initialized before each Method by @Runner-Annotation. * Mocks are initialized before each Method by @Runner-Annotation.
@ -42,14 +38,19 @@ public class SummaryServiceImplTest {
@Mock @Mock
private SqlSession sqlSessionMock; private SqlSession sqlSessionMock;
@Mock
private WorkbasketServiceImpl workbasketServiceMock;
@Test @Test
public void testGetTaskSummariesByWorkbasketIdWithInternalException() { public void testGetTaskSummariesByWorkbasketIdWithInternalException() throws WorkbasketNotFoundException {
// given - set behaviour and expected result // given - set behaviour and expected result
String workbasketId = "1"; String workbasketId = "1";
List<TaskSummary> expectedResultList = new ArrayList<>(); List<TaskSummary> expectedResultList = new ArrayList<>();
doNothing().when(taskanaEngineImplMock).openConnection(); doNothing().when(taskanaEngineImplMock).openConnection();
doThrow(new IllegalArgumentException("Invalid ID: " + workbasketId)).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId); doThrow(new IllegalArgumentException("Invalid ID: " + workbasketId)).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId);
doNothing().when(taskanaEngineImplMock).returnConnection(); doNothing().when(taskanaEngineImplMock).returnConnection();
doReturn(workbasketServiceMock).when(taskanaEngineImplMock).getWorkbasketService();
doReturn(new Workbasket()).when(workbasketServiceMock).getWorkbasket(any());
// when - make the call // when - make the call
List<TaskSummary> actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId); List<TaskSummary> actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId);
@ -58,42 +59,56 @@ public class SummaryServiceImplTest {
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId); verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId);
verify(taskanaEngineImplMock, times(1)).returnConnection(); 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, equalTo(expectedResultList));
} }
@Test @Test
public void testGetTaskSummariesByWorkbasketIdGettingResults() { public void testGetTaskSummariesByWorkbasketIdGettingResults() throws WorkbasketNotFoundException {
String workbasketId = "1"; String workbasketId = "1";
List<TaskSummary> expectedResultList = Arrays.asList(new TaskSummary(), new TaskSummary()); List<TaskSummary> expectedResultList = Arrays.asList(new TaskSummary(), new TaskSummary());
doNothing().when(taskanaEngineImplMock).openConnection(); doNothing().when(taskanaEngineImplMock).openConnection();
doNothing().when(taskanaEngineImplMock).returnConnection(); doNothing().when(taskanaEngineImplMock).returnConnection();
doReturn(workbasketServiceMock).when(taskanaEngineImplMock).getWorkbasketService();
doReturn(new Workbasket()).when(workbasketServiceMock).getWorkbasket(any());
doReturn(expectedResultList).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId); doReturn(expectedResultList).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId);
List<TaskSummary> actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId); List<TaskSummary> actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId);
verify(taskanaEngineImplMock, times(1)).getWorkbasketService();
verify(workbasketServiceMock, times(1)).getWorkbasket(any());
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId); verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId);
verify(taskanaEngineImplMock, times(1)).returnConnection(); verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(summaryMapperMock, taskanaEngineImplMock, sqlSessionMock); verifyNoMoreInteractions(summaryMapperMock, taskanaEngineImplMock, sqlSessionMock, workbasketServiceMock);
assertThat(actualResultList, equalTo(expectedResultList)); assertThat(actualResultList, equalTo(expectedResultList));
assertThat(actualResultList.size(), equalTo(expectedResultList.size())); assertThat(actualResultList.size(), equalTo(expectedResultList.size()));
} }
@Test @Test
public void testGetTaskSummariesByWorkbasketIdGettingNull() { public void testGetTaskSummariesByWorkbasketIdGettingNull() throws WorkbasketNotFoundException {
String workbasketId = "1"; String workbasketId = "1";
List<TaskSummary> expectedResultList = new ArrayList<>(); List<TaskSummary> expectedResultList = new ArrayList<>();
doNothing().when(taskanaEngineImplMock).openConnection(); doNothing().when(taskanaEngineImplMock).openConnection();
doNothing().when(taskanaEngineImplMock).returnConnection(); doNothing().when(taskanaEngineImplMock).returnConnection();
doReturn(null).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId); doReturn(null).when(summaryMapperMock).findTasksummariesByWorkbasketId(workbasketId);
doReturn(workbasketServiceMock).when(taskanaEngineImplMock).getWorkbasketService();
doReturn(new Workbasket()).when(workbasketServiceMock).getWorkbasket(any());
List<TaskSummary> actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId); List<TaskSummary> actualResultList = cut.getTaskSummariesByWorkbasketId(workbasketId);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId); verify(summaryMapperMock, times(1)).findTasksummariesByWorkbasketId(workbasketId);
verify(taskanaEngineImplMock, times(1)).returnConnection(); 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, equalTo(expectedResultList));
assertThat(actualResultList.size(), equalTo(expectedResultList.size())); assertThat(actualResultList.size(), equalTo(expectedResultList.size()));
} }

View File

@ -1,30 +1,15 @@
package pro.taskana.impl.integration; 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.h2.store.fs.FileUtils;
import org.junit.AfterClass; import org.junit.AfterClass;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
import pro.taskana.TaskanaEngine.ConnectionManagementMode; import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.impl.ClassificationServiceImpl; import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.SummaryServiceImpl; import pro.taskana.impl.*;
import pro.taskana.impl.TaskServiceImpl;
import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.WorkbasketServiceImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.model.Classification; import pro.taskana.model.Classification;
@ -32,6 +17,16 @@ import pro.taskana.model.Task;
import pro.taskana.model.TaskSummary; import pro.taskana.model.TaskSummary;
import pro.taskana.model.Workbasket; 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 * Testing {@link SummaryServiceImpl} with real DB-Connection and
* real results. * real results.
@ -95,22 +90,20 @@ public class SummaryServiceImplIntAutoCommitTest {
assertThat(actualTaskSumamryResult.size(), equalTo(expectedTaskSumamries.size())); assertThat(actualTaskSumamryResult.size(), equalTo(expectedTaskSumamries.size()));
} }
@Test @Test(expected = WorkbasketNotFoundException.class)
public void shouldReturnEmptyTaskSummaryListByNullParameter() { public void shouldThrowWorkbasketNotFoundExceptionByNullParameter() throws WorkbasketNotFoundException {
List<TaskSummary> expectedTaskSumamries = new ArrayList<>();
List<TaskSummary> actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId(null); List<TaskSummary> actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId(null);
assertThat(actualTaskSumamryResult, equalTo(expectedTaskSumamries));
assertThat(actualTaskSumamryResult.size(), equalTo(expectedTaskSumamries.size()));
} }
@Test @Test(expected = WorkbasketNotFoundException.class)
public void shouldReturnEmptyTaskSummaryListByNoResultFound() { public void shouldThrowWorkbasketNotFoundExceptionByInvalidWorkbasketParameter() throws WorkbasketNotFoundException {
List<TaskSummary> expectedTaskSumamries = new ArrayList<>(); Workbasket wb = new Workbasket();
List<TaskSummary> actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId("123"); wb.setName("wb");
assertThat(actualTaskSumamryResult, equalTo(expectedTaskSumamries)); workbasketServiceImpl.createWorkbasket(wb);
assertThat(actualTaskSumamryResult.size(), equalTo(expectedTaskSumamries.size())); List<TaskSummary> actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId("1");
} }
private void generateDummyData() throws Exception { private void generateDummyData() throws Exception {
dummyWorkbasket = new Workbasket(); dummyWorkbasket = new Workbasket();
dummyWorkbasket.setId("1"); dummyWorkbasket.setId("1");