TSK-62: Let getTaskSummaries throw WorkbasketNotFoundException

This commit is contained in:
BVier 2017-12-07 11:59:27 +01:00 committed by Marcel Lengl
parent ccfefe0365
commit e18600c8bd
4 changed files with 61 additions and 50 deletions

View File

@ -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<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.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<TaskSummary> getTaskSummariesByWorkbasketId(String workbasketId) {
public List<TaskSummary> getTaskSummariesByWorkbasketId(String workbasketId) throws WorkbasketNotFoundException {
LOGGER.debug("entry to getTaskSummariesByWorkbasketId(workbasketId = {}", workbasketId);
List<TaskSummary> taskSummaries = new ArrayList<>();
taskanaEngineImpl.getWorkbasketService().getWorkbasket(workbasketId);
try {
taskanaEngineImpl.openConnection();
taskSummaries = summaryMapper.findTasksummariesByWorkbasketId(workbasketId);

View File

@ -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<TaskSummary> 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<TaskSummary> 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<TaskSummary> 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<TaskSummary> 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<TaskSummary> 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<TaskSummary> 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()));
}

View File

@ -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<TaskSummary> expectedTaskSumamries = new ArrayList<>();
@Test(expected = WorkbasketNotFoundException.class)
public void shouldThrowWorkbasketNotFoundExceptionByNullParameter() throws WorkbasketNotFoundException {
List<TaskSummary> actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId(null);
assertThat(actualTaskSumamryResult, equalTo(expectedTaskSumamries));
assertThat(actualTaskSumamryResult.size(), equalTo(expectedTaskSumamries.size()));
}
@Test
public void shouldReturnEmptyTaskSummaryListByNoResultFound() {
List<TaskSummary> expectedTaskSumamries = new ArrayList<>();
List<TaskSummary> 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<TaskSummary> actualTaskSumamryResult = summaryServiceImp.getTaskSummariesByWorkbasketId("1");
}
private void generateDummyData() throws Exception {
dummyWorkbasket = new Workbasket();
dummyWorkbasket.setId("1");