TSK-616 Allow update classifications with empty service_level

- Allow save classifications when service level is empty
This commit is contained in:
Martin Rojas Miguel Angel 2018-07-05 14:04:32 +02:00 committed by Holger Hagen
parent 85856dd392
commit 70476e597f
2 changed files with 55 additions and 5 deletions

View File

@ -180,7 +180,7 @@ public class ClassificationServiceImpl implements ClassificationService {
// Update classification fields used by tasks
if (oldClassification.getCategory() != classificationImpl.getCategory()) {
List<TaskSummary> taskSumamries = taskanaEngine.getTaskService()
List<TaskSummary> taskSummaries = taskanaEngine.getTaskService()
.createTaskQuery()
.classificationIdIn(oldClassification.getId())
.list();
@ -188,9 +188,9 @@ public class ClassificationServiceImpl implements ClassificationService {
boolean categoryChanged = !(oldClassification.getCategory() == null
? classification.getCategory() == null
: oldClassification.getCategory().equals(classification.getCategory()));
if (!taskSumamries.isEmpty() && categoryChanged) {
if (!taskSummaries.isEmpty() && categoryChanged) {
List<String> taskIds = new ArrayList<>();
taskSumamries.stream().forEach(ts -> taskIds.add(ts.getTaskId()));
taskSummaries.stream().forEach(ts -> taskIds.add(ts.getTaskId()));
taskMapper.updateClassificationCategoryOnChange(taskIds, classificationImpl.getCategory());
}
}
@ -262,7 +262,7 @@ public class ClassificationServiceImpl implements ClassificationService {
classification.setIsValidInDomain(true);
}
if (classification.getServiceLevel() != null) {
if (classification.getServiceLevel() != null && !"".equals(classification.getServiceLevel())) {
try {
Duration.parse(classification.getServiceLevel());
} catch (Exception e) {

View File

@ -14,7 +14,9 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import java.time.Instant;
import java.time.LocalDate;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -31,6 +33,7 @@ import pro.taskana.exceptions.DomainNotFoundException;
import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.mappings.ClassificationMapper;
import pro.taskana.mappings.JobMapper;
/**
* Unit Test for ClassificationServiceImpl.
@ -55,6 +58,9 @@ public class ClassificationServiceImplTest {
@Mock
private ClassificationQueryImpl classificationQueryImplMock;
@Mock
private SqlSession sqlSessionMock;
@Before
public void setup() {
doNothing().when(taskanaEngineImplMock).openConnection();
@ -210,7 +216,8 @@ public class ClassificationServiceImplTest {
classification.setParentKey("ParentKey");
ClassificationImpl parentDomainClassification = (ClassificationImpl) createDummyClassification("ParentId");
parentDomainClassification.setKey("ParentKey");
ClassificationImpl parentMasterClassification = (ClassificationImpl) createDummyClassification("ParentIdMaster");
ClassificationImpl parentMasterClassification = (ClassificationImpl) createDummyClassification(
"ParentIdMaster");
parentMasterClassification.setKey("ParentKey");
parentMasterClassification.setDomain("");
doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(),
@ -268,6 +275,24 @@ public class ClassificationServiceImplTest {
verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock);
}
@Test
public void testUpdateClassificationWithEmptyServiceLevel()
throws ClassificationNotFoundException, NotAuthorizedException, ConcurrencyException, InvalidArgumentException {
Instant now = Instant.now();
Classification classification = createDummyClassification();
((ClassificationImpl) classification).setModified(now);
classification.setServiceLevel("");
ClassificationImpl oldClassification = (ClassificationImpl) createDummyClassification();
oldClassification.setModified(now);
doReturn(oldClassification).when(cutSpy).getClassification(classification.getKey(), classification.getDomain());
doReturn(sqlSessionMock).when(taskanaEngineImplMock).getSqlSession();
doReturn(new JobRunnerMock()).when(sqlSessionMock).getMapper(any());
cutSpy.updateClassification(classification);
verify(classificationMapperMock, times(1)).update(any());
}
@Test(expected = ClassificationNotFoundException.class)
public void testUpdateClassificationParentIdNotExisting()
throws ClassificationNotFoundException, NotAuthorizedException,
@ -419,4 +444,29 @@ public class ClassificationServiceImplTest {
classificationImpl.setParentKey("");
return classificationImpl;
}
/**
* This is the mock of a jobRunner.
*/
private class JobRunnerMock implements JobMapper {
@Override
public void insertJob(Job job) {
}
@Override
public List<Job> findJobsToRun() {
return null;
}
@Override
public void update(Job job) {
}
@Override
public void delete(Job job) {
}
}
}