TSK-616 Allow update classifications with empty service_level
- Allow save classifications when service level is empty
This commit is contained in:
parent
85856dd392
commit
70476e597f
|
|
@ -180,7 +180,7 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
|
|
||||||
// Update classification fields used by tasks
|
// Update classification fields used by tasks
|
||||||
if (oldClassification.getCategory() != classificationImpl.getCategory()) {
|
if (oldClassification.getCategory() != classificationImpl.getCategory()) {
|
||||||
List<TaskSummary> taskSumamries = taskanaEngine.getTaskService()
|
List<TaskSummary> taskSummaries = taskanaEngine.getTaskService()
|
||||||
.createTaskQuery()
|
.createTaskQuery()
|
||||||
.classificationIdIn(oldClassification.getId())
|
.classificationIdIn(oldClassification.getId())
|
||||||
.list();
|
.list();
|
||||||
|
|
@ -188,9 +188,9 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
boolean categoryChanged = !(oldClassification.getCategory() == null
|
boolean categoryChanged = !(oldClassification.getCategory() == null
|
||||||
? classification.getCategory() == null
|
? classification.getCategory() == null
|
||||||
: oldClassification.getCategory().equals(classification.getCategory()));
|
: oldClassification.getCategory().equals(classification.getCategory()));
|
||||||
if (!taskSumamries.isEmpty() && categoryChanged) {
|
if (!taskSummaries.isEmpty() && categoryChanged) {
|
||||||
List<String> taskIds = new ArrayList<>();
|
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());
|
taskMapper.updateClassificationCategoryOnChange(taskIds, classificationImpl.getCategory());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -262,7 +262,7 @@ public class ClassificationServiceImpl implements ClassificationService {
|
||||||
classification.setIsValidInDomain(true);
|
classification.setIsValidInDomain(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (classification.getServiceLevel() != null) {
|
if (classification.getServiceLevel() != null && !"".equals(classification.getServiceLevel())) {
|
||||||
try {
|
try {
|
||||||
Duration.parse(classification.getServiceLevel());
|
Duration.parse(classification.getServiceLevel());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,9 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.ibatis.session.SqlSession;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
@ -31,6 +33,7 @@ import pro.taskana.exceptions.DomainNotFoundException;
|
||||||
import pro.taskana.exceptions.InvalidArgumentException;
|
import pro.taskana.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.exceptions.NotAuthorizedException;
|
import pro.taskana.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.mappings.ClassificationMapper;
|
import pro.taskana.mappings.ClassificationMapper;
|
||||||
|
import pro.taskana.mappings.JobMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit Test for ClassificationServiceImpl.
|
* Unit Test for ClassificationServiceImpl.
|
||||||
|
|
@ -55,6 +58,9 @@ public class ClassificationServiceImplTest {
|
||||||
@Mock
|
@Mock
|
||||||
private ClassificationQueryImpl classificationQueryImplMock;
|
private ClassificationQueryImpl classificationQueryImplMock;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private SqlSession sqlSessionMock;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
doNothing().when(taskanaEngineImplMock).openConnection();
|
doNothing().when(taskanaEngineImplMock).openConnection();
|
||||||
|
|
@ -210,7 +216,8 @@ public class ClassificationServiceImplTest {
|
||||||
classification.setParentKey("ParentKey");
|
classification.setParentKey("ParentKey");
|
||||||
ClassificationImpl parentDomainClassification = (ClassificationImpl) createDummyClassification("ParentId");
|
ClassificationImpl parentDomainClassification = (ClassificationImpl) createDummyClassification("ParentId");
|
||||||
parentDomainClassification.setKey("ParentKey");
|
parentDomainClassification.setKey("ParentKey");
|
||||||
ClassificationImpl parentMasterClassification = (ClassificationImpl) createDummyClassification("ParentIdMaster");
|
ClassificationImpl parentMasterClassification = (ClassificationImpl) createDummyClassification(
|
||||||
|
"ParentIdMaster");
|
||||||
parentMasterClassification.setKey("ParentKey");
|
parentMasterClassification.setKey("ParentKey");
|
||||||
parentMasterClassification.setDomain("");
|
parentMasterClassification.setDomain("");
|
||||||
doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(),
|
doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(),
|
||||||
|
|
@ -268,6 +275,24 @@ public class ClassificationServiceImplTest {
|
||||||
verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock);
|
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)
|
@Test(expected = ClassificationNotFoundException.class)
|
||||||
public void testUpdateClassificationParentIdNotExisting()
|
public void testUpdateClassificationParentIdNotExisting()
|
||||||
throws ClassificationNotFoundException, NotAuthorizedException,
|
throws ClassificationNotFoundException, NotAuthorizedException,
|
||||||
|
|
@ -419,4 +444,29 @@ public class ClassificationServiceImplTest {
|
||||||
classificationImpl.setParentKey("");
|
classificationImpl.setParentKey("");
|
||||||
return classificationImpl;
|
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) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue