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
|
||||
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) {
|
||||
|
|
|
@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue