diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationQueryImpl.java index f112bf134..9cfb1b35f 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationQueryImpl.java @@ -199,7 +199,7 @@ public class ClassificationQueryImpl implements ClassificationQuery { num = Integer.parseInt(number); } catch (NumberFormatException e) { throw new InvalidArgumentException( - "Argument '" + number + "' to getCustomAttribute cannot be converted to a number between 1 and 16", + "Argument '" + number + "' to getCustomAttribute cannot be converted to a number between 1 and 8", e.getCause()); } if (customIn.length == 0) { diff --git a/lib/taskana-core/src/test/java/acceptance/classification/CreateClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/CreateClassificationAccTest.java index 3a7ae0745..e07f45ee8 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/CreateClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/CreateClassificationAccTest.java @@ -1,8 +1,10 @@ package acceptance.classification; import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import org.junit.Test; import org.junit.runner.RunWith; @@ -15,6 +17,8 @@ import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; +import pro.taskana.exceptions.TaskanaException; +import pro.taskana.impl.ClassificationImpl; import pro.taskana.security.JAASRunner; import pro.taskana.security.WithAccessId; @@ -24,6 +28,8 @@ import pro.taskana.security.WithAccessId; @RunWith(JAASRunner.class) public class CreateClassificationAccTest extends AbstractAccTest { + private static final String ID_PREFIX_CLASSIFICATION = "CLI"; + private ClassificationService classificationService; public CreateClassificationAccTest() { @@ -53,6 +59,7 @@ public class CreateClassificationAccTest extends AbstractAccTest { assertNotNull(classification.getModified()); assertNotNull(classification.getId()); assertThat(classification.getIsValidInDomain(), equalTo(false)); + assertTrue(classification.getId().startsWith(ID_PREFIX_CLASSIFICATION)); } @WithAccessId( @@ -74,6 +81,7 @@ public class CreateClassificationAccTest extends AbstractAccTest { assertNotNull(createdClassification.getModified()); assertThat(createdClassification.getIsValidInDomain(), equalTo(true)); assertThat(createdClassification.getDomain(), equalTo("DOMAIN_A")); + assertEquals(createdClassification.getKey(), "Key1"); // Check 2 new created long amountOfClassificationsAfter = classificationService.createClassificationQuery().count(); @@ -86,6 +94,7 @@ public class CreateClassificationAccTest extends AbstractAccTest { assertNotNull(classification.getModified()); assertNotNull(classification.getId()); assertThat(classification.getIsValidInDomain(), equalTo(true)); + assertTrue(classification.getId().startsWith(ID_PREFIX_CLASSIFICATION)); // Check master-copy classification = classificationService.getClassification(classification.getKey(), ""); @@ -94,6 +103,51 @@ public class CreateClassificationAccTest extends AbstractAccTest { assertNotNull(classification.getModified()); assertNotNull(classification.getId()); assertThat(classification.getIsValidInDomain(), equalTo(false)); + assertTrue(classification.getId().startsWith(ID_PREFIX_CLASSIFICATION)); + } + + @WithAccessId( + userName = "teamlead_1", + groupNames = {"group_1", "businessadmin"}) + @Test + public void testCreateClassificationWithExistingMaster() + throws DomainNotFoundException, ClassificationAlreadyExistException, + NotAuthorizedException, InvalidArgumentException { + + classificationService.createClassification( + classificationService.newClassification("Key0815", "", "TASK")); + + long amountOfClassificationsBefore = classificationService.createClassificationQuery().count(); + Classification expected = classificationService.newClassification("Key0815", "DOMAIN_B", "TASK"); + Classification actual = classificationService.createClassification(expected); + long amountOfClassificationsAfter = classificationService.createClassificationQuery().count(); + + assertEquals(amountOfClassificationsBefore + 1, amountOfClassificationsAfter); + assertNotNull(actual); + assertEquals(actual, expected); + assertTrue(actual.getIsValidInDomain()); + } + + @WithAccessId( + userName = "teamlead_1", + groupNames = {"group_1", "businessadmin"}) + @Test + public void testCreateChildInDomainAndCopyInMaster() + throws DomainNotFoundException, ClassificationAlreadyExistException, + TaskanaException, InvalidArgumentException { + Classification parent = classificationService.newClassification("Key0816", "DOMAIN_A", "TASK"); + Classification actualParent = classificationService.createClassification(parent); + assertNotNull(actualParent); + + long amountOfClassificationsBefore = classificationService.createClassificationQuery().count(); + Classification child = classificationService.newClassification("Key0817", "DOMAIN_A", "TASK"); + child.setParentId(actualParent.getId()); + child.setParentKey(actualParent.getKey()); + Classification actualChild = classificationService.createClassification(child); + long amountOfClassificationsAfter = classificationService.createClassificationQuery().count(); + + assertEquals(amountOfClassificationsBefore + 2, amountOfClassificationsAfter); + assertNotNull(actualChild); } @WithAccessId( @@ -192,4 +246,17 @@ public class CreateClassificationAccTest extends AbstractAccTest { classification = classificationService.createClassification(classification); } + @WithAccessId( + userName = "teamlead_1", + groupNames = {"group_1", "businessadmin"}) + @Test(expected = InvalidArgumentException.class) + public void testCreateClassificationWithExplicitId() + throws DomainNotFoundException, ClassificationAlreadyExistException, + NotAuthorizedException, InvalidArgumentException { + ClassificationImpl classification = (ClassificationImpl) classificationService + .newClassification("Key0818", "", "TASK"); + classification.setId("EXPLICIT ID"); + classificationService.createClassification(classification); + } + } diff --git a/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java index cd1f784ff..02347814f 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java @@ -18,13 +18,15 @@ import pro.taskana.exceptions.ClassificationNotFoundException; */ public class GetClassificationAccTest extends AbstractAccTest { + private ClassificationService classificationService; + public GetClassificationAccTest() { super(); + classificationService = taskanaEngine.getClassificationService(); } @Test public void testFindAllClassifications() { - ClassificationService classificationService = taskanaEngine.getClassificationService(); List classificationSummaryList = classificationService.createClassificationQuery() .list(); assertNotNull(classificationSummaryList); @@ -32,7 +34,6 @@ public class GetClassificationAccTest extends AbstractAccTest { @Test public void testGetOneClassificationByKeyAndDomain() throws ClassificationNotFoundException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("T6310", "DOMAIN_A"); assertNotNull(classification); assertEquals("CLI:100000000000000000000000000000000011", classification.getId()); @@ -56,7 +57,6 @@ public class GetClassificationAccTest extends AbstractAccTest { @Test public void testGetOneClassificationById() throws ClassificationNotFoundException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService .getClassification("CLI:100000000000000000000000000000000011"); assertNotNull(classification); @@ -82,7 +82,6 @@ public class GetClassificationAccTest extends AbstractAccTest { @Test public void testGetClassificationAsSummary() throws ClassificationNotFoundException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); ClassificationSummary classification = classificationService .getClassification("CLI:100000000000000000000000000000000011").asSummary(); assertNotNull(classification); @@ -99,16 +98,25 @@ public class GetClassificationAccTest extends AbstractAccTest { @Test(expected = ClassificationNotFoundException.class) public void testGetOneClassificationByIdFails() throws ClassificationNotFoundException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); - Classification classification = classificationService - .getClassification("CLI:100000000470000000000000000000000011"); + classificationService.getClassification("CLI:100000000470000000000000000000000011"); + fail("ClassificationNotFoundException was expected"); + } + + @Test(expected = ClassificationNotFoundException.class) + public void testGetClassificationByNullKeyFails() throws ClassificationNotFoundException { + classificationService.getClassification(null, ""); + fail("ClassificationNotFoundException was expected"); + } + + @Test(expected = ClassificationNotFoundException.class) + public void testGetClassificationByInvalidKeyAndDomain() throws ClassificationNotFoundException { + classificationService.getClassification("Key0815", "NOT_EXISTING"); fail("ClassificationNotFoundException was expected"); } @Test public void testGetOneClassificationForDomainAndGetClassificationFromMasterDomain() throws ClassificationNotFoundException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("L10000", "DOMAIN_B"); assertNotNull(classification); assertEquals("", classification.getDomain()); @@ -117,7 +125,6 @@ public class GetClassificationAccTest extends AbstractAccTest { @Test public void testGetOneClassificationForMasterDomain() throws ClassificationNotFoundException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("L10000", ""); assertNotNull(classification); assertEquals("", classification.getDomain()); diff --git a/lib/taskana-core/src/test/java/acceptance/classification/QueryClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/QueryClassificationAccTest.java index d7dcb10d4..0c782ac76 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/QueryClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/QueryClassificationAccTest.java @@ -399,6 +399,15 @@ public class QueryClassificationAccTest extends AbstractAccTest { assertEquals(3, results.size()); } + @Test + public void testQueryForCustom2Like() throws InvalidArgumentException { + ClassificationService classificationService = taskanaEngine.getClassificationService(); + List results = classificationService.createClassificationQuery() + .customAttributeLike("2", "cus%") + .list(); + assertEquals(4, results.size()); + } + @Test public void testQueryForCustom3Like() throws InvalidArgumentException { ClassificationService classificationService = taskanaEngine.getClassificationService(); diff --git a/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java index 6f310cde6..ce8b69aa0 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java @@ -22,8 +22,10 @@ import pro.taskana.Classification; import pro.taskana.ClassificationService; import pro.taskana.Task; import pro.taskana.TaskService; +import pro.taskana.exceptions.ClassificationAlreadyExistException; import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.exceptions.ConcurrencyException; +import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.TaskNotFoundException; @@ -40,8 +42,11 @@ import pro.taskana.security.WithAccessId; @RunWith(JAASRunner.class) public class UpdateClassificationAccTest extends AbstractAccTest { + private ClassificationService classificationService; + public UpdateClassificationAccTest() { super(); + classificationService = taskanaEngine.getClassificationService(); } @WithAccessId( @@ -53,7 +58,6 @@ public class UpdateClassificationAccTest extends AbstractAccTest { InvalidArgumentException { String newName = "updated Name"; String newEntryPoint = "updated EntryPoint"; - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("T2100", "DOMAIN_A"); Instant createdBefore = classification.getCreated(); Instant modifiedBefore = classification.getModified(); @@ -93,7 +97,6 @@ public class UpdateClassificationAccTest extends AbstractAccTest { InvalidArgumentException { String newName = "updated Name"; String newEntryPoint = "updated EntryPoint"; - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("T2100", "DOMAIN_A"); classification.setApplicationEntryPoint(newEntryPoint); @@ -126,7 +129,7 @@ public class UpdateClassificationAccTest extends AbstractAccTest { TaskImpl beforeTask = (TaskImpl) taskanaEngine.getTaskService() .getTask("TKI:000000000000000000000000000000000000"); - Classification classification = taskanaEngine.getClassificationService() + Classification classification = classificationService .getClassification(beforeTask.getClassificationSummary().getKey(), beforeTask.getDomain()); classification.setCategory("PROCESS"); Instant createdBefore = classification.getCreated(); @@ -153,7 +156,6 @@ public class UpdateClassificationAccTest extends AbstractAccTest { public void testUpdateClassificationNotLatestAnymore() throws ClassificationNotFoundException, NotAuthorizedException, ConcurrencyException, InterruptedException, InvalidArgumentException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification base = classificationService.getClassification("T2100", "DOMAIN_A"); Classification classification = classificationService.getClassification("T2100", "DOMAIN_A"); @@ -177,7 +179,6 @@ public class UpdateClassificationAccTest extends AbstractAccTest { public void testUpdateClassificationParentIdToInvalid() throws NotAuthorizedException, ClassificationNotFoundException, ConcurrencyException, InvalidArgumentException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("T2100", "DOMAIN_A"); classification.setParentId("ID WHICH CANT BE FOUND"); classification = classificationService.updateClassification(classification); @@ -190,7 +191,6 @@ public class UpdateClassificationAccTest extends AbstractAccTest { public void testUpdateClassificationParentKeyToInvalid() throws NotAuthorizedException, ClassificationNotFoundException, ConcurrencyException, InvalidArgumentException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("T2100", "DOMAIN_A"); classification.setParentKey("KEY WHICH CANT BE FOUND"); classification = classificationService.updateClassification(classification); @@ -205,7 +205,6 @@ public class UpdateClassificationAccTest extends AbstractAccTest { InterruptedException, TaskNotFoundException, InvalidArgumentException { String newEntryPoint = "updated EntryPoint"; Instant before = Instant.now(); - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService .getClassification("CLI:100000000000000000000000000000000003"); Instant createdBefore = classification.getCreated(); @@ -283,13 +282,27 @@ public class UpdateClassificationAccTest extends AbstractAccTest { public void testUpdateClassificationWithSameKeyAndParentKey() throws ClassificationNotFoundException, NotAuthorizedException, ConcurrencyException, InvalidArgumentException { - ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("T2100", "DOMAIN_A"); classification.setParentKey(classification.getKey()); classificationService.updateClassification(classification); } + + @WithAccessId( + userName = "dummy", + groupNames = {"businessadmin"}) + @Test + public void testUpdateClassificationWithEmptyServiceLevel() + throws DomainNotFoundException, ClassificationAlreadyExistException, NotAuthorizedException, + InvalidArgumentException, ClassificationNotFoundException, ConcurrencyException { + + Classification classification = classificationService.newClassification("Key=0818", "DOMAIN_A", "TASK"); + Classification created = classificationService.createClassification(classification); + created.setServiceLevel(""); + classificationService.updateClassification(created); + } + private void validateNewTaskProperties(Instant before, List tasksWithP15D, TaskService taskService, DaysToWorkingDaysConverter converter, int serviceLevel) throws TaskNotFoundException, NotAuthorizedException { for (String taskId : tasksWithP15D) { diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java index 875e8717a..6ec756a88 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java @@ -1,18 +1,11 @@ package pro.taskana.impl; import static junit.framework.TestCase.assertEquals; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; -import java.time.Instant; import java.time.LocalDate; import java.util.List; @@ -28,8 +21,6 @@ import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.Classification; import pro.taskana.JobService; import pro.taskana.exceptions.ClassificationAlreadyExistException; -import pro.taskana.exceptions.ClassificationNotFoundException; -import pro.taskana.exceptions.ConcurrencyException; import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; @@ -72,344 +63,6 @@ public class ClassificationServiceImplTest { doNothing().when(taskanaEngineImplMock).returnConnection(); } - @Test(expected = ClassificationAlreadyExistException.class) - public void testCreateClassificationAlreadyExisting() - throws ClassificationAlreadyExistException, NotAuthorizedException, - DomainNotFoundException, InvalidArgumentException { - Classification classification = createDummyClassification(); - doReturn(classification).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - doReturn(true).when(taskanaEngineImplMock).domainExists(any()); - - try { - cutSpy.createClassification(classification); - } catch (ClassificationAlreadyExistException e) { - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(1)).domainExists(any()); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - throw e; - } - } - - @Test(expected = InvalidArgumentException.class) - public void testCreateClassificationParentIdNotExisting() - throws ClassificationAlreadyExistException, ClassificationNotFoundException, NotAuthorizedException, - DomainNotFoundException, InvalidArgumentException { - Classification classification = createDummyClassification(null); - classification.setParentId("NOT EXISTING ID"); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - doReturn(null).when(classificationMapperMock).findById(classification.getParentId()); - doReturn(true).when(taskanaEngineImplMock).domainExists(any()); - - try { - cutSpy.createClassification(classification); - } catch (InvalidArgumentException e) { - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).openConnection(); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - verify(cutSpy, times(1)).getClassification(classification.getParentId()); - verify(classificationMapperMock, times(1)).findById(classification.getParentId()); - verify(taskanaEngineImplMock, times(2)).returnConnection(); - verify(taskanaEngineImplMock, times(1)).domainExists(any()); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - throw e; - } - } - - @Test(expected = InvalidArgumentException.class) - public void testCreateClassificationParentKeyNotExisting() - throws ClassificationAlreadyExistException, ClassificationNotFoundException, NotAuthorizedException, - DomainNotFoundException, InvalidArgumentException { - Classification classification = createDummyClassification(null); - classification.setParentKey("NOT EXISTING KEY"); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getParentKey(), - classification.getDomain()); - doReturn(true).when(taskanaEngineImplMock).domainExists(any()); - - try { - cutSpy.createClassification(classification); - } catch (InvalidArgumentException e) { - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).openConnection(); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getParentKey(), - classification.getDomain()); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getParentKey(), ""); - verify(cutSpy, times(1)).getClassification(classification.getParentKey(), classification.getDomain()); - verify(taskanaEngineImplMock, times(2)).returnConnection(); - verify(taskanaEngineImplMock, times(1)).domainExists(any()); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - throw e; - } - } - - @Test - public void testCreateClassificationInOwnDomainButExistingInMaster() - throws ClassificationAlreadyExistException, InterruptedException, - NotAuthorizedException, DomainNotFoundException, InvalidArgumentException { - Instant beforeTimestamp = Instant.now(); - Thread.sleep(10L); - Classification classification = createDummyClassification(null); - String domain = classification.getDomain(); - String key = classification.getKey(); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - doReturn(classification).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), ""); - doReturn(true).when(taskanaEngineImplMock).domainExists(any()); - - classification = cutSpy.createClassification(classification); - - Thread.sleep(10L); - verify(taskanaEngineImplMock, times(2)).openConnection(); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(key, domain); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(key, ""); - verify(classificationMapperMock, times(1)).insert(any()); - verify(taskanaEngineImplMock, times(2)).returnConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(1)).domainExists(any()); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - Thread.sleep(15); - assertThat(classification.getCreated().toString().substring(0, 10), equalTo(todaysDate)); - assertFalse(classification.getCreated().isAfter(Instant.now())); - assertTrue(classification.getCreated().isAfter(beforeTimestamp)); - assertThat(classification.getDomain(), equalTo(domain)); - assertThat(classification.getKey(), equalTo(key)); - } - - @Test - public void testCreateClassificationInOwnDomainAndCopyInMasterDomain() - throws ClassificationAlreadyExistException, NotAuthorizedException, DomainNotFoundException, - InvalidArgumentException { - Classification classification = createDummyClassification(""); - String domain = classification.getDomain(); - String key = classification.getKey(); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), ""); - doReturn(true).when(taskanaEngineImplMock).domainExists(any()); - - classification = cutSpy.createClassification(classification); - - verify(taskanaEngineImplMock, times(2)).openConnection(); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(key, domain); - verify(classificationMapperMock, times(2)).findByKeyAndDomain(key, ""); - verify(classificationMapperMock, times(2)).insert(any()); - verify(taskanaEngineImplMock, times(2)).returnConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(1)).domainExists(any()); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - assertThat(classification.getCreated().toString().substring(0, 10), equalTo(todaysDate)); - assertThat(classification.getDomain(), equalTo(domain)); - assertThat(classification.getKey(), equalTo(key)); - } - - @Test - public void testCreateChildClassificationInOwnDomainAndCopyInMasterDomain() - throws ClassificationAlreadyExistException, NotAuthorizedException, DomainNotFoundException, - InvalidArgumentException { - Classification classification = createDummyClassification(""); - classification.setParentId("parentId"); - classification.setParentKey("ParentKey"); - ClassificationImpl parentDomainClassification = (ClassificationImpl) createDummyClassification("ParentId"); - parentDomainClassification.setKey("ParentKey"); - ClassificationImpl parentMasterClassification = (ClassificationImpl) createDummyClassification( - "ParentIdMaster"); - parentMasterClassification.setKey("ParentKey"); - parentMasterClassification.setDomain(""); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), ""); - doReturn(parentMasterClassification).when(classificationMapperMock).findByKeyAndDomain("ParentKey", ""); - - doReturn(parentDomainClassification).when(classificationMapperMock).findById("parentId"); - doReturn(true).when(taskanaEngineImplMock).domainExists(any()); - - cutSpy.createClassification(classification); - - verify(classificationMapperMock, times(2)).insert(any()); - } - - @Test - public void testCreateClassificationIntoRootDomain() - throws ClassificationAlreadyExistException, NotAuthorizedException, - DomainNotFoundException, InvalidArgumentException { - ClassificationImpl classification = (ClassificationImpl) createDummyClassification(null); - classification.setDomain(""); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - - classification = (ClassificationImpl) cutSpy.createClassification(classification); - - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - verify(classificationMapperMock, times(1)).insert(classification); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(1)).domainExists(any()); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - assertThat(classification.getCreated().toString().substring(0, 10), equalTo(todaysDate)); - } - - @Test - public void testUpdateExistingClassification() - throws ClassificationNotFoundException, NotAuthorizedException, ConcurrencyException, InvalidArgumentException { - Instant now = Instant.now(); - Classification classification = createDummyClassification(); - ((ClassificationImpl) classification).setModified(now); - ClassificationImpl oldClassification = (ClassificationImpl) createDummyClassification(); - oldClassification.setModified(now); - doReturn(oldClassification).when(cutSpy).getClassification(classification.getKey(), classification.getDomain()); - - classification = cutSpy.updateClassification(classification); - - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(cutSpy, times(1)).getClassification(classification.getKey(), classification.getDomain()); - verify(classificationMapperMock, times(1)).update(any()); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - 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(jobServiceMock).when(taskanaEngineImplMock).getJobService(); - - cutSpy.updateClassification(classification); - - verify(classificationMapperMock, times(1)).update(any()); - } - - @Test(expected = ClassificationNotFoundException.class) - public void testUpdateClassificationParentIdNotExisting() - throws ClassificationNotFoundException, NotAuthorizedException, - ConcurrencyException, InvalidArgumentException { - Instant now = Instant.now(); - ClassificationImpl oldClassification = (ClassificationImpl) createDummyClassification(); - oldClassification.setParentId("SOME ID"); - oldClassification.setCreated(now); - oldClassification.setModified(now); - Classification classification = createDummyClassification(); - classification.setParentId("DIFFERENT ID - FOR CHECKING PARENT"); - ((ClassificationImpl) classification).setCreated(oldClassification.getCreated()); - ((ClassificationImpl) classification).setModified(oldClassification.getModified()); - doReturn(oldClassification).when(cutSpy).getClassification(classification.getKey(), classification.getDomain()); - doReturn(null).when(classificationMapperMock).findById(classification.getParentId()); - - try { - cutSpy.updateClassification(classification); - } catch (ClassificationNotFoundException e) { - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).openConnection(); - verify(cutSpy, times(1)).getClassification(classification.getKey(), - classification.getDomain()); - verify(cutSpy, times(1)).getClassification(classification.getParentId()); - verify(classificationMapperMock, times(1)).findById(classification.getParentId()); - verify(taskanaEngineImplMock, times(2)).returnConnection(); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - throw e; - } - } - - @Test(expected = ClassificationNotFoundException.class) - public void testUpdateClassificationParentKeyNotExisting() - throws ClassificationNotFoundException, NotAuthorizedException, - ConcurrencyException, InvalidArgumentException { - Instant now = Instant.now(); - ClassificationImpl oldClassification = (ClassificationImpl) createDummyClassification(); - oldClassification.setParentKey("SOME KEY"); - oldClassification.setCreated(now); - oldClassification.setModified(now); - Classification classification = createDummyClassification(); - classification.setParentKey("DIFFERENT KEY - FOR CHECKING PARENT"); - ((ClassificationImpl) classification).setCreated(oldClassification.getCreated()); - ((ClassificationImpl) classification).setModified(oldClassification.getModified()); - doReturn(oldClassification).when(cutSpy).getClassification(classification.getKey(), classification.getDomain()); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getParentKey(), - classification.getDomain()); - - try { - cutSpy.updateClassification(classification); - } catch (ClassificationNotFoundException e) { - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).openConnection(); - verify(cutSpy, times(1)).getClassification(classification.getKey(), - classification.getDomain()); - verify(cutSpy, times(1)).getClassification(classification.getParentKey(), - classification.getDomain()); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getParentKey(), - classification.getDomain()); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getParentKey(), ""); - verify(taskanaEngineImplMock, times(2)).returnConnection(); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - throw e; - } - } - - @Test - public void testGetClassificationFromDomain() throws ClassificationNotFoundException { - Classification expectedClassification = createDummyClassification(); - doReturn(expectedClassification).when(classificationMapperMock) - .findByKeyAndDomain(expectedClassification.getKey(), expectedClassification.getDomain()); - - Classification actualClassification = cutSpy.getClassification(expectedClassification.getKey(), - expectedClassification.getDomain()); - - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(expectedClassification.getKey(), - expectedClassification.getDomain()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - assertThat(actualClassification, equalTo(expectedClassification)); - } - - @Test(expected = ClassificationNotFoundException.class) - public void testGetClassificationThrowingNotFoundException() throws ClassificationNotFoundException { - Classification classification = createDummyClassification(); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - doReturn(null).when(classificationMapperMock).findByKeyAndDomain(classification.getKey(), ""); - - try { - cutSpy.getClassification(classification.getKey(), classification.getDomain()); - } catch (ClassificationNotFoundException e) { - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getKey(), - classification.getDomain()); - verify(classificationMapperMock, times(1)).findByKeyAndDomain(classification.getKey(), ""); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - throw e; - } - } - - @Test(expected = ClassificationNotFoundException.class) - public void testGetClassificationWithInvalidNullKey() throws ClassificationNotFoundException { - try { - cutSpy.getClassification(null, "domain"); - } catch (ClassificationNotFoundException e) { - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); - throw e; - } - } - @Test public void testCreateClassificationQuery() { cutSpy.createClassificationQuery(); @@ -428,7 +81,6 @@ public class ClassificationServiceImplTest { assertEquals(e.getMessage(), "ClassificationId should be null on creation"); throw e; } - } private Classification createDummyClassification() { diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java index 82186048f..c133e06de 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java @@ -1,10 +1,6 @@ package pro.taskana.impl.integration; import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.core.IsNot.not; -import static org.hamcrest.core.StringStartsWith.startsWith; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; import java.sql.SQLException; import java.time.Instant; @@ -34,7 +30,6 @@ import pro.taskana.exceptions.ConcurrencyException; import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; -import pro.taskana.impl.ClassificationImpl; import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; @@ -46,7 +41,6 @@ import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; */ public class ClassificationServiceImplIntAutoCommitTest { - private static final String ID_PREFIX_CLASSIFICATION = "CLI"; static int counter = 0; private DataSource dataSource; private ClassificationService classificationService; @@ -74,84 +68,6 @@ public class ClassificationServiceImplIntAutoCommitTest { cleaner.clearDb(dataSource, false); } - @Test - public void testInsertClassifications() throws Exception { - final String domain = "DOMAIN_A"; - final String key = "dummy-key"; - ClassificationImpl expectedClassification; - Classification actualClassification; - Classification actualClassification2; - - // empty classification (master) - expectedClassification = (ClassificationImpl) this.createDummyClassificationWithUniqueKey("", "TASK"); - expectedClassification = (ClassificationImpl) classificationService - .createClassification(expectedClassification); - actualClassification = classificationService.getClassification(expectedClassification.getKey(), - expectedClassification.getDomain()); - assertThat(actualClassification, not(equalTo(null))); - assertThat(actualClassification.getCreated(), not(equalTo(null))); - assertThat(actualClassification.getId(), not(equalTo(null))); - assertThat(actualClassification.getId(), startsWith(ID_PREFIX_CLASSIFICATION)); - - // specific to domain + master - expectedClassification = (ClassificationImpl) this.createDummyClassificationWithUniqueKey(domain, "TASK"); - expectedClassification.setKey(key); - expectedClassification = (ClassificationImpl) classificationService - .createClassification(expectedClassification); - actualClassification = classificationService.getClassification(expectedClassification.getKey(), - expectedClassification.getDomain()); - actualClassification2 = classificationService.getClassification(expectedClassification.getKey(), ""); - assertThat(actualClassification, not(equalTo(null))); - assertThat(actualClassification.getCreated(), not(equalTo(null))); - assertThat(actualClassification.getId(), not(equalTo(null))); - assertThat(actualClassification.getKey(), equalTo(key)); - assertThat(actualClassification.getDomain(), equalTo(domain)); - assertThat(actualClassification.getId(), startsWith(ID_PREFIX_CLASSIFICATION)); - assertThat(actualClassification2, not(equalTo(null))); - assertThat(actualClassification2.getCreated(), not(equalTo(null))); - assertThat(actualClassification2.getId(), not(equalTo(null))); - assertThat(actualClassification2.getId(), not(equalTo(actualClassification.getId()))); - assertThat(actualClassification2.getKey(), equalTo(key)); - assertThat(actualClassification2.getDomain(), equalTo("")); - assertThat(actualClassification2.getId(), startsWith(ID_PREFIX_CLASSIFICATION)); - - // does exist already - try { - expectedClassification = (ClassificationImpl) this.createDummyClassificationWithUniqueKey(domain, "TASK"); - expectedClassification.setKey(key); - classificationService.createClassification(expectedClassification); - fail("Should have thrown 'ClassificationAlreadyExistException' here."); - } catch (ClassificationAlreadyExistException e) { - } - - // new classification but master existing - expectedClassification = (ClassificationImpl) this.createDummyClassificationWithUniqueKey("DOMAIN_B", - "TASK"); - expectedClassification.setKey(key); - classificationService.createClassification(expectedClassification); - actualClassification = classificationService.getClassification(key, "DOMAIN_B"); - assertThat(actualClassification, not(equalTo(null))); - assertThat(actualClassification.getCreated(), not(equalTo(null))); - assertThat(actualClassification.getId(), not(equalTo(null))); - assertThat(actualClassification.getKey(), equalTo(key)); - assertThat(actualClassification.getDomain(), equalTo("DOMAIN_B")); - assertThat(actualClassification.getId(), startsWith(ID_PREFIX_CLASSIFICATION)); - // verify that - Classification masterResults = classificationService.getClassification(key, ""); - assertThat(masterResults, not(equalTo(null))); - - // invalid serviceLevel - try { - expectedClassification = (ClassificationImpl) this.createDummyClassificationWithUniqueKey(domain, - "TASK"); - expectedClassification.setKey(""); - expectedClassification.setServiceLevel("ASAP"); - classificationService.createClassification(expectedClassification); - fail("Should have thrown IllegalArgumentException, because ServiceLevel is invalid."); - } catch (InvalidArgumentException e) { - } - } - @Test public void testFindAllClassifications() throws ClassificationAlreadyExistException, NotAuthorizedException, DomainNotFoundException, @@ -183,7 +99,7 @@ public class ClassificationServiceImplIntAutoCommitTest { } @Test - public void testInsertAndClassificationMapper() + public void testInsertClassification() throws NotAuthorizedException, ClassificationAlreadyExistException, InvalidArgumentException, DomainNotFoundException { Classification classification = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); @@ -198,7 +114,7 @@ public class ClassificationServiceImplIntAutoCommitTest { } @Test - public void testUpdateAndClassificationMapper() + public void testUpdateClassification() throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, ConcurrencyException, DomainNotFoundException, InvalidArgumentException { Classification classification = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); @@ -221,142 +137,7 @@ public class ClassificationServiceImplIntAutoCommitTest { } @Test - public void testFindWithClassificationMapperDomainAndCategory() - throws ClassificationAlreadyExistException, NotAuthorizedException, DomainNotFoundException, - InvalidArgumentException { - Classification classification1 = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification1.setCategory("EXTERNAL"); - classificationService.createClassification(classification1); - Classification classification2 = this.createDummyClassificationWithUniqueKey("DOMAIN_B", "TASK"); - classification2.setCategory("EXTERNAL"); - classificationService.createClassification(classification2); - Classification classification3 = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification3.setCategory("MANUAL"); - classificationService.createClassification(classification3); - - List list = classificationService.createClassificationQuery() - .categoryIn("EXTERNAL") - .domainIn("DOMAIN_A") - .list(); - Assert.assertEquals(1, list.size()); - list = classificationService.createClassificationQuery().domainIn("DOMAIN_A", "DOMAIN_C").list(); - Assert.assertEquals(2, list.size()); - } - - @Test - public void testFindWithClassificationMapperCustomAndCategory() - throws ClassificationAlreadyExistException, NotAuthorizedException, DomainNotFoundException, - InvalidArgumentException { - Classification classification1 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification1.setDescription("DESC1"); - classification1.setCategory("EXTERNAL"); - classificationService.createClassification(classification1); - Classification classification2 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification2.setDescription("DESC1"); - classification2.setCustom1("custom1"); - classification2.setCategory("EXTERNAL"); - classificationService.createClassification(classification2); - Classification classification3 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification3.setCustom1("custom2"); - classification3.setCustom2("custom1"); - classification3.setCategory("MANUAL"); - classificationService.createClassification(classification3); - Classification classification4 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification4.setDescription("description2"); - classification4.setCustom8("custom2"); - classification4.setCategory("EXTERNAL"); - classificationService.createClassification(classification4); - - List list = classificationService.createClassificationQuery() - .descriptionLike("DESC1") - .customAttributeIn("1", "custom1") - .list(); - Assert.assertEquals(1, list.size()); - list = classificationService.createClassificationQuery().customAttributeIn("2", "custom1").list(); - Assert.assertEquals(1, list.size()); - list = classificationService.createClassificationQuery() - .descriptionLike("DESC1") - .categoryIn("EXTERNAL") - .list(); - Assert.assertEquals(2, list.size()); - } - - @Test - public void testFindWithClassificationMapperPriorityTypeAndParent() - throws ClassificationAlreadyExistException, NumberFormatException, NotAuthorizedException, - DomainNotFoundException, InvalidArgumentException { - Classification classification = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification.setPriority(Integer.decode("5")); - classificationService.createClassification(classification); - Classification classification1 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification1.setPriority(Integer.decode("3")); - classification1.setParentId(classification.getId()); - classificationService.createClassification(classification1); - Classification classification2 = this.createDummyClassificationWithUniqueKey("", "DOCUMENT"); - classification2.setPriority(Integer.decode("5")); - classification2.setParentId(classification.getId()); - classificationService.createClassification(classification2); - - Classification classification3 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification3.setPriority(Integer.decode("5")); - classification3.setParentId(classification1.getId()); - classificationService.createClassification(classification3); - - List list = classificationService.createClassificationQuery() - .parentIdIn(classification.getId()) - .list(); - Assert.assertEquals(2, list.size()); - list = classificationService.createClassificationQuery().typeIn("TASK").priorityIn(Integer.decode("5")).list(); - Assert.assertEquals(2, list.size()); - list = classificationService.createClassificationQuery() - .priorityIn(Integer.decode("5")) - .typeIn("TASK") - .parentIdIn(classification1.getId()) - .list(); - Assert.assertEquals(1, list.size()); - } - - @Test - public void testFindWithClassificationMapperServiceLevelNameAndDescription() - throws ClassificationAlreadyExistException, NotAuthorizedException, DomainNotFoundException, - InvalidArgumentException { - int all = 0; - Classification classification = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification.setServiceLevel("P1D"); - classification.setName("name1"); - classification.setDescription("desc"); - classificationService.createClassification(classification); - all++; - Classification classification1 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification1.setServiceLevel("P2D"); - classification1.setName("name1"); - classification1.setDescription("desc"); - classificationService.createClassification(classification1); - all++; - Classification classification2 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification2.setServiceLevel("P1D"); - classification2.setName("name"); - classification2.setDescription("desc"); - classificationService.createClassification(classification2); - all++; - Classification classification3 = this.createDummyClassificationWithUniqueKey("", "TASK"); - classification3.setName("name1"); - classification3.setDescription("description"); - classificationService.createClassification(classification3); - all++; - - List list = classificationService.createClassificationQuery().nameIn("name").list(); - Assert.assertEquals(1, list.size()); - list = classificationService.createClassificationQuery().serviceLevelIn("P1D").descriptionLike("desc").list(); - Assert.assertEquals(2, list.size()); - list = classificationService.createClassificationQuery().serviceLevelIn("P2D").nameIn("name").list(); - Assert.assertEquals(0, list.size()); - list = classificationService.createClassificationQuery().descriptionLike("desc%").list(); - Assert.assertEquals(all, list.size()); - } - - @Test - public void testDefaultSettingsWithClassificationMapper() + public void testDefaultSettings() throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, ConcurrencyException, DomainNotFoundException, InvalidArgumentException { Classification classification = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java index 9ba584873..05f43212d 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java @@ -88,52 +88,6 @@ public class ClassificationServiceImplIntExplicitTest { final String key = "dummy-key"; ClassificationImpl expectedClassification; Classification actualClassification; - Classification actualClassification2; - - // empty classification (master) - expectedClassification = (ClassificationImpl) this.createNewClassificationWithUniqueKey("", "TASK"); - expectedClassification = (ClassificationImpl) classificationService - .createClassification(expectedClassification); - connection.commit(); - actualClassification = classificationService.getClassification(expectedClassification.getKey(), - expectedClassification.getDomain()); - assertThat(actualClassification, not(equalTo(null))); - assertThat(actualClassification.getCreated(), not(equalTo(null))); - assertThat(actualClassification.getId(), not(equalTo(null))); - assertThat(actualClassification.getId(), startsWith(ID_PREFIX_CLASSIFICATION)); - - // specific to domain + master - expectedClassification = (ClassificationImpl) this.createNewClassificationWithUniqueKey(domain, "TASK"); - expectedClassification.setKey(key); - expectedClassification = (ClassificationImpl) classificationService - .createClassification(expectedClassification); - connection.commit(); - actualClassification = classificationService.getClassification(expectedClassification.getKey(), - expectedClassification.getDomain()); - actualClassification2 = classificationService.getClassification(expectedClassification.getKey(), ""); - assertThat(actualClassification, not(equalTo(null))); - assertThat(actualClassification.getCreated(), not(equalTo(null))); - assertThat(actualClassification.getId(), not(equalTo(null))); - assertThat(actualClassification.getKey(), equalTo(key)); - assertThat(actualClassification.getDomain(), equalTo(domain)); - assertThat(actualClassification.getId(), startsWith(ID_PREFIX_CLASSIFICATION)); - assertThat(actualClassification2, not(equalTo(null))); - assertThat(actualClassification2.getCreated(), not(equalTo(null))); - assertThat(actualClassification2.getId(), not(equalTo(null))); - assertThat(actualClassification2.getId(), not(equalTo(actualClassification.getId()))); - assertThat(actualClassification2.getKey(), equalTo(key)); - assertThat(actualClassification2.getDomain(), equalTo("")); - assertThat(actualClassification2.getId(), startsWith(ID_PREFIX_CLASSIFICATION)); - - // does exist already - try { - expectedClassification = (ClassificationImpl) this.createNewClassificationWithUniqueKey(domain, "TASK"); - expectedClassification.setKey(key); - classificationService.createClassification(expectedClassification); - connection.commit(); - fail("Should have thrown 'ClassificationAlreadyExistException' here."); - } catch (ClassificationAlreadyExistException e) { - } // new classification but master existing expectedClassification = (ClassificationImpl) this.createNewClassificationWithUniqueKey("", "TASK"); @@ -247,153 +201,6 @@ public class ClassificationServiceImplIntExplicitTest { connection.commit(); } - @Test - public void testFindWithClassificationMapperDomainAndCategory() - throws SQLException, ClassificationAlreadyExistException, NotAuthorizedException, - DomainNotFoundException, InvalidArgumentException { - Connection connection = dataSource.getConnection(); - taskanaEngineImpl.setConnection(connection); - Classification classification1 = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification1.setCategory("EXTERNAL"); - classificationService.createClassification(classification1); - Classification classification2 = this.createNewClassificationWithUniqueKey("DOMAIN_B", "TASK"); - classification2.setCategory("EXTERNAL"); - classificationService.createClassification(classification2); - - Classification classification3 = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification3.setCategory("MANUAL"); - classificationService.createClassification(classification3); - - List list = classificationService.createClassificationQuery() - .categoryIn("EXTERNAL") - .domainIn("DOMAIN_A") - .list(); - Assert.assertEquals(1, list.size()); - list = classificationService.createClassificationQuery().domainIn("DOMAIN_A", "domain3").list(); - Assert.assertEquals(2, list.size()); - connection.commit(); - } - - @Test - public void testFindWithClassificationMapperCustomAndCategory() - throws SQLException, ClassificationAlreadyExistException, NotAuthorizedException, - DomainNotFoundException, InvalidArgumentException { - Connection connection = dataSource.getConnection(); - taskanaEngineImpl.setConnection(connection); - Classification classification1 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification1.setDescription("DESC1"); - classification1.setCategory("EXTERNAL"); - classificationService.createClassification(classification1); - Classification classification2 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification2.setDescription("DESC1"); - classification2.setCustom1("custom1"); - classification2.setCategory("EXTERNAL"); - classificationService.createClassification(classification2); - Classification classification3 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification3.setCustom1("custom2"); - classification3.setCustom2("custom1"); - classification3.setCategory("MANUAL"); - classificationService.createClassification(classification3); - Classification classification4 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification4.setDescription("description2"); - classification4.setCustom8("custom2"); - classification4.setCategory("EXTERNAL"); - classificationService.createClassification(classification4); - - List list = classificationService.createClassificationQuery() - .descriptionLike("DESC1") - .customAttributeIn("1", "custom1") - .list(); - Assert.assertEquals(1, list.size()); - list = classificationService.createClassificationQuery().customAttributeIn("1", "custom2").list(); - Assert.assertEquals(1, list.size()); - list = classificationService.createClassificationQuery() - .descriptionLike("DESC1") - .categoryIn("EXTERNAL") - .list(); - Assert.assertEquals(2, list.size()); - connection.commit(); - } - - @Test - public void testFindWithClassificationMapperPriorityTypeAndParent() - throws SQLException, ClassificationAlreadyExistException, NotAuthorizedException, - DomainNotFoundException, InvalidArgumentException { - Connection connection = dataSource.getConnection(); - taskanaEngineImpl.setConnection(connection); - Classification classification = this.createNewClassificationWithUniqueKey("", "TASK"); - classification.setPriority(Integer.decode("5")); - classificationService.createClassification(classification); - Classification classification1 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification1.setPriority(Integer.decode("3")); - classification1.setParentId(classification.getId()); - classificationService.createClassification(classification1); - Classification classification2 = this.createNewClassificationWithUniqueKey("", "DOCUMENT"); - classification2.setPriority(Integer.decode("5")); - classification2.setParentId(classification.getId()); - classificationService.createClassification(classification2); - Classification classification3 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification3.setPriority(Integer.decode("5")); - classification3.setParentId(classification1.getId()); - classificationService.createClassification(classification3); - - List list = classificationService.createClassificationQuery() - .parentIdIn(classification.getId()) - .list(); - Assert.assertEquals(2, list.size()); - list = classificationService.createClassificationQuery().typeIn("TASK").priorityIn(Integer.decode("5")).list(); - Assert.assertEquals(2, list.size()); - list = classificationService.createClassificationQuery() - .priorityIn(Integer.decode("5")) - .typeIn("TASK") - .parentIdIn(classification1.getId()) - .list(); - Assert.assertEquals(1, list.size()); - connection.commit(); - } - - @Test - public void testFindWithClassificationMapperServiceLevelNameAndDescription() - throws NotAuthorizedException, SQLException, ClassificationAlreadyExistException, - DomainNotFoundException, InvalidArgumentException { - Connection connection = dataSource.getConnection(); - taskanaEngineImpl.setConnection(connection); - int all = 0; - Classification classification = this.createNewClassificationWithUniqueKey("", "TASK"); - classification.setServiceLevel("P1D"); - classification.setName("name1"); - classification.setDescription("desc"); - classificationService.createClassification(classification); - all++; - Classification classification1 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification1.setServiceLevel("P2D"); - classification1.setName("name1"); - classification1.setDescription("desc"); - classificationService.createClassification(classification1); - all++; - Classification classification2 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification2.setServiceLevel("P1D"); - classification2.setName("name"); - classification2.setDescription("desc"); - classificationService.createClassification(classification2); - all++; - Classification classification3 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification3.setName("name1"); - classification3.setDescription("description"); - classificationService.createClassification(classification3); - all++; - - List list = classificationService.createClassificationQuery().nameIn("name").list(); - Assert.assertEquals(1, list.size()); - list = classificationService.createClassificationQuery().serviceLevelIn("P1D").descriptionLike("desc").list(); - Assert.assertEquals(2, list.size()); - list = classificationService.createClassificationQuery().serviceLevelIn("P2D").nameIn("name").list(); - Assert.assertEquals(0, list.size()); - list = classificationService.createClassificationQuery().descriptionLike("desc%").list(); - Assert.assertEquals(all, list.size()); - connection.commit(); - } - @Test public void testDefaultSettingsWithClassificationQuery() throws NotAuthorizedException, SQLException, ClassificationAlreadyExistException, ClassificationNotFoundException, InvalidArgumentException,