diff --git a/lib/taskana-core/src/test/java/pro/taskana/sampledata/SampleDataGeneratorTest.java b/common/taskana-common-data/src/test/java/pro/taskana/sampledata/SampleDataGeneratorTest.java similarity index 100% rename from lib/taskana-core/src/test/java/pro/taskana/sampledata/SampleDataGeneratorTest.java rename to common/taskana-common-data/src/test/java/pro/taskana/sampledata/SampleDataGeneratorTest.java diff --git a/lib/taskana-core/src/main/java/pro/taskana/workbasket/internal/WorkbasketServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/workbasket/internal/WorkbasketServiceImpl.java index 8aee029f6..aef141bfb 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/workbasket/internal/WorkbasketServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/workbasket/internal/WorkbasketServiceImpl.java @@ -1044,8 +1044,8 @@ public class WorkbasketServiceImpl implements WorkbasketService { * @param workbasketImplToUpdate the workbasket to update * @throws ConcurrencyException if the workbasket has been modified by some other process. */ - void checkModifiedHasNotChanged(Workbasket oldWorkbasket, WorkbasketImpl workbasketImplToUpdate) - throws ConcurrencyException { + public void checkModifiedHasNotChanged( + Workbasket oldWorkbasket, WorkbasketImpl workbasketImplToUpdate) throws ConcurrencyException { if (!oldWorkbasket.getModified().equals(workbasketImplToUpdate.getModified())) { diff --git a/lib/taskana-core/src/test/java/acceptance/AbstractAccTest.java b/lib/taskana-core/src/test/java/acceptance/AbstractAccTest.java index 79eb56959..103a0ed88 100644 --- a/lib/taskana-core/src/test/java/acceptance/AbstractAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/AbstractAccTest.java @@ -23,7 +23,6 @@ import pro.taskana.common.api.TimeInterval; import pro.taskana.common.api.WorkingDaysToDaysConverter; import pro.taskana.common.internal.JobMapper; import pro.taskana.common.internal.TaskanaEngineImpl; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; import pro.taskana.sampledata.SampleDataGenerator; import pro.taskana.task.api.models.Attachment; import pro.taskana.task.api.models.ObjectReference; diff --git a/lib/taskana-core/src/test/java/pro/taskana/ArchitectureTest.java b/lib/taskana-core/src/test/java/acceptance/ArchitectureTest.java similarity index 98% rename from lib/taskana-core/src/test/java/pro/taskana/ArchitectureTest.java rename to lib/taskana-core/src/test/java/acceptance/ArchitectureTest.java index 68bc54497..bdc2bfd39 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/ArchitectureTest.java +++ b/lib/taskana-core/src/test/java/acceptance/ArchitectureTest.java @@ -1,4 +1,4 @@ -package pro.taskana; +package acceptance; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; @@ -228,7 +228,7 @@ class ArchitectureTest { private static ArchCondition beDefinedInTaskanaSubPackages( List excludePackages) { - return new ArchCondition<>("all be defined in TASKANA_SUB_PACKAGES") { + return new ArchCondition("all be defined in TASKANA_SUB_PACKAGES") { @Override public void check(JavaClass javaClass, ConditionEvents events) { if (TASKANA_SUB_PACKAGES.stream().noneMatch(p -> javaClass.getPackageName().startsWith(p)) @@ -268,7 +268,7 @@ class ArchitectureTest { return values; }; - return new ArchCondition<>("not use the SQL function 'CURRENT_TIMESTAMP'") { + return new ArchCondition("not use the SQL function 'CURRENT_TIMESTAMP'") { @Override public void check(JavaClass javaClass, ConditionEvents events) { for (JavaMethod method : javaClass.getAllMethods()) { diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/CreateTaskModelHelper.java b/lib/taskana-core/src/test/java/acceptance/CreateTaskModelHelper.java similarity index 81% rename from lib/taskana-core/src/test/java/pro/taskana/task/internal/CreateTaskModelHelper.java rename to lib/taskana-core/src/test/java/acceptance/CreateTaskModelHelper.java index 4833b5a4e..1459a2b60 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/CreateTaskModelHelper.java +++ b/lib/taskana-core/src/test/java/acceptance/CreateTaskModelHelper.java @@ -1,4 +1,4 @@ -package pro.taskana.task.internal; +package acceptance; import java.time.Duration; import java.time.Instant; @@ -9,7 +9,6 @@ import pro.taskana.classification.internal.models.ClassificationImpl; import pro.taskana.task.api.TaskState; import pro.taskana.task.internal.models.AttachmentImpl; import pro.taskana.task.internal.models.TaskImpl; -import pro.taskana.workbasket.internal.models.WorkbasketImpl; public class CreateTaskModelHelper { @@ -22,15 +21,6 @@ public class CreateTaskModelHelper { return classification; } - public static WorkbasketImpl createWorkbasket(String id, String key) { - WorkbasketImpl workbasket = new WorkbasketImpl(); - workbasket.setId(id); - workbasket.setDomain("Domain1"); - workbasket.setKey(key); - workbasket.setName("Workbasket " + id); - return workbasket; - } - public static AttachmentImpl createAttachment(String id, String taskId) { AttachmentImpl attachment = new AttachmentImpl(); attachment.setId(id); diff --git a/lib/taskana-core/src/test/java/pro/taskana/PojoTest.java b/lib/taskana-core/src/test/java/acceptance/PojoTest.java similarity index 99% rename from lib/taskana-core/src/test/java/pro/taskana/PojoTest.java rename to lib/taskana-core/src/test/java/acceptance/PojoTest.java index 536c6286c..5ec5cbbae 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/PojoTest.java +++ b/lib/taskana-core/src/test/java/acceptance/PojoTest.java @@ -1,4 +1,4 @@ -package pro.taskana; +package acceptance; import static org.assertj.core.api.Assertions.assertThat; diff --git a/lib/taskana-core/src/test/java/acceptance/TaskTestMapper.java b/lib/taskana-core/src/test/java/acceptance/TaskTestMapper.java new file mode 100644 index 000000000..c9a720685 --- /dev/null +++ b/lib/taskana-core/src/test/java/acceptance/TaskTestMapper.java @@ -0,0 +1,82 @@ +package acceptance; + +import java.util.List; +import java.util.Map; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.type.ClobTypeHandler; + +import pro.taskana.common.internal.persistence.MapTypeHandler; +import pro.taskana.task.internal.models.TaskImpl; + +/** This class contains specific mybatis mappings for task tests. */ + +@SuppressWarnings({"checkstyle:LineLength"}) +public interface TaskTestMapper { + + @Select("select CUSTOM_ATTRIBUTES from TASK where id = #{taskId}") + @Results( + value = { + @Result( + property = "customAttributes", + column = "CUSTOM_ATTRIBUTES", + javaType = String.class, + typeHandler = ClobTypeHandler.class) + }) + String getCustomAttributesAsString(@Param("taskId") String taskId); + + @Select( + "SELECT ID, CREATED, CLAIMED, COMPLETED, MODIFIED, PLANNED, DUE, NAME, CREATOR, DESCRIPTION, NOTE, PRIORITY, STATE, CLASSIFICATION_CATEGORY, CLASSIFICATION_KEY, CLASSIFICATION_ID, WORKBASKET_ID, WORKBASKET_KEY, DOMAIN, BUSINESS_PROCESS_ID, PARENT_BUSINESS_PROCESS_ID, OWNER, POR_COMPANY, POR_SYSTEM, POR_INSTANCE, POR_TYPE, POR_VALUE, IS_READ, IS_TRANSFERRED, CUSTOM_ATTRIBUTES, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, CUSTOM_9, CUSTOM_10 " + + "FROM TASK " + + "WHERE CUSTOM_ATTRIBUTES like #{searchText}") + @Results( + value = { + @Result(property = "id", column = "ID"), + @Result(property = "created", column = "CREATED"), + @Result(property = "claimed", column = "CLAIMED"), + @Result(property = "completed", column = "COMPLETED"), + @Result(property = "modified", column = "MODIFIED"), + @Result(property = "planned", column = "PLANNED"), + @Result(property = "due", column = "DUE"), + @Result(property = "name", column = "NAME"), + @Result(property = "creator", column = "CREATOR"), + @Result(property = "description", column = "DESCRIPTION"), + @Result(property = "note", column = "NOTE"), + @Result(property = "priority", column = "PRIORITY"), + @Result(property = "state", column = "STATE"), + @Result( + property = "classificationSummaryImpl.category", + column = "CLASSIFICATION_CATEGORY"), + @Result(property = "classificationSummaryImpl.id", column = "CLASSIFICATION_ID"), + @Result(property = "classificationSummaryImpl.key", column = "CLASSIFICATION_KEY"), + @Result(property = "domain", column = "DOMAIN"), + @Result(property = "businessProcessId", column = "BUSINESS_PROCESS_ID"), + @Result(property = "parentBusinessProcessId", column = "PARENT_BUSINESS_PROCESS_ID"), + @Result(property = "owner", column = "OWNER"), + @Result(property = "primaryObjRef.company", column = "POR_COMPANY"), + @Result(property = "primaryObjRef.system", column = "POR_SYSTEM"), + @Result(property = "primaryObjRef.systemInstance", column = "POR_INSTANCE"), + @Result(property = "primaryObjRef.type", column = "POR_TYPE"), + @Result(property = "primaryObjRef.value", column = "POR_VALUE"), + @Result(property = "isRead", column = "IS_READ"), + @Result(property = "isTransferred", column = "IS_TRANSFERRED"), + @Result( + property = "customAttributes", + column = "CUSTOM_ATTRIBUTES", + javaType = Map.class, + typeHandler = MapTypeHandler.class), + @Result(property = "custom1", column = "CUSTOM_1"), + @Result(property = "custom2", column = "CUSTOM_2"), + @Result(property = "custom3", column = "CUSTOM_3"), + @Result(property = "custom4", column = "CUSTOM_4"), + @Result(property = "custom5", column = "CUSTOM_5"), + @Result(property = "custom6", column = "CUSTOM_6"), + @Result(property = "custom7", column = "CUSTOM_7"), + @Result(property = "custom8", column = "CUSTOM_8"), + @Result(property = "custom9", column = "CUSTOM_9"), + @Result(property = "custom10", column = "CUSTOM_10") + }) + List selectTasksByCustomAttributeLike(@Param("searchText") String searchText); +} diff --git a/lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineProxy.java b/lib/taskana-core/src/test/java/acceptance/TaskanaEngineProxy.java similarity index 86% rename from lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineProxy.java rename to lib/taskana-core/src/test/java/acceptance/TaskanaEngineProxy.java index 597a16ab9..9cc11542f 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineProxy.java +++ b/lib/taskana-core/src/test/java/acceptance/TaskanaEngineProxy.java @@ -1,9 +1,11 @@ -package pro.taskana.common.internal; +package acceptance; import java.lang.reflect.Field; import org.apache.ibatis.session.SqlSession; import pro.taskana.common.api.TaskanaEngine; +import pro.taskana.common.internal.InternalTaskanaEngine; +import pro.taskana.common.internal.TaskanaEngineImpl; /** Utility class to enable unit tests to access mappers directly. */ public class TaskanaEngineProxy { diff --git a/lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineTestConfiguration.java b/lib/taskana-core/src/test/java/acceptance/TaskanaEngineTestConfiguration.java similarity index 99% rename from lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineTestConfiguration.java rename to lib/taskana-core/src/test/java/acceptance/TaskanaEngineTestConfiguration.java index 1107da491..28cd64867 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineTestConfiguration.java +++ b/lib/taskana-core/src/test/java/acceptance/TaskanaEngineTestConfiguration.java @@ -1,4 +1,4 @@ -package pro.taskana.common.internal; +package acceptance; import java.io.File; import java.io.FileInputStream; diff --git a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/models/ClassificationModelsCloneTest.java b/lib/taskana-core/src/test/java/acceptance/classification/ClassificationModelsCloneTest.java similarity index 90% rename from lib/taskana-core/src/test/java/pro/taskana/classification/internal/models/ClassificationModelsCloneTest.java rename to lib/taskana-core/src/test/java/acceptance/classification/ClassificationModelsCloneTest.java index 8ecc93827..67ffba26d 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/models/ClassificationModelsCloneTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/ClassificationModelsCloneTest.java @@ -1,4 +1,4 @@ -package pro.taskana.classification.internal.models; +package acceptance.classification; import static org.assertj.core.api.Assertions.assertThat; import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_1; @@ -13,6 +13,8 @@ import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_8; import org.junit.jupiter.api.Test; import pro.taskana.classification.api.models.Classification; +import pro.taskana.classification.internal.models.ClassificationImpl; +import pro.taskana.classification.internal.models.ClassificationSummaryImpl; class ClassificationModelsCloneTest { @@ -44,8 +46,9 @@ class ClassificationModelsCloneTest { assertThat(dummyClassificationSummaryCloned).isNotEqualTo(dummyClassificationSummary); dummyClassificationSummaryCloned.setId(dummyClassificationSummary.getId()); - assertThat(dummyClassificationSummaryCloned).isEqualTo(dummyClassificationSummary); - assertThat(dummyClassificationSummaryCloned).isNotSameAs(dummyClassificationSummary); + assertThat(dummyClassificationSummaryCloned) + .isEqualTo(dummyClassificationSummary) + .isNotSameAs(dummyClassificationSummary); } @Test @@ -75,7 +78,8 @@ class ClassificationModelsCloneTest { assertThat(dummyClassificationCloned).isNotEqualTo(dummyClassification); dummyClassificationCloned.setId(dummyClassification.getId()); - assertThat(dummyClassificationCloned).isEqualTo(dummyClassification); - assertThat(dummyClassificationCloned).isNotSameAs(dummyClassification); + assertThat(dummyClassificationCloned) + .isEqualTo(dummyClassification) + .isNotSameAs(dummyClassification); } } diff --git a/lib/taskana-core/src/test/java/acceptance/classification/ClassificationQueryAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/ClassificationQueryAccTest.java index 042a8b445..2f35c3128 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/ClassificationQueryAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/ClassificationQueryAccTest.java @@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat; import acceptance.AbstractAccTest; import java.util.List; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestTemplate; import org.junit.jupiter.api.extension.ExtendWith; import pro.taskana.classification.api.ClassificationService; @@ -17,17 +18,7 @@ import pro.taskana.common.test.security.WithAccessId; class ClassificationQueryAccTest extends AbstractAccTest { @Test - void testFindClassificationsByDomainUnauthenticated() { - ClassificationService classificationService = taskanaEngine.getClassificationService(); - List classificationSummaryList = - classificationService.createClassificationQuery().domainIn("DOMAIN_A").list(); - - assertThat(classificationSummaryList).hasSize(18); - } - - @WithAccessId(user = "businessadmin") - @Test - void testFindClassificationsByDomainBusinessAdmin() { + void should_FindAllAccesibleClassifications_When_UserNotAuthenticated() { ClassificationService classificationService = taskanaEngine.getClassificationService(); List classificationSummaryList = classificationService.createClassificationQuery().domainIn("DOMAIN_A").list(); @@ -36,8 +27,9 @@ class ClassificationQueryAccTest extends AbstractAccTest { } @WithAccessId(user = "admin") - @Test - void testFindClassificationsByDomainAdmin() { + @WithAccessId(user = "businessadmin") + @TestTemplate + void should_FindAllAccessibleClassifications_When_UserInRoleAdminOrBusinessadmin() { ClassificationService classificationService = taskanaEngine.getClassificationService(); List classificationSummaryList = classificationService.createClassificationQuery().domainIn("DOMAIN_A").list(); diff --git a/lib/taskana-core/src/test/java/acceptance/config/TaskanaConfigAccTest.java b/lib/taskana-core/src/test/java/acceptance/config/TaskanaConfigAccTest.java index 5c8c0d2d6..821449f82 100644 --- a/lib/taskana-core/src/test/java/acceptance/config/TaskanaConfigAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/config/TaskanaConfigAccTest.java @@ -2,6 +2,7 @@ package acceptance.config; import static org.assertj.core.api.Assertions.assertThat; +import acceptance.TaskanaEngineTestConfiguration; import java.io.File; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -17,7 +18,6 @@ import org.junit.jupiter.api.Test; import pro.taskana.TaskanaEngineConfiguration; import pro.taskana.common.internal.TaskanaEngineImpl; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; /** Test taskana configuration without roles. */ class TaskanaConfigAccTest extends TaskanaEngineImpl { diff --git a/lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineConfigurationTest.java b/lib/taskana-core/src/test/java/acceptance/config/TaskanaEngineConfigTest.java similarity index 90% rename from lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineConfigurationTest.java rename to lib/taskana-core/src/test/java/acceptance/config/TaskanaEngineConfigTest.java index 38deb93fd..7af2fa39f 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/common/internal/TaskanaEngineConfigurationTest.java +++ b/lib/taskana-core/src/test/java/acceptance/config/TaskanaEngineConfigTest.java @@ -1,7 +1,8 @@ -package pro.taskana.common.internal; +package acceptance.config; import static org.assertj.core.api.Assertions.assertThat; +import acceptance.TaskanaEngineTestConfiguration; import javax.sql.DataSource; import org.junit.jupiter.api.Test; @@ -10,10 +11,10 @@ import pro.taskana.common.api.CustomHoliday; import pro.taskana.common.api.TaskanaEngine; /** Test of configuration. */ -class TaskanaEngineConfigurationTest { +class TaskanaEngineConfigTest { @Test - void testCreateTaskanaEngine() throws Exception { + void should_ReturnTaskanaEngine_When_BuildingWithConfiguration() throws Exception { DataSource ds = TaskanaEngineTestConfiguration.getDataSource(); TaskanaEngineConfiguration taskEngineConfiguration = new TaskanaEngineConfiguration(ds, false, TaskanaEngineTestConfiguration.getSchemaName()); @@ -30,7 +31,7 @@ class TaskanaEngineConfigurationTest { new TaskanaEngineConfiguration( ds, false, - false, + true, "/corpusChristiEnabled.properties", "|", TaskanaEngineTestConfiguration.getSchemaName()); @@ -46,7 +47,7 @@ class TaskanaEngineConfigurationTest { new TaskanaEngineConfiguration( ds, false, - false, + true, "/custom_holiday_taskana.properties", "|", TaskanaEngineTestConfiguration.getSchemaName()); @@ -62,7 +63,7 @@ class TaskanaEngineConfigurationTest { new TaskanaEngineConfiguration( ds, false, - false, + true, "/custom_holiday_With_Wrong_format_taskana.properties", "|", TaskanaEngineTestConfiguration.getSchemaName()); diff --git a/lib/taskana-core/src/test/java/acceptance/config/TaskanaRoleConfigAccTest.java b/lib/taskana-core/src/test/java/acceptance/config/TaskanaRoleConfigAccTest.java index 7fe545118..4a429846e 100644 --- a/lib/taskana-core/src/test/java/acceptance/config/TaskanaRoleConfigAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/config/TaskanaRoleConfigAccTest.java @@ -2,6 +2,7 @@ package acceptance.config; import static org.assertj.core.api.Assertions.assertThat; +import acceptance.TaskanaEngineTestConfiguration; import java.io.File; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -15,7 +16,6 @@ import org.junit.jupiter.api.Test; import pro.taskana.TaskanaEngineConfiguration; import pro.taskana.common.api.TaskanaRole; import pro.taskana.common.internal.TaskanaEngineImpl; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; /** Test taskana's role configuration. */ class TaskanaRoleConfigAccTest extends TaskanaEngineImpl { diff --git a/lib/taskana-core/src/test/java/acceptance/config/TaskanaSecurityConfigAccTest.java b/lib/taskana-core/src/test/java/acceptance/config/TaskanaSecurityConfigAccTest.java index 400b42414..1d05bae5e 100644 --- a/lib/taskana-core/src/test/java/acceptance/config/TaskanaSecurityConfigAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/config/TaskanaSecurityConfigAccTest.java @@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import acceptance.TaskanaEngineTestConfiguration; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -14,7 +15,6 @@ import org.junit.jupiter.api.Test; import pro.taskana.TaskanaEngineConfiguration; import pro.taskana.common.api.exceptions.SystemException; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; import pro.taskana.common.internal.configuration.DbSchemaCreator; import pro.taskana.sampledata.SampleDataGenerator; diff --git a/lib/taskana-core/src/test/java/pro/taskana/common/internal/util/ObjectAttributeChangeDetectorTest.java b/lib/taskana-core/src/test/java/acceptance/history/ObjectAttributeChangeDetectorTest.java similarity index 99% rename from lib/taskana-core/src/test/java/pro/taskana/common/internal/util/ObjectAttributeChangeDetectorTest.java rename to lib/taskana-core/src/test/java/acceptance/history/ObjectAttributeChangeDetectorTest.java index f3373bb23..a116f8d84 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/common/internal/util/ObjectAttributeChangeDetectorTest.java +++ b/lib/taskana-core/src/test/java/acceptance/history/ObjectAttributeChangeDetectorTest.java @@ -1,4 +1,4 @@ -package pro.taskana.common.internal.util; +package acceptance.history; import static org.assertj.core.api.Assertions.assertThat; @@ -12,6 +12,7 @@ import org.json.JSONArray; import org.json.JSONObject; import org.junit.jupiter.api.Test; +import pro.taskana.common.internal.util.ObjectAttributeChangeDetector; import pro.taskana.task.api.CallbackState; import pro.taskana.task.internal.models.TaskImpl; import pro.taskana.workbasket.api.WorkbasketType; diff --git a/lib/taskana-core/src/test/java/acceptance/report/AbstractReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/AbstractReportAccTest.java index f01ff1f2a..829fbdcc9 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/AbstractReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/AbstractReportAccTest.java @@ -1,11 +1,11 @@ package acceptance.report; +import acceptance.TaskanaEngineTestConfiguration; import javax.sql.DataSource; import org.junit.jupiter.api.BeforeAll; import pro.taskana.TaskanaEngineConfiguration; import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; import pro.taskana.sampledata.SampleDataGenerator; /** Abstract test class for all report building tests. */ diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ReportTest.java b/lib/taskana-core/src/test/java/acceptance/report/ReportTest.java similarity index 98% rename from lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ReportTest.java rename to lib/taskana-core/src/test/java/acceptance/report/ReportTest.java index 2e435eaff..c3b332d6b 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ReportTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ReportTest.java @@ -1,4 +1,4 @@ -package pro.taskana.monitor.internal; +package acceptance.report; import static org.assertj.core.api.Assertions.assertThat; @@ -48,7 +48,7 @@ class ReportTest { assertThat(report.getRows()).isEmpty(); Row sumRow = report.getSumRow(); assertThat(sumRow.getCells()).isEqualTo(new int[] {0, 0, 0, 0}); - assertThat(sumRow.getTotalValue()).isEqualTo(0); + assertThat(sumRow.getTotalValue()).isZero(); } @Test @@ -207,7 +207,7 @@ class ReportTest { assertThat(report.getRows()).isEmpty(); Row sumRow = report.getSumRow(); assertThat(sumRow.getCells()).isEqualTo(new int[] {0, 0, 0, 0}); - assertThat(sumRow.getTotalValue()).isEqualTo(0); + assertThat(sumRow.getTotalValue()).isZero(); } @Test diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkingDaysToDaysReportConverterTest.java b/lib/taskana-core/src/test/java/acceptance/report/WorkingDaysToDaysReportConverterTest.java similarity index 96% rename from lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkingDaysToDaysReportConverterTest.java rename to lib/taskana-core/src/test/java/acceptance/report/WorkingDaysToDaysReportConverterTest.java index 82537e737..29f805a34 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkingDaysToDaysReportConverterTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/WorkingDaysToDaysReportConverterTest.java @@ -1,4 +1,4 @@ -package pro.taskana.monitor.internal; +package acceptance.report; import static org.assertj.core.api.Assertions.assertThat; @@ -52,7 +52,7 @@ class WorkingDaysToDaysReportConverterTest { assertThat(instance.convertDaysToWorkingDays(-3)).isEqualTo(-1); assertThat(instance.convertDaysToWorkingDays(-2)).isEqualTo(-1); assertThat(instance.convertDaysToWorkingDays(-1)).isEqualTo(-1); - assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0); + assertThat(instance.convertDaysToWorkingDays(0)).isZero(); assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(2); assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(3); @@ -194,7 +194,7 @@ class WorkingDaysToDaysReportConverterTest { WorkingDaysToDaysReportConverter.initialize( getLargeListOfColumnHeaders(), converter, Instant.parse("2018-03-28T00:00:00.000Z")); - assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0); + assertThat(instance.convertDaysToWorkingDays(0)).isZero(); assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(1); @@ -210,7 +210,7 @@ class WorkingDaysToDaysReportConverterTest { WorkingDaysToDaysReportConverter.initialize( getLargeListOfColumnHeaders(), converter, Instant.parse("2018-05-16T00:00:00.000Z")); - assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0); + assertThat(instance.convertDaysToWorkingDays(0)).isZero(); assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(2); assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(2); @@ -225,7 +225,7 @@ class WorkingDaysToDaysReportConverterTest { WorkingDaysToDaysReportConverter.initialize( getLargeListOfColumnHeaders(), converter, Instant.parse("2018-04-26T00:00:00.000Z")); - assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0); + assertThat(instance.convertDaysToWorkingDays(0)).isZero(); assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(1); @@ -241,7 +241,7 @@ class WorkingDaysToDaysReportConverterTest { WorkingDaysToDaysReportConverter.initialize( getLargeListOfColumnHeaders(), converter, Instant.parse("2018-05-07T00:00:00.000Z")); - assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0); + assertThat(instance.convertDaysToWorkingDays(0)).isZero(); assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(2); assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(2); @@ -258,7 +258,7 @@ class WorkingDaysToDaysReportConverterTest { WorkingDaysToDaysReportConverter.initialize( getLargeListOfColumnHeaders(), converter, Instant.parse("2018-10-01T00:00:00.000Z")); - assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0); + assertThat(instance.convertDaysToWorkingDays(0)).isZero(); assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(2); @@ -275,7 +275,7 @@ class WorkingDaysToDaysReportConverterTest { WorkingDaysToDaysReportConverter.initialize( getLargeListOfColumnHeaders(), converter, Instant.parse("2018-12-20T00:00:00.000Z")); - assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0); + assertThat(instance.convertDaysToWorkingDays(0)).isZero(); assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(1); @@ -298,9 +298,9 @@ class WorkingDaysToDaysReportConverterTest { WorkingDaysToDaysReportConverter.initialize( getLargeListOfColumnHeaders(), converter, Instant.parse("2018-10-26T00:00:00.000Z")); - assertThat(instance.convertDaysToWorkingDays(0)).isEqualTo(0); - assertThat(instance.convertDaysToWorkingDays(1)).isEqualTo(0); - assertThat(instance.convertDaysToWorkingDays(2)).isEqualTo(0); + assertThat(instance.convertDaysToWorkingDays(0)).isZero(); + assertThat(instance.convertDaysToWorkingDays(1)).isZero(); + assertThat(instance.convertDaysToWorkingDays(2)).isZero(); assertThat(instance.convertDaysToWorkingDays(3)).isEqualTo(1); assertThat(instance.convertDaysToWorkingDays(4)).isEqualTo(2); assertThat(instance.convertDaysToWorkingDays(5)).isEqualTo(2); diff --git a/lib/taskana-core/src/test/java/acceptance/task/CreateTaskAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/CreateTaskAccTest.java index 8481b88cf..5e8b977f3 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/CreateTaskAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/CreateTaskAccTest.java @@ -4,6 +4,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import acceptance.AbstractAccTest; +import acceptance.TaskTestMapper; +import acceptance.TaskanaEngineProxy; import java.time.Duration; import java.time.Instant; import java.util.Map; @@ -17,7 +19,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import pro.taskana.common.api.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.NotAuthorizedException; -import pro.taskana.common.internal.TaskanaEngineProxy; import pro.taskana.common.test.security.JaasExtension; import pro.taskana.common.test.security.WithAccessId; import pro.taskana.task.api.TaskCustomField; @@ -29,7 +30,6 @@ import pro.taskana.task.api.models.AttachmentSummary; import pro.taskana.task.api.models.ObjectReference; import pro.taskana.task.api.models.Task; import pro.taskana.task.internal.AttachmentMapper; -import pro.taskana.task.internal.TaskTestMapper; import pro.taskana.workbasket.api.WorkbasketService; import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException; import pro.taskana.workbasket.api.models.Workbasket; diff --git a/lib/taskana-core/src/test/java/acceptance/task/DeleteTaskAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/DeleteTaskAccTest.java index c68a116b7..44add0150 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/DeleteTaskAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/DeleteTaskAccTest.java @@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import acceptance.AbstractAccTest; +import acceptance.TaskanaEngineProxy; import java.util.ArrayList; import java.util.List; import org.assertj.core.api.ThrowableAssert.ThrowingCallable; @@ -14,7 +15,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import pro.taskana.common.api.BulkOperationResults; import pro.taskana.common.api.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.TaskanaException; -import pro.taskana.common.internal.TaskanaEngineProxy; import pro.taskana.common.test.security.JaasExtension; import pro.taskana.common.test.security.WithAccessId; import pro.taskana.task.api.TaskService; diff --git a/lib/taskana-core/src/test/java/acceptance/task/QueryTaskWithAttachmentAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/QueryTaskWithAttachmentAccTest.java index 9031746b7..f4135fdf4 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/QueryTaskWithAttachmentAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/QueryTaskWithAttachmentAccTest.java @@ -11,7 +11,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import pro.taskana.common.test.security.JaasExtension; import pro.taskana.common.test.security.WithAccessId; -import pro.taskana.task.api.TaskCustomField; import pro.taskana.task.api.TaskService; import pro.taskana.task.api.models.Attachment; import pro.taskana.task.api.models.AttachmentSummary; @@ -29,7 +28,7 @@ class QueryTaskWithAttachmentAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1") @Test - void testGetAttachmentSummariesFromTask() { + void should_ReturnTaskSummaryIncludingAttachments_When_QueryingTaskWithAttachments() { TaskService taskService = taskanaEngine.getTaskService(); List tasks = taskService.createTaskQuery().classificationKeyIn("L110102").list(); assertThat(tasks).hasSize(1); @@ -40,7 +39,7 @@ class QueryTaskWithAttachmentAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-2") @Test - void testGetNoAttachmentSummaryFromTask() { + void should_ReturnTaskSummaryWithEmptyAttachments_When_QueryingTaskWithoutAttachments() { TaskService taskService = taskanaEngine.getTaskService(); List tasks = taskService.createTaskQuery().list(); assertThat(tasks).hasSize(30); @@ -51,7 +50,7 @@ class QueryTaskWithAttachmentAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1") @Test - void testIfNewTaskHasEmptyAttachmentList() { + void should_NotSetAttachmentSummariesToNull_When_CreatingNewTaskWithTaskService() { TaskService taskService = taskanaEngine.getTaskService(); Task task = taskService.newTask("WBI:100000000000000000000000000000000006"); assertThat(task.getAttachments()).isNotNull(); @@ -60,7 +59,7 @@ class QueryTaskWithAttachmentAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1") @Test - void should_ConfirmIfAttachmentSummariesAreCorrect_When_UsingTaskQueryAndGetTaskById() + void should_ReturnTheSameAttachmentsOfATaskSummary_When_UsingTaskQueryAndTaskService() throws Exception { TaskService taskService = taskanaEngine.getTaskService(); // find Task with ID TKI:00...00 @@ -81,31 +80,4 @@ class QueryTaskWithAttachmentAccTest extends AbstractAccTest { .usingElementComparator(REFERENCE_COMPARATOR) .doesNotContainAnyElementsOf(originalAttachments); // but not same reference } - - @WithAccessId(user = "user-1-1") - @Test - void should_ConfirmIfAttachmentSummariesAreCorrect() throws Exception { - TaskService taskService = taskanaEngine.getTaskService(); - // find Task with ID TKI:00...00 - List tasks = - taskService - .createTaskQuery() - .classificationKeyIn("T2000") - .customAttributeIn(TaskCustomField.CUSTOM_1, "custom1") - .list(); - assertThat(tasks).hasSize(1); - List queryAttachmentSummaries = tasks.get(0).getAttachmentSummaries(); - - Task originalTask = taskService.getTask("TKI:000000000000000000000000000000000000"); - List originalAttachments = - originalTask.getAttachments().stream() - .map(Attachment::asSummary) - .collect(Collectors.toList()); - - assertThat(queryAttachmentSummaries) - .hasSize(originalAttachments.size()) - .containsExactlyInAnyOrderElementsOf(originalAttachments) // same values - .usingElementComparator(REFERENCE_COMPARATOR) - .doesNotContainAnyElementsOf(originalAttachments); // but not same reference - } } diff --git a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java index 58fc6c0c3..7c5a72712 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java @@ -17,6 +17,8 @@ import static pro.taskana.task.api.TaskQueryColumnName.OWNER; import static pro.taskana.task.api.TaskQueryColumnName.STATE; import acceptance.AbstractAccTest; +import acceptance.TaskTestMapper; +import acceptance.TaskanaEngineProxy; import java.util.Arrays; import java.util.Comparator; import java.util.Iterator; @@ -39,7 +41,6 @@ import pro.taskana.classification.api.models.ClassificationSummary; import pro.taskana.common.api.BaseQuery.SortDirection; import pro.taskana.common.api.TimeInterval; import pro.taskana.common.api.exceptions.InvalidArgumentException; -import pro.taskana.common.internal.TaskanaEngineProxy; import pro.taskana.common.internal.util.CollectionUtil; import pro.taskana.common.internal.util.Triplet; import pro.taskana.common.test.security.JaasExtension; @@ -53,7 +54,6 @@ import pro.taskana.task.api.models.ObjectReference; import pro.taskana.task.api.models.Task; import pro.taskana.task.api.models.TaskSummary; import pro.taskana.task.internal.TaskServiceImpl; -import pro.taskana.task.internal.TaskTestMapper; import pro.taskana.task.internal.models.TaskImpl; import pro.taskana.workbasket.api.models.WorkbasketSummary; diff --git a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksByRoleAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksByRoleAccTest.java index 4df1fe7a7..c7bd65fbc 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksByRoleAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksByRoleAccTest.java @@ -5,8 +5,10 @@ import static org.assertj.core.api.Assertions.assertThat; import acceptance.AbstractAccTest; import java.util.List; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestTemplate; import org.junit.jupiter.api.extension.ExtendWith; +import pro.taskana.common.api.exceptions.SystemException; import pro.taskana.common.test.security.JaasExtension; import pro.taskana.common.test.security.WithAccessId; import pro.taskana.task.api.TaskService; @@ -26,63 +28,38 @@ class QueryTasksByRoleAccTest extends AbstractAccTest { } @WithAccessId(user = "admin") - @Test - void should_ReturnAllTasks_For_Admin() { - TaskService taskService = taskanaEngine.getTaskService(); - - List results = taskService.createTaskQuery().list(); - - assertThat(results).hasSize(87); - } - @WithAccessId(user = "taskadmin") - @Test - void should_ReturnAllTasks_For_TaskAdmin() { - TaskService taskService = taskanaEngine.getTaskService(); - - List results = taskService.createTaskQuery().list(); - - assertThat(results).hasSize(87); - } - @WithAccessId(user = "businessadmin") - @Test - void should_ReturnAllTasks_For_BusinessAdmin() { - TaskService taskService = taskanaEngine.getTaskService(); - - List results = taskService.createTaskQuery().list(); - - assertThat(results).isEmpty(); - } - @WithAccessId(user = "monitor") - @Test - void should_ReturnAllTasks_For_MonitorUser() { - TaskService taskService = taskanaEngine.getTaskService(); - - List results = taskService.createTaskQuery().list(); - - assertThat(results).isEmpty(); - } - @WithAccessId(user = "teamlead-1") - @Test - void should_ReturnAllTasks_For_TeamLead1() { - TaskService taskService = taskanaEngine.getTaskService(); - - List results = taskService.createTaskQuery().list(); - - assertThat(results).hasSize(25); - } - @WithAccessId(user = "user-1-1") - @Test - void should_ReturnAllTasks_For_User11() { + @TestTemplate + void should_FindAllAccessibleTasksDependentOnTheUser_When_MakingTaskQuery() { TaskService taskService = taskanaEngine.getTaskService(); - List results = taskService.createTaskQuery().list(); - assertThat(results).hasSize(7); - } + int expectedSize; + switch (taskanaEngine.getCurrentUserContext().getUserid()) { + case "admin": + case "taskadmin": + expectedSize = 87; + break; + case "businessadmin": + case "monitor": + expectedSize = 0; + break; + case "teamlead-1": + expectedSize = 25; + break; + case "user-1-1": + expectedSize = 7; + break; + default: + throw new SystemException( + String.format("Invalid User: '%s'", taskanaEngine.getCurrentUserContext().getUserid())); + } + + assertThat(results).hasSize(expectedSize); + } } diff --git a/lib/taskana-core/src/test/java/acceptance/task/SetOwnerAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/SetOwnerAccTest.java index 87e62493c..8095140db 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/SetOwnerAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/SetOwnerAccTest.java @@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import acceptance.AbstractAccTest; +import acceptance.TaskanaEngineProxy; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -15,7 +16,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import pro.taskana.common.api.BulkOperationResults; import pro.taskana.common.api.exceptions.NotAuthorizedException; import pro.taskana.common.api.exceptions.TaskanaException; -import pro.taskana.common.internal.TaskanaEngineProxy; import pro.taskana.common.test.security.JaasExtension; import pro.taskana.common.test.security.WithAccessId; import pro.taskana.task.api.TaskService; diff --git a/lib/taskana-core/src/test/java/acceptance/task/TaskEngineAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/TaskEngineAccTest.java index 2028b4009..7724b1501 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/TaskEngineAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/TaskEngineAccTest.java @@ -4,13 +4,13 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import acceptance.AbstractAccTest; +import acceptance.TaskanaEngineProxy; import org.assertj.core.api.ThrowableAssert.ThrowingCallable; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import pro.taskana.common.api.TaskanaRole; import pro.taskana.common.api.exceptions.NotAuthorizedException; -import pro.taskana.common.internal.TaskanaEngineProxy; import pro.taskana.common.test.security.JaasExtension; import pro.taskana.common.test.security.WithAccessId; diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/models/TaskModelsCloneTest.java b/lib/taskana-core/src/test/java/acceptance/task/TaskModelsCloneTest.java similarity index 86% rename from lib/taskana-core/src/test/java/pro/taskana/task/internal/models/TaskModelsCloneTest.java rename to lib/taskana-core/src/test/java/acceptance/task/TaskModelsCloneTest.java index 93252e622..5bd6902da 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/models/TaskModelsCloneTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/TaskModelsCloneTest.java @@ -1,9 +1,9 @@ -package pro.taskana.task.internal.models; +package acceptance.task; +import static acceptance.CreateTaskModelHelper.createAttachment; +import static acceptance.CreateTaskModelHelper.createDummyClassification; +import static acceptance.CreateTaskModelHelper.createUnitTestTask; import static org.assertj.core.api.Assertions.assertThat; -import static pro.taskana.task.internal.CreateTaskModelHelper.createAttachment; -import static pro.taskana.task.internal.CreateTaskModelHelper.createDummyClassification; -import static pro.taskana.task.internal.CreateTaskModelHelper.createUnitTestTask; import java.util.ArrayList; import java.util.HashMap; @@ -14,6 +14,11 @@ import org.junit.jupiter.api.Test; import pro.taskana.task.api.models.Attachment; import pro.taskana.task.api.models.AttachmentSummary; import pro.taskana.task.api.models.ObjectReference; +import pro.taskana.task.internal.models.AttachmentImpl; +import pro.taskana.task.internal.models.AttachmentSummaryImpl; +import pro.taskana.task.internal.models.TaskCommentImpl; +import pro.taskana.task.internal.models.TaskImpl; +import pro.taskana.task.internal.models.TaskSummaryImpl; class TaskModelsCloneTest { @@ -33,8 +38,7 @@ class TaskModelsCloneTest { assertThat(dummyTaskSummaryCloned).isNotEqualTo(dummyTaskSummary); dummyTaskSummaryCloned.setId(dummyTaskSummary.getId()); dummyTaskSummaryCloned.setExternalId(dummyTaskSummary.getExternalId()); - assertThat(dummyTaskSummaryCloned).isEqualTo(dummyTaskSummary); - assertThat(dummyTaskSummaryCloned).isNotSameAs(dummyTaskSummary); + assertThat(dummyTaskSummaryCloned).isEqualTo(dummyTaskSummary).isNotSameAs(dummyTaskSummary); Attachment dummyAttachmentForSummaryTestPostClone = createAttachment("differentIdForDeepTest", "differentTaskIdForDeepTest"); @@ -59,8 +63,7 @@ class TaskModelsCloneTest { assertThat(dummyTaskCloned).isNotEqualTo(dummyTask); dummyTaskCloned.setId(dummyTask.getId()); dummyTaskCloned.setExternalId(dummyTask.getExternalId()); - assertThat(dummyTaskCloned).isEqualTo(dummyTask); - assertThat(dummyTaskCloned).isNotSameAs(dummyTask); + assertThat(dummyTaskCloned).isEqualTo(dummyTask).isNotSameAs(dummyTask); dummyCustomAttributesPreClone.put("deepTestAttributeKey", "deepTestAttributeValue"); dummyCallbackInfoPreClone.put("deepTestCallbackKey", "deepTestCallbackValue"); @@ -108,8 +111,7 @@ class TaskModelsCloneTest { TaskCommentImpl dummyCommentCloned = dummyComment.copy(); assertThat(dummyCommentCloned).isNotEqualTo(dummyComment); dummyCommentCloned.setId(dummyComment.getId()); - assertThat(dummyCommentCloned).isEqualTo(dummyComment); - assertThat(dummyCommentCloned).isNotSameAs(dummyComment); + assertThat(dummyCommentCloned).isEqualTo(dummyComment).isNotSameAs(dummyComment); } @Test @@ -126,8 +128,7 @@ class TaskModelsCloneTest { assertThat(dummyReferenceCloned).isNotEqualTo(dummyReference); dummyReferenceCloned.setId(dummyReference.getId()); - assertThat(dummyReferenceCloned).isEqualTo(dummyReference); - assertThat(dummyReferenceCloned).isNotSameAs(dummyReference); + assertThat(dummyReferenceCloned).isEqualTo(dummyReference).isNotSameAs(dummyReference); } @Test @@ -141,8 +142,9 @@ class TaskModelsCloneTest { dummyAttachmentSummaryCloned.setId(dummyAttachmentSummary.getId()); dummyAttachmentSummaryCloned.setTaskId(dummyAttachmentSummary.getTaskId()); - assertThat(dummyAttachmentSummaryCloned).isEqualTo(dummyAttachmentSummary); - assertThat(dummyAttachmentSummaryCloned).isNotSameAs(dummyAttachmentSummary); + assertThat(dummyAttachmentSummaryCloned) + .isEqualTo(dummyAttachmentSummary) + .isNotSameAs(dummyAttachmentSummary); } @Test @@ -157,8 +159,7 @@ class TaskModelsCloneTest { assertThat(dummyAttachmentCloned).isNotEqualTo(dummyAttachment); dummyAttachmentCloned.setId(dummyAttachment.getId()); dummyAttachmentCloned.setTaskId(dummyAttachment.getTaskId()); - assertThat(dummyAttachmentCloned).isEqualTo(dummyAttachment); - assertThat(dummyAttachmentCloned).isNotSameAs(dummyAttachment); + assertThat(dummyAttachmentCloned).isEqualTo(dummyAttachment).isNotSameAs(dummyAttachment); dummyMapPreClone.put("deepTestString1", "deepTestString2"); assertThat(dummyAttachment).isNotEqualTo(dummyAttachmentCloned); diff --git a/lib/taskana-core/src/test/java/acceptance/task/TransferTaskAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/TransferTaskAccTest.java index b8a37d196..f91eb3d7a 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/TransferTaskAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/TransferTaskAccTest.java @@ -92,15 +92,15 @@ class TransferTaskAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1", groups = GROUP_1_DN) @Test - void should_ChangeDomain_When_TransferingTaskToWorkbasketWithDifferentDomain() throws Exception { + void should_ChangeDomain_When_TransferringTaskToWorkbasketWithDifferentDomain() throws Exception { TaskService taskService = taskanaEngine.getTaskService(); Task task = taskService.getTask("TKI:000000000000000000000000000000000000"); String domain1 = task.getDomain(); - Task transferedTask = taskService.transfer(task.getId(), "GPK_B_KSC_1", "DOMAIN_B"); + Task transferredTask = taskService.transfer(task.getId(), "GPK_B_KSC_1", "DOMAIN_B"); - assertThat(transferedTask).isNotNull(); - assertThat(transferedTask.getDomain()).isNotEqualTo(domain1); + assertThat(transferredTask).isNotNull(); + assertThat(transferredTask.getDomain()).isNotEqualTo(domain1); } @WithAccessId(user = "user-1-1") @@ -308,7 +308,7 @@ class TransferTaskAccTest extends AbstractAccTest { @WithAccessId(user = "teamlead-1", groups = GROUP_1_DN) @Test - void should_TransferTasks_When_TransferTasksWithListNotSupportingRemove() { + void should_TransferTasks_When_TransferringTasksWithListNotSupportingRemove() { TaskService taskService = taskanaEngine.getTaskService(); List taskIds = List.of("TKI:000000000000000000000000000000000006"); @@ -322,7 +322,7 @@ class TransferTaskAccTest extends AbstractAccTest { @WithAccessId(user = "teamlead-1", groups = GROUP_1_DN) @Test - void should_ThrowException_When_TransferTasksWithInvalidTasksIdList() { + void should_ThrowException_When_TransferredTaskListIsNull() { TaskService taskService = taskanaEngine.getTaskService(); // test with invalid list @@ -331,9 +331,15 @@ class TransferTaskAccTest extends AbstractAccTest { assertThatThrownBy(call) .isInstanceOf(InvalidArgumentException.class) .hasMessage("TaskIds must not be null."); + } + + @WithAccessId(user = "teamlead-1", groups = GROUP_1_DN) + @Test + void should_ThrowException_When_TransferringTasksWithOnlyInvalidTasksIds() { + TaskService taskService = taskanaEngine.getTaskService(); // test with list containing only invalid arguments - call = + ThrowingCallable call = () -> taskService.transferTasks( "WBI:100000000000000000000000000000000006", @@ -346,7 +352,7 @@ class TransferTaskAccTest extends AbstractAccTest { @WithAccessId(user = "teamlead-1", groups = GROUP_1_DN) @Test - void should_ThrowException_When_TransferEmptyTaskIdList() { + void should_ThrowException_When_TransferringEmptyTaskIdList() { TaskService taskService = taskanaEngine.getTaskService(); List taskIds = new ArrayList<>(); ThrowingCallable call = diff --git a/lib/taskana-core/src/test/java/acceptance/task/UpdateTaskAttachmentsAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/UpdateTaskAttachmentsAccTest.java index dd277d189..a33810641 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/UpdateTaskAttachmentsAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/UpdateTaskAttachmentsAccTest.java @@ -63,7 +63,7 @@ class UpdateTaskAttachmentsAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1") @Test - void testAddNewAttachment() throws Exception { + void should_UpdateTaskCorrectlyInDatabase_When_AddingAnAttachment() throws Exception { final int attachmentCount = task.getAttachments().size(); assertThat(task.getPriority()).isEqualTo(1); assertThat(task.getPlanned().plus(Duration.ofDays(1))).isEqualTo(task.getDue()); @@ -80,7 +80,7 @@ class UpdateTaskAttachmentsAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1") @Test - void testAddValidAttachmentTwice() throws Exception { + void should_NotAddSameAttachmentAgain_When_AddingToTaskSummary() throws Exception { task.getAttachments().clear(); task = taskService.updateTask(task); task = taskService.getTask(task.getId()); @@ -100,7 +100,7 @@ class UpdateTaskAttachmentsAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1") @Test - void testAddNewAttachmentTwiceWithoutTaskanaMethodWillThrowAttachmentPersistenceException() + void should_ThrowAttachmentPersistenceException_When_UpdatingTaskWithTwoIdenticalAttachments() throws Exception { final int attachmentCount = 0; task.getAttachments().clear(); @@ -118,7 +118,8 @@ class UpdateTaskAttachmentsAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1") @Test - void testAddExistingAttachmentAgainWillUpdateWhenNotEqual() throws Exception { + void should_UpdateExistingAttachment_When_AddingSameButNotEqualAttachmentAgain() + throws Exception { // Add attachment before task = taskService.getTask(task.getId()); final int attachmentCount = task.getAttachments().size(); @@ -150,7 +151,7 @@ class UpdateTaskAttachmentsAccTest extends AbstractAccTest { @WithAccessId(user = "user-1-1") @Test - void testAddExistingAttachmentAgainWillDoNothingWhenEqual() throws Exception { + void should_NotUpdateExistingAttachment_When_AddingIdenticalAttachmentAgain() throws Exception { // Add Attachment before final int attachmentCount = task.getAttachments().size(); ((AttachmentImpl) attachment).setId("TAI:0001"); diff --git a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/models/WorkbasketModelsCloneTest.java b/lib/taskana-core/src/test/java/acceptance/workbasket/WorkbasketModelsCloneTest.java similarity index 90% rename from lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/models/WorkbasketModelsCloneTest.java rename to lib/taskana-core/src/test/java/acceptance/workbasket/WorkbasketModelsCloneTest.java index 868c4106c..69fab0888 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/models/WorkbasketModelsCloneTest.java +++ b/lib/taskana-core/src/test/java/acceptance/workbasket/WorkbasketModelsCloneTest.java @@ -1,4 +1,4 @@ -package pro.taskana.workbasket.internal.models; +package acceptance.workbasket; import static org.assertj.core.api.Assertions.assertThat; import static pro.taskana.workbasket.api.WorkbasketCustomField.CUSTOM_1; @@ -10,6 +10,9 @@ import org.junit.jupiter.api.Test; import pro.taskana.workbasket.api.WorkbasketPermission; import pro.taskana.workbasket.api.models.Workbasket; +import pro.taskana.workbasket.internal.models.WorkbasketAccessItemImpl; +import pro.taskana.workbasket.internal.models.WorkbasketImpl; +import pro.taskana.workbasket.internal.models.WorkbasketSummaryImpl; class WorkbasketModelsCloneTest { @@ -36,8 +39,9 @@ class WorkbasketModelsCloneTest { assertThat(dummyWorkbasketSummaryCloned).isNotEqualTo(dummyWorkbasketSummary); dummyWorkbasketSummaryCloned.setId(dummyWorkbasketSummary.getId()); - assertThat(dummyWorkbasketSummaryCloned).isEqualTo(dummyWorkbasketSummary); - assertThat(dummyWorkbasketSummaryCloned).isNotSameAs(dummyWorkbasketSummary); + assertThat(dummyWorkbasketSummaryCloned) + .isEqualTo(dummyWorkbasketSummary) + .isNotSameAs(dummyWorkbasketSummary); } @Test @@ -61,8 +65,7 @@ class WorkbasketModelsCloneTest { assertThat(dummyWorkbasketCloned).isNotEqualTo(dummyWorkbasket); dummyWorkbasketCloned.setId(dummyWorkbasket.getId()); - assertThat(dummyWorkbasketCloned).isEqualTo(dummyWorkbasket); - assertThat(dummyWorkbasketCloned).isNotSameAs(dummyWorkbasket); + assertThat(dummyWorkbasketCloned).isEqualTo(dummyWorkbasket).isNotSameAs(dummyWorkbasket); } @Test @@ -92,7 +95,8 @@ class WorkbasketModelsCloneTest { assertThat(dummyWorkbasketAccessItemCloned).isNotEqualTo(dummyWorkbasketAccessItem); dummyWorkbasketAccessItemCloned.setId(dummyWorkbasketAccessItem.getId()); - assertThat(dummyWorkbasketAccessItemCloned).isEqualTo(dummyWorkbasketAccessItem); - assertThat(dummyWorkbasketAccessItemCloned).isNotSameAs(dummyWorkbasketAccessItem); + assertThat(dummyWorkbasketAccessItemCloned) + .isEqualTo(dummyWorkbasketAccessItem) + .isNotSameAs(dummyWorkbasketAccessItem); } } diff --git a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplTest.java b/lib/taskana-core/src/test/java/acceptance/workbasket/WorkbasketServiceImplTest.java similarity index 95% rename from lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplTest.java rename to lib/taskana-core/src/test/java/acceptance/workbasket/WorkbasketServiceImplTest.java index 72173e134..58109f486 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplTest.java +++ b/lib/taskana-core/src/test/java/acceptance/workbasket/WorkbasketServiceImplTest.java @@ -1,10 +1,9 @@ -package pro.taskana.workbasket.internal; +package acceptance.workbasket; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.times; @@ -38,6 +37,10 @@ import pro.taskana.workbasket.api.exceptions.WorkbasketAccessItemAlreadyExistExc import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException; import pro.taskana.workbasket.api.models.Workbasket; import pro.taskana.workbasket.api.models.WorkbasketAccessItem; +import pro.taskana.workbasket.internal.DistributionTargetMapper; +import pro.taskana.workbasket.internal.WorkbasketAccessMapper; +import pro.taskana.workbasket.internal.WorkbasketMapper; +import pro.taskana.workbasket.internal.WorkbasketServiceImpl; import pro.taskana.workbasket.internal.models.WorkbasketAccessItemImpl; import pro.taskana.workbasket.internal.models.WorkbasketImpl; @@ -113,7 +116,7 @@ class WorkbasketServiceImplTest { String otherWorkbasketId = "4711"; List destinations = List.of(otherWorkbasketId); workbasketServiceSpy.createWorkbasket(expectedWb); - doReturn(expectedWb).when(workbasketServiceSpy).getWorkbasket(eq(expectedWb.getId())); + doReturn(expectedWb).when(workbasketServiceSpy).getWorkbasket(expectedWb.getId()); ThrowingCallable call = () -> { @@ -135,8 +138,8 @@ class WorkbasketServiceImplTest { verify(internalTaskanaEngineMock, times(2)).getEngine(); verify(internalTaskanaEngineMock, times(1)).domainExists(any()); verify(distributionTargetMapperMock) - .deleteAllDistributionTargetsBySourceId(eq(expectedWb.getId())); - verify(workbasketMapperMock).update(eq(expectedWb)); + .deleteAllDistributionTargetsBySourceId(expectedWb.getId()); + verify(workbasketMapperMock).update(expectedWb); verify(internalTaskanaEngineMock, times(1)).getHistoryEventManager(); verifyNoMoreInteractions( diff --git a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationQueryImplTest.java deleted file mode 100644 index 77ece7c95..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationQueryImplTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package pro.taskana.classification.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; -import org.apache.ibatis.session.SqlSession; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.classification.api.models.ClassificationSummary; -import pro.taskana.classification.internal.models.ClassificationSummaryImpl; -import pro.taskana.common.internal.InternalTaskanaEngine; - -/** Test for ClassificationQueryImpl. */ -@ExtendWith(MockitoExtension.class) -class ClassificationQueryImplTest { - - @InjectMocks private ClassificationQueryImpl classificationQueryImpl; - - @Mock private InternalTaskanaEngine internalTaskanaEngine; - - @Mock private SqlSession sqlSession; - - @Test - void should_ReturnList_When_BuilderIsUsed() { - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); - - List result = - classificationQueryImpl - .nameIn("test", "asd", "blubber") - .typeIn("cool", "bla") - .priorityIn(1, 2) - .parentIdIn("superId") - .list(); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnListWithOffset_When_BuilderIsUsed() { - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); - - List result = - classificationQueryImpl - .nameIn("test", "asd", "blubber") - .typeIn("cool", "bla") - .priorityIn(1, 2) - .parentIdIn("superId") - .list(1, 1); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnOneItem_When_BuilderIsUsed() { - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectOne(any(), any())).thenReturn(new ClassificationSummaryImpl()); - - ClassificationSummary result = - classificationQueryImpl - .nameIn("test", "asd", "blubber") - .typeIn("cool", "bla") - .priorityIn(1, 2) - .parentIdIn("superId") - .single(); - assertThat(result).isNotNull(); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplIntAutoCommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplIntAutoCommitTest.java deleted file mode 100644 index 2e088b241..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplIntAutoCommitTest.java +++ /dev/null @@ -1,174 +0,0 @@ -package pro.taskana.classification.internal; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; -import java.util.List; -import javax.sql.DataSource; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.classification.api.ClassificationService; -import pro.taskana.classification.api.models.Classification; -import pro.taskana.classification.api.models.ClassificationSummary; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.TaskanaEngine.ConnectionManagementMode; -import pro.taskana.common.api.TimeInterval; -import pro.taskana.common.internal.TaskanaEngineImpl; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; -import pro.taskana.sampledata.SampleDataGenerator; - -/** Integration Test for ClassificationServiceImpl with connection management mode AUTOCOMMIT. */ -class ClassificationServiceImplIntAutoCommitTest { - - private static SampleDataGenerator sampleDataGenerator; - private static TaskanaEngineConfiguration taskanaEngineConfiguration; - private ClassificationService classificationService; - - @BeforeAll - static void beforeAll() { - DataSource dataSource = TaskanaEngineTestConfiguration.getDataSource(); - String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName); - taskanaEngineConfiguration = - new TaskanaEngineConfiguration(dataSource, false, false, schemaName); - } - - @BeforeEach - void setup() throws Exception { - sampleDataGenerator.clearDb(); - TaskanaEngine taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - classificationService = taskanaEngine.getClassificationService(); - TaskanaEngineImpl taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; - taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); - } - - @Test - void testFindAllClassifications() throws Exception { - Classification classification0 = classificationService.newClassification("TEST1", "", "TASK"); - classification0.setServiceLevel("P1D"); - classificationService.createClassification(classification0); - Classification classification1 = classificationService.newClassification("TEST2", "", "TASK"); - classification1.setServiceLevel("P1D"); - classificationService.createClassification(classification1); - Classification classification2 = classificationService.newClassification("TEST3", "", "TASK"); - classification2.setParentId(classification0.getId()); - classification2.setServiceLevel("P1D"); - classificationService.createClassification(classification2); - - assertThat(classificationService.createClassificationQuery().list()).hasSize(2 + 1); - } - - @Test - void testModifiedClassification() throws Exception { - final String description = "TEST SOMETHING"; - Classification classification = - classificationService.newClassification("TEST434", "DOMAIN_A", "TASK"); - classification.setDescription(""); - classification.setServiceLevel("P1D"); - classification = classificationService.createClassification(classification); - classification.setDescription("TEST SOMETHING"); - classificationService.updateClassification(classification); - - classification = - classificationService.getClassification( - classification.getKey(), classification.getDomain()); - assertThat(classification.getDescription()).isEqualTo(description); - } - - @Test - void testInsertClassification() throws Exception { - Classification classification = - classificationService.newClassification("TEST1333", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - classificationService.createClassification(classification); - - List list = - classificationService - .createClassificationQuery() - .validInDomainEquals(Boolean.TRUE) - .createdWithin(today()) - .list(); - - assertThat(list).hasSize(1); - } - - @Test - void testUpdateClassification() throws Exception { - Classification classification = - classificationService.newClassification("TEST32451", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - classification = classificationService.createClassification(classification); - classification.setDescription("description"); - classification = classificationService.updateClassification(classification); - - List list = - classificationService.createClassificationQuery().validInDomainEquals(true).list(); - assertThat(list).hasSize(1); - - classificationService.updateClassification(classification); - list = classificationService.createClassificationQuery().list(); - assertThat(list).hasSize(2); - - List allClassifications = - classificationService.createClassificationQuery().list(); - assertThat(allClassifications).hasSize(2); - } - - @Test - void testDefaultSettings() throws Exception { - Classification classification = - classificationService.newClassification("TEST7771", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - classification = classificationService.createClassification(classification); - - Classification classification1 = - classificationService.newClassification("TEST1865", "DOMAIN_A", "TASK"); - classification1.setServiceLevel("P1D"); - classification1 = classificationService.createClassification(classification1); - - classification1.setParentId(classification.getId()); - classificationService.updateClassification(classification1); - - List list = - classificationService.createClassificationQuery().parentIdIn("").list(); - assertThat(list).hasSize(3); - list = classificationService.createClassificationQuery().list(); - assertThat(list).hasSize(4); - - List listAll = classificationService.createClassificationQuery().list(); - list = classificationService.createClassificationQuery().list(); - assertThat(list).hasSize(listAll.size()); - - list = classificationService.createClassificationQuery().validInDomainEquals(true).list(); - assertThat(list).hasSize(2); - - list = classificationService.createClassificationQuery().createdWithin(today()).list(); - assertThat(list).hasSize(4); - - list = - classificationService - .createClassificationQuery() - .domainIn("DOMAIN_C") - .validInDomainEquals(false) - .list(); - assertThat(list).isEmpty(); - - list = classificationService.createClassificationQuery().list(); - assertThat(list).hasSize(4); - } - - private TimeInterval today() { - Instant begin = - LocalDateTime.of(LocalDate.now(), LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant(); - Instant end = - LocalDateTime.of(LocalDate.now(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant(); - return new TimeInterval(begin, end); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplIntExplicitTest.java deleted file mode 100644 index aaaa0fe0d..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplIntExplicitTest.java +++ /dev/null @@ -1,258 +0,0 @@ -package pro.taskana.classification.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import java.sql.Connection; -import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; -import java.util.List; -import javax.sql.DataSource; -import org.assertj.core.api.ThrowableAssert.ThrowingCallable; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.classification.api.ClassificationService; -import pro.taskana.classification.api.models.Classification; -import pro.taskana.classification.api.models.ClassificationSummary; -import pro.taskana.classification.internal.models.ClassificationImpl; -import pro.taskana.common.api.TaskanaEngine.ConnectionManagementMode; -import pro.taskana.common.api.TimeInterval; -import pro.taskana.common.api.exceptions.InvalidArgumentException; -import pro.taskana.common.internal.TaskanaEngineImpl; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; -import pro.taskana.common.internal.util.IdGenerator; -import pro.taskana.sampledata.SampleDataGenerator; - -/** Integration Test for ClassificationServiceImpl with connection management mode EXPLICIT. */ -class ClassificationServiceImplIntExplicitTest { - - static int counter = 0; - - private DataSource dataSource; - private ClassificationService classificationService; - private TaskanaEngineImpl taskanaEngine; - - @BeforeEach - void setup() throws Exception { - dataSource = TaskanaEngineTestConfiguration.getDataSource(); - String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName); - sampleDataGenerator.clearDb(); - TaskanaEngineConfiguration taskanaEngineConfiguration = - new TaskanaEngineConfiguration(dataSource, false, false, schemaName); - taskanaEngine = (TaskanaEngineImpl) taskanaEngineConfiguration.buildTaskanaEngine(); - taskanaEngine.setConnectionManagementMode(ConnectionManagementMode.EXPLICIT); - classificationService = taskanaEngine.getClassificationService(); - } - - @AfterEach - void cleanUp() throws Exception { - taskanaEngine.setConnection(null); - } - - @Test - void testInsertClassification() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngine.setConnection(connection); - - final String domain = "DOMAIN_A"; - final String key = "dummy-key"; - ClassificationImpl expectedClassification; - - // new classification but master existing - expectedClassification = - (ClassificationImpl) this.createNewClassificationWithUniqueKey("", "TASK"); - expectedClassification.setKey(key); - expectedClassification.setDomain("DOMAIN_B"); - expectedClassification.setServiceLevel("P1D"); - - classificationService.createClassification(expectedClassification); - connection.commit(); - Classification actualClassification = - classificationService.getClassification(key, "DOMAIN_B"); - assertThat(actualClassification).isNotNull(); - assertThat(actualClassification.getCreated()).isNotNull(); - assertThat(actualClassification.getId()).isNotNull(); - assertThat(actualClassification.getKey()).isEqualTo(key); - assertThat(actualClassification.getDomain()).isEqualTo("DOMAIN_B"); - assertThat(actualClassification.getId()).startsWith(IdGenerator.ID_PREFIX_CLASSIFICATION); - Classification masterResult = classificationService.getClassification(key, ""); - assertThat(masterResult).isNotNull(); - - // invalid serviceLevel - ClassificationImpl expectedClassificationCreated = - (ClassificationImpl) this.createNewClassificationWithUniqueKey("", "TASK"); - expectedClassificationCreated.setDomain(domain); - expectedClassificationCreated.setKey(""); - expectedClassificationCreated.setServiceLevel("ASAP"); - - ThrowingCallable call = - () -> classificationService.createClassification(expectedClassificationCreated); - assertThatThrownBy(call) - .describedAs( - "Should have thrown IllegalArgumentException, because ServiceLevel is invalid.") - .isInstanceOf(InvalidArgumentException.class); - - connection.commit(); - } - } - - @Test - void testFindAllClassifications() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngine.setConnection(connection); - Classification classification0 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification0.setServiceLevel("P1D"); - classificationService.createClassification(classification0); - Classification classification1 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification1.setServiceLevel("P1D"); - classificationService.createClassification(classification1); - Classification classification2 = this.createNewClassificationWithUniqueKey("", "TASK"); - classification2.setParentId(classification0.getId()); - classification2.setServiceLevel("P1D"); - classificationService.createClassification(classification2); - - assertThat(classificationService.createClassificationQuery().list()).hasSize(2 + 1); - connection.commit(); - } - } - - @Test - void testModifiedClassification() throws Exception { - - try (Connection connection = dataSource.getConnection()) { - taskanaEngine.setConnection(connection); - Classification classification = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - connection.commit(); - classification = classificationService.createClassification(classification); - - String updatedDescription = "TEST SOMETHING"; - classification.setDescription(updatedDescription); - classification = classificationService.updateClassification(classification); - connection.commit(); - - classification = - classificationService.getClassification( - classification.getKey(), classification.getDomain()); - assertThat(classification.getDescription()).isEqualTo(updatedDescription); - } - } - - @Test - void testInsertAndClassificationQuery() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngine.setConnection(connection); - Classification classification = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - classificationService.createClassification(classification); - List list = - classificationService - .createClassificationQuery() - .validInDomainEquals(Boolean.TRUE) - .createdWithin(today()) - .list(); - assertThat(list).hasSize(1); - } - } - - @Test - void testUpdateAndClassificationQuery() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngine.setConnection(connection); - Classification classification = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification.setDescription(""); - classification.setServiceLevel("P1D"); - classification = classificationService.createClassification(classification); - classification.setDescription("description"); - classification = classificationService.updateClassification(classification); - - List list = classificationService.createClassificationQuery().list(); - assertThat(list).hasSize(2); - list = classificationService.createClassificationQuery().validInDomainEquals(true).list(); - assertThat(list).hasSize(1); - classification = - classificationService.getClassification( - classification.getKey(), classification.getDomain()); - assertThat(classification.getDescription()).isEqualTo("description"); - - classificationService.updateClassification(classification); - list = classificationService.createClassificationQuery().list(); - assertThat(list).hasSize(2); - - List allClassifications = - classificationService.createClassificationQuery().list(); - assertThat(allClassifications).hasSize(2); - connection.commit(); - } - } - - @Test - void testDefaultSettingsWithClassificationQuery() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngine.setConnection(connection); - Classification classification = this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - classification = classificationService.createClassification(classification); - - Classification classification1 = - this.createNewClassificationWithUniqueKey("DOMAIN_A", "TASK"); - classification1.setServiceLevel("P1D"); - classification1 = classificationService.createClassification(classification1); - classification1.setParentId(classification.getId()); - classification1 = classificationService.updateClassification(classification1); - - List list = - classificationService.createClassificationQuery().parentIdIn("").list(); - assertThat(list).hasSize(3); - list = classificationService.createClassificationQuery().list(); - assertThat(list).hasSize(4); - connection.commit(); - - list = classificationService.createClassificationQuery().validInDomainEquals(true).list(); - assertThat(list).hasSize(2); - list = classificationService.createClassificationQuery().createdWithin(today()).list(); - assertThat(list).hasSize(4); - list = - classificationService - .createClassificationQuery() - .domainIn("DOMAIN_C") - .validInDomainEquals(false) - .list(); - assertThat(list).isEmpty(); - list = - classificationService.createClassificationQuery().keyIn(classification1.getKey()).list(); - assertThat(list).hasSize(2); - - list = - classificationService - .createClassificationQuery() - .parentIdIn(classification.getId()) - .list(); - assertThat(list).hasSize(1); - assertThat(list.get(0).getKey()).isEqualTo(classification1.getKey()); - connection.commit(); - } - } - - private Classification createNewClassificationWithUniqueKey(String domain, String type) { - Classification classification = - classificationService.newClassification("TEST" + counter, domain, type); - counter++; - return classification; - } - - private TimeInterval today() { - Instant begin = - LocalDateTime.of(LocalDate.now(), LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant(); - Instant end = - LocalDateTime.of(LocalDate.now(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant(); - return new TimeInterval(begin, end); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplTest.java deleted file mode 100644 index e27eead96..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/classification/internal/ClassificationServiceImplTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package pro.taskana.classification.internal; - -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; - -import org.assertj.core.api.ThrowableAssert.ThrowingCallable; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.classification.api.models.Classification; -import pro.taskana.classification.internal.models.ClassificationImpl; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.exceptions.InvalidArgumentException; -import pro.taskana.common.internal.InternalTaskanaEngine; - -/** Unit Test for ClassificationServiceImpl. */ -@ExtendWith(MockitoExtension.class) -class ClassificationServiceImplTest { - - @Spy @InjectMocks private ClassificationServiceImpl cutSpy; - @Mock private ClassificationMapper classificationMapperMock; - @Mock private TaskanaEngine taskanaEngineMock; - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - @Mock private ClassificationQueryImpl classificationQueryImplMock; - - @Test - void testCreateClassificationQuery() { - cutSpy.createClassificationQuery(); - verify(internalTaskanaEngineMock, times(1)).getHistoryEventManager(); - verifyNoMoreInteractions( - classificationMapperMock, - internalTaskanaEngineMock, - taskanaEngineMock, - classificationQueryImplMock); - } - - @Test - void testThrowExceptionIdIfClassificationIsCreatedWithAnExplicitId() { - when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock); - ThrowingCallable call = - () -> { - Classification classification = createDummyClassification(); - when(internalTaskanaEngineMock.domainExists(any())).thenReturn(true); - cutSpy.createClassification(classification); - }; - assertThatThrownBy(call) - .isInstanceOf(InvalidArgumentException.class) - .hasMessage("ClassificationId should be null on creation"); - } - - private Classification createDummyClassification() { - return this.createDummyClassification("ID: 1"); - } - - private Classification createDummyClassification(String id) { - - ClassificationImpl classificationImpl = new ClassificationImpl(); - classificationImpl.setDescription("A DUMMY FOR TESTING A SERVICE"); - classificationImpl.setName("SERVICE-DUMMY"); - classificationImpl.setDomain("DOMAIN_A"); - classificationImpl.setServiceLevel("P2D"); - classificationImpl.setId(id); - classificationImpl.setKey("ABC111"); - classificationImpl.setParentId(""); - classificationImpl.setParentKey(""); - return classificationImpl; - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationClassificationCategoryReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationClassificationCategoryReportBuilderImplTest.java deleted file mode 100644 index 978135bba..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationClassificationCategoryReportBuilderImplTest.java +++ /dev/null @@ -1,316 +0,0 @@ -package pro.taskana.monitor.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.monitor.api.SelectedItem; -import pro.taskana.monitor.api.TaskTimestamp; -import pro.taskana.monitor.api.reports.ClassificationCategoryReport; -import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader; -import pro.taskana.monitor.api.reports.item.MonitorQueryItem; -import pro.taskana.task.api.TaskCustomField; -import pro.taskana.task.api.TaskState; - -/** Unit Test for CategoryBuilderImpl. */ -@ExtendWith(MockitoExtension.class) -class ClassificationClassificationCategoryReportBuilderImplTest { - - @InjectMocks private MonitorServiceImpl cut; - - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - - @Mock private TaskanaEngine taskanaEngineMock; - - @Mock private TaskanaEngineConfiguration taskanaEngineConfiguration; - - @Mock private MonitorMapper monitorMapperMock; - - @BeforeEach - void setup() { - when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock); - } - - @Test - void testGetTotalNumbersOfCategoryReport() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - - List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("EXTERN"); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfCategories( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter))) - .thenReturn(expectedResult); - - final ClassificationCategoryReport actualResult = - cut.createClassificationCategoryReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .buildReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(monitorMapperMock) - .getTaskCountOfCategories(any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("EXTERN").getTotalValue()).isOne(); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - } - - @Test - void testGetCategoryReportWithReportLineItemDefinitions() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - final List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("EXTERN"); - monitorQueryItem.setAgeInDays(0); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfCategories( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter))) - .thenReturn(expectedResult); - - final ClassificationCategoryReport actualResult = - cut.createClassificationCategoryReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .buildReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(monitorMapperMock) - .getTaskCountOfCategories(any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("EXTERN").getTotalValue()).isOne(); - assertThat(actualResult.getRow("EXTERN").getCells()[0]).isOne(); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - } - - @Test - void testListTaskIdsOfCategoryReportForSelectedItems() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - final Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - List selectedItems = List.of(new SelectedItem("EXTERN", null, 1, 5)); - - List expectedResult = List.of("TKI:000000000000000000000000000000000001"); - when(monitorMapperMock.getTaskIdsForSelectedItems( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter), - eq(null), - eq("CLASSIFICATION_CATEGORY"), - eq(TaskTimestamp.DUE), - eq(selectedItems), - eq(false))) - .thenReturn(expectedResult); - - final List actualResult = - cut.createClassificationCategoryReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .listTaskIdsForSelectedItems(selectedItems, TaskTimestamp.DUE); - - verify(internalTaskanaEngineMock).openConnection(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(monitorMapperMock) - .getTaskIdsForSelectedItems( - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - eq(TaskTimestamp.DUE), - any(), - eq(false)); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); - - assertThat(actualResult).isEqualTo(expectedResult); - } - - @Test - void testListTaskIdsForSelectedItemsIsEmptyResult() throws Exception { - List result = - cut.createClassificationCategoryReportBuilder() - .listTaskIdsForSelectedItems( - List.of(new SelectedItem("BLA", null, 0, 0)), TaskTimestamp.DUE); - assertThat(result).isNotNull(); - } - - @Test - void testListCustomAttributeValuesForCustomAttributeName() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - List expectedResult = List.of("Geschaeftsstelle A"); - when(monitorMapperMock.getCustomAttributeValuesForReport( - workbasketIds, - states, - categories, - domains, - classificationIds, - excludedClassificationIds, - customAttributeFilter, - null, - TaskCustomField.CUSTOM_1)) - .thenReturn(expectedResult); - - final List actualResult = - cut.createClassificationCategoryReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .listCustomAttributeValuesForCustomAttributeName(TaskCustomField.CUSTOM_1); - - verify(internalTaskanaEngineMock).openConnection(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(monitorMapperMock) - .getCustomAttributeValuesForReport( - any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); - - assertThat(actualResult).isEqualTo(expectedResult); - } - - @Test - void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult() throws Exception { - List result = - cut.createClassificationCategoryReportBuilder() - .workbasketIdIn(List.of("DieGibtsSicherNed")) - .listCustomAttributeValuesForCustomAttributeName(TaskCustomField.CUSTOM_1); - assertThat(result).isNotNull(); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationReportBuilderImplTest.java deleted file mode 100644 index f9ddc0249..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationReportBuilderImplTest.java +++ /dev/null @@ -1,486 +0,0 @@ -package pro.taskana.monitor.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.classification.api.ClassificationQuery; -import pro.taskana.classification.api.ClassificationService; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.monitor.api.SelectedItem; -import pro.taskana.monitor.api.TaskTimestamp; -import pro.taskana.monitor.api.reports.ClassificationReport; -import pro.taskana.monitor.api.reports.ClassificationReport.DetailedClassificationReport; -import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader; -import pro.taskana.monitor.api.reports.item.DetailedMonitorQueryItem; -import pro.taskana.monitor.api.reports.item.MonitorQueryItem; -import pro.taskana.monitor.api.reports.row.FoldableRow; -import pro.taskana.task.api.TaskCustomField; -import pro.taskana.task.api.TaskState; - -/** Unit Test for ClassificationReportBuilderImpl. */ -@ExtendWith(MockitoExtension.class) -class ClassificationReportBuilderImplTest { - - @InjectMocks private MonitorServiceImpl cut; - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - @Mock private TaskanaEngine taskanaEngineMock; - @Mock private TaskanaEngineConfiguration taskanaEngineConfiguration; - @Mock private MonitorMapper monitorMapperMock; - @Mock private ClassificationService classificationService; - - private Object[] mocks; - - @BeforeEach - void setup() { - when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock); - when(taskanaEngineMock.getClassificationService()).thenReturn(classificationService); - mocks = - new Object[] { - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration, - classificationService - }; - } - - @Test - void testGetTotalNumbersOfClassificationReport() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - - final List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("CLI:000000000000000000000000000000000001"); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfClassifications( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter))) - .thenReturn(expectedResult); - - ClassificationQuery queryMock = mock(ClassificationQuery.class); - when(classificationService.createClassificationQuery()).thenReturn(queryMock); - when(queryMock.keyIn(any())).thenReturn(queryMock); - when(queryMock.domainIn(any())).thenReturn(queryMock); - when(queryMock.list()).thenReturn(List.of()); - - final ClassificationReport actualResult = - cut.createClassificationReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .buildReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(taskanaEngineMock).getClassificationService(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - - verify(monitorMapperMock) - .getTaskCountOfClassifications( - any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - - verifyNoMoreInteractions(queryMock); - verifyNoMoreInteractions(mocks); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getTotalValue()) - .isEqualTo(1); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - } - - @Test - void testGetClassificationReportWithReportLineItemDefinitions() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - final List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("CLI:000000000000000000000000000000000001"); - monitorQueryItem.setAgeInDays(0); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfClassifications( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter))) - .thenReturn(expectedResult); - ClassificationQuery queryMock = mock(ClassificationQuery.class); - when(classificationService.createClassificationQuery()).thenReturn(queryMock); - when(queryMock.keyIn(any())).thenReturn(queryMock); - when(queryMock.domainIn(any())).thenReturn(queryMock); - when(queryMock.list()).thenReturn(List.of()); - - final ClassificationReport actualResult = - cut.createClassificationReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .buildReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(taskanaEngineMock).getClassificationService(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - - verify(monitorMapperMock) - .getTaskCountOfClassifications( - any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions(queryMock); - verifyNoMoreInteractions(mocks); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getTotalValue()) - .isOne(); - assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getCells()) - .isEqualTo(new int[] {1}); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - } - - @Test - void testGetTotalNumbersOfDetailedClassificationReport() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - - final List expectedResult = new ArrayList<>(); - DetailedMonitorQueryItem detailedMonitorQueryItem = new DetailedMonitorQueryItem(); - detailedMonitorQueryItem.setKey("CLI:000000000000000000000000000000000001"); - detailedMonitorQueryItem.setAttachmentKey("CLI:000000000000000000000000000000000006"); - detailedMonitorQueryItem.setNumberOfTasks(1); - expectedResult.add(detailedMonitorQueryItem); - when(monitorMapperMock.getTaskCountOfDetailedClassifications( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter))) - .thenReturn(expectedResult); - ClassificationQuery queryMock = mock(ClassificationQuery.class); - when(classificationService.createClassificationQuery()).thenReturn(queryMock); - when(queryMock.keyIn(any())).thenReturn(queryMock); - when(queryMock.domainIn(any())).thenReturn(queryMock); - when(queryMock.list()).thenReturn(List.of()); - - final DetailedClassificationReport actualResult = - cut.createClassificationReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .buildDetailedReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(taskanaEngineMock).getClassificationService(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - - verify(monitorMapperMock) - .getTaskCountOfDetailedClassifications( - any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions(queryMock); - verifyNoMoreInteractions(mocks); - - FoldableRow line = - actualResult.getRow("CLI:000000000000000000000000000000000001"); - assertThat(actualResult).isNotNull(); - assertThat(line.getTotalValue()).isOne(); - assertThat(line.getFoldableRow("CLI:000000000000000000000000000000000006").getTotalValue()) - .isOne(); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - } - - @Test - void testGetDetailedClassificationReportWithReportLineItemDefinitions() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - final List expectedResult = new ArrayList<>(); - DetailedMonitorQueryItem detailedMonitorQueryItem = new DetailedMonitorQueryItem(); - detailedMonitorQueryItem.setKey("CLI:000000000000000000000000000000000001"); - detailedMonitorQueryItem.setAttachmentKey("CLI:000000000000000000000000000000000006"); - detailedMonitorQueryItem.setAgeInDays(0); - detailedMonitorQueryItem.setNumberOfTasks(1); - expectedResult.add(detailedMonitorQueryItem); - when(monitorMapperMock.getTaskCountOfDetailedClassifications( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter))) - .thenReturn(expectedResult); - ClassificationQuery queryMock = mock(ClassificationQuery.class); - when(classificationService.createClassificationQuery()).thenReturn(queryMock); - when(queryMock.keyIn(any())).thenReturn(queryMock); - when(queryMock.domainIn(any())).thenReturn(queryMock); - when(queryMock.list()).thenReturn(List.of()); - - final DetailedClassificationReport actualResult = - cut.createClassificationReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .buildDetailedReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(taskanaEngineMock).getClassificationService(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - - verify(monitorMapperMock) - .getTaskCountOfDetailedClassifications( - any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions(queryMock); - verifyNoMoreInteractions(mocks); - - FoldableRow line = - actualResult.getRow("CLI:000000000000000000000000000000000001"); - assertThat(actualResult).isNotNull(); - assertThat(line.getTotalValue()).isOne(); - assertThat(line.getFoldableRow("CLI:000000000000000000000000000000000006").getTotalValue()) - .isOne(); - assertThat(line.getCells()).isEqualTo(new int[] {1}); - assertThat(line.getFoldableRow("CLI:000000000000000000000000000000000006").getCells()) - .isEqualTo(new int[] {1}); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - assertThat(actualResult.getSumRow().getCells()).isEqualTo(new int[] {1}); - } - - @Test - void testGetTaskIdsForSelectedItems() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - final List selectedItems = List.of(new SelectedItem("EXTERN", null, 1, 5)); - - final List expectedResult = List.of("TKI:000000000000000000000000000000000001"); - when(monitorMapperMock.getTaskIdsForSelectedItems( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter), - eq(null), - eq("CLASSIFICATION_KEY"), - eq(TaskTimestamp.DUE), - eq(selectedItems), - eq(false))) - .thenReturn(expectedResult); - - final List actualResult = - cut.createClassificationReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .listTaskIdsForSelectedItems(selectedItems, TaskTimestamp.DUE); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - - verify(monitorMapperMock) - .getTaskIdsForSelectedItems( - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - eq(TaskTimestamp.DUE), - any(), - eq(false)); - verify(internalTaskanaEngineMock).returnConnection(); - verify(taskanaEngineMock).getClassificationService(); - verifyNoMoreInteractions(mocks); - - assertThat(actualResult).isEqualTo(expectedResult); - } - - @Test - void testGetTaskIdsForSelectedItemsIsEmptyResult() throws Exception { - List selectedItems = List.of(new SelectedItem("GIBTSNED", null, 0, 0)); - List result = - cut.createClassificationReportBuilder() - .workbasketIdIn(List.of("DieGibtsEhNed")) - .listTaskIdsForSelectedItems(selectedItems, TaskTimestamp.DUE); - assertThat(result).isNotNull(); - } - - @Test - void testListCustomAttributeValuesForCustomAttributeName() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - final List expectedResult = List.of("Geschaeftsstelle A"); - when(monitorMapperMock.getCustomAttributeValuesForReport( - workbasketIds, - states, - categories, - domains, - classificationIds, - excludedClassificationIds, - customAttributeFilter, - null, - TaskCustomField.CUSTOM_1)) - .thenReturn(expectedResult); - - final List actualResult = - cut.createClassificationReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .listCustomAttributeValuesForCustomAttributeName(TaskCustomField.CUSTOM_1); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - - verify(monitorMapperMock) - .getCustomAttributeValuesForReport( - any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verify(taskanaEngineMock).getClassificationService(); - verifyNoMoreInteractions(mocks); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult).isEqualTo(expectedResult); - } - - @Test - void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult() throws Exception { - List result = - cut.createClassificationReportBuilder() - .workbasketIdIn(List.of("DieGibtsGarantiertNed")) - .listCustomAttributeValuesForCustomAttributeName(TaskCustomField.CUSTOM_10); - assertThat(result).isNotNull(); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskCustomFieldValueReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskCustomFieldValueReportBuilderImplTest.java deleted file mode 100644 index 7baf602dc..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskCustomFieldValueReportBuilderImplTest.java +++ /dev/null @@ -1,228 +0,0 @@ -package pro.taskana.monitor.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.monitor.api.TaskTimestamp; -import pro.taskana.monitor.api.reports.TaskCustomFieldValueReport; -import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader; -import pro.taskana.monitor.api.reports.item.MonitorQueryItem; -import pro.taskana.task.api.TaskCustomField; -import pro.taskana.task.api.TaskState; - -/** Unit Test for CustomFieldValueReportBuilderImpl. */ -@ExtendWith(MockitoExtension.class) -class TaskCustomFieldValueReportBuilderImplTest { - - @InjectMocks private MonitorServiceImpl cut; - - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - - @Mock private TaskanaEngine taskanaEngineMock; - - @Mock private TaskanaEngineConfiguration taskanaEngineConfigurationMock; - - @Mock private MonitorMapper monitorMapperMock; - - @BeforeEach - void setup() { - when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock); - } - - @Test - void testGetTotalNumbersOfCustomFieldValueReport() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - - final List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("Geschaeftsstelle A"); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfTaskCustomFieldValues( - any(), - eq(TaskCustomField.CUSTOM_1), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter))) - .thenReturn(expectedResult); - - final TaskCustomFieldValueReport actualResult = - cut.createTaskCustomFieldValueReportBuilder(TaskCustomField.CUSTOM_1) - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .buildReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); - verify(monitorMapperMock) - .getTaskCountOfTaskCustomFieldValues( - any(), any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfigurationMock); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("Geschaeftsstelle A").getTotalValue()).isOne(); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - } - - @Test - void testGetCustomFieldValueReportWithReportLineItemDefinitions() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - final List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("Geschaeftsstelle A"); - monitorQueryItem.setAgeInDays(0); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfTaskCustomFieldValues( - any(), - eq(TaskCustomField.CUSTOM_1), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter))) - .thenReturn(expectedResult); - - final TaskCustomFieldValueReport actualResult = - cut.createTaskCustomFieldValueReportBuilder(TaskCustomField.CUSTOM_1) - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .buildReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); - verify(monitorMapperMock) - .getTaskCountOfTaskCustomFieldValues( - any(), any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfigurationMock); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("Geschaeftsstelle A").getTotalValue()).isOne(); - assertThat(actualResult.getRow("Geschaeftsstelle A").getCells()[0]).isOne(); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - } - - @Test - void testListCustomAttributeValuesForCustomAttributeName() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - List expectedResult = List.of("Geschaeftsstelle A"); - when(monitorMapperMock.getCustomAttributeValuesForReport( - workbasketIds, - states, - categories, - domains, - classificationIds, - excludedClassificationIds, - customAttributeFilter, - null, - TaskCustomField.CUSTOM_1)) - .thenReturn(expectedResult); - - final List actualResult = - cut.createTaskCustomFieldValueReportBuilder(TaskCustomField.CUSTOM_1) - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .listCustomAttributeValuesForCustomAttributeName(TaskCustomField.CUSTOM_1); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); - verify(monitorMapperMock) - .getCustomAttributeValuesForReport( - any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfigurationMock); - - assertThat(actualResult).isEqualTo(expectedResult); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskStatusReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskStatusReportBuilderImplTest.java deleted file mode 100644 index 625444c65..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/TaskStatusReportBuilderImplTest.java +++ /dev/null @@ -1,129 +0,0 @@ -package pro.taskana.monitor.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; - -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InOrder; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.TaskanaRole; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.monitor.api.reports.TaskStatusReport; -import pro.taskana.monitor.api.reports.item.TaskQueryItem; -import pro.taskana.task.api.TaskState; -import pro.taskana.workbasket.api.WorkbasketService; - -/** Unit Test for TaskStatusReportBuilderImpl. */ -@ExtendWith(MockitoExtension.class) -class TaskStatusReportBuilderImplTest { - - @InjectMocks private MonitorServiceImpl cut; - - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - - @Mock private TaskanaEngine taskanaEngineMock; - - @Mock private MonitorMapper monitorMapperMock; - - @Mock private WorkbasketService workbasketService; - - private Object[] mocks; - - @BeforeEach - void setup() { - when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock); - when(taskanaEngineMock.getWorkbasketService()).thenReturn(workbasketService); - mocks = - new Object[] { - internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock, workbasketService - }; - } - - @Test - void testGetTaskStateReportWithoutFilters() throws Exception { - // given - TaskQueryItem queryItem1 = new TaskQueryItem(); - queryItem1.setCount(50); - queryItem1.setState(TaskState.READY); - queryItem1.setWorkbasketKey("KEY_1"); - TaskQueryItem queryItem2 = new TaskQueryItem(); - queryItem2.setCount(30); - queryItem2.setState(TaskState.COMPLETED); - queryItem2.setWorkbasketKey("KEY_1"); - List queryItems = List.of(queryItem1, queryItem2); - when(monitorMapperMock.getTasksCountByState(null, null, null)).thenReturn(queryItems); - when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Map.of()); - - // when - final TaskStatusReport report = cut.createTaskStatusReportBuilder().buildReport(); - - // then - InOrder inOrder = inOrder(mocks); - inOrder.verify(internalTaskanaEngineMock).getEngine(); - inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); - inOrder.verify(internalTaskanaEngineMock).openConnection(); - inOrder.verify(monitorMapperMock).getTasksCountByState(eq(null), eq(null), eq(null)); - inOrder.verify(internalTaskanaEngineMock).runAsAdmin(any()); - inOrder.verify(internalTaskanaEngineMock).returnConnection(); - inOrder.verifyNoMoreInteractions(); - verifyNoMoreInteractions(mocks); - - assertThat(report).isNotNull(); - assertThat(report.rowSize()).isEqualTo(1); - assertThat(report.getRow("KEY_1").getCells()).isEqualTo(new int[] {50, 0, 30, 0, 0}); - assertThat(report.getSumRow().getCells()).isEqualTo(new int[] {50, 0, 30, 0, 0}); - assertThat(report.getRow("KEY_1").getTotalValue()).isEqualTo(80); - assertThat(report.getSumRow().getTotalValue()).isEqualTo(80); - } - - @Test - void testGetTotalNumberOfTaskStateReport() throws Exception { - // given - TaskQueryItem queryItem1 = new TaskQueryItem(); - queryItem1.setCount(50); - queryItem1.setState(TaskState.READY); - queryItem1.setWorkbasketKey("KEY_1"); - TaskQueryItem queryItem2 = new TaskQueryItem(); - queryItem2.setCount(30); - queryItem2.setState(TaskState.COMPLETED); - queryItem2.setWorkbasketKey("KEY_1"); - List queryItems = List.of(queryItem1, queryItem2); - when(monitorMapperMock.getTasksCountByState(eq(null), eq(List.of()), eq(null))) - .thenReturn(queryItems); - when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Map.of()); - - // when - final TaskStatusReport report = - cut.createTaskStatusReportBuilder().stateIn(List.of()).buildReport(); - - // then - InOrder inOrder = inOrder(mocks); - inOrder.verify(internalTaskanaEngineMock).getEngine(); - inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); - inOrder.verify(internalTaskanaEngineMock).openConnection(); - inOrder.verify(monitorMapperMock).getTasksCountByState(eq(null), eq(List.of()), eq(null)); - inOrder.verify(internalTaskanaEngineMock).runAsAdmin(any()); - inOrder.verify(internalTaskanaEngineMock).returnConnection(); - inOrder.verifyNoMoreInteractions(); - verifyNoMoreInteractions(mocks); - - assertThat(report).isNotNull(); - assertThat(report.rowSize()).isEqualTo(1); - assertThat(report.getRow("KEY_1").getCells()).isEqualTo(new int[0]); - assertThat(report.getSumRow().getCells()).isEqualTo(new int[0]); - assertThat(report.getRow("KEY_1").getTotalValue()).isEqualTo(80); - assertThat(report.getSumRow().getTotalValue()).isEqualTo(80); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkbasketReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkbasketReportBuilderImplTest.java deleted file mode 100644 index 00ec5f8b0..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkbasketReportBuilderImplTest.java +++ /dev/null @@ -1,409 +0,0 @@ -package pro.taskana.monitor.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.assertj.core.api.ThrowableAssert.ThrowingCallable; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.TaskanaRole; -import pro.taskana.common.api.exceptions.InvalidArgumentException; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.monitor.api.CombinedClassificationFilter; -import pro.taskana.monitor.api.SelectedItem; -import pro.taskana.monitor.api.TaskTimestamp; -import pro.taskana.monitor.api.reports.WorkbasketReport; -import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader; -import pro.taskana.monitor.api.reports.item.MonitorQueryItem; -import pro.taskana.task.api.TaskCustomField; -import pro.taskana.task.api.TaskState; - -/** Unit Test for WorkbasketReportBuilderImpl. */ -@ExtendWith(MockitoExtension.class) -class WorkbasketReportBuilderImplTest { - - @InjectMocks private MonitorServiceImpl cut; - - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - - @Mock private TaskanaEngine taskanaEngineMock; - - @Mock private MonitorMapper monitorMapperMock; - - @BeforeEach - void setup() { - when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock); - } - - @Test - void testGetTotalNumbersOfWorkbasketReportBasedOnDueDate() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List combinedClassificationFilter = - List.of( - new CombinedClassificationFilter( - "CLI:000000000000000000000000000000000003", - "CLI:000000000000000000000000000000000008")); - - List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("WBI:000000000000000000000000000000000001"); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfWorkbaskets( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter), - eq(combinedClassificationFilter))) - .thenReturn(expectedResult); - when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Map.of()); - - final WorkbasketReport actualResult = - cut.createWorkbasketReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .combinedClassificationFilterIn(combinedClassificationFilter) - .buildReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - verify(monitorMapperMock) - .getTaskCountOfWorkbaskets( - any(), any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verify(internalTaskanaEngineMock).runAsAdmin(any()); - verify(taskanaEngineMock).getWorkbasketService(); - verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("WBI:000000000000000000000000000000000001").getTotalValue()) - .isOne(); - assertThat(actualResult.getSumRow().getTotalValue()).isOne(); - } - - @Test - void testGetWorkbasketReportWithReportLineItemDefinitions() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List combinedClassificationFilter = - List.of( - new CombinedClassificationFilter( - "CLI:000000000000000000000000000000000003", - "CLI:000000000000000000000000000000000008")); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - final List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("WBI:000000000000000000000000000000000001"); - monitorQueryItem.setAgeInDays(0); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfWorkbaskets( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.DUE), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter), - eq(combinedClassificationFilter))) - .thenReturn(expectedResult); - when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Map.of()); - - final WorkbasketReport actualResult = - cut.createWorkbasketReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .combinedClassificationFilterIn(combinedClassificationFilter) - .withColumnHeaders(columnHeaders) - .buildReport(); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - verify(monitorMapperMock) - .getTaskCountOfWorkbaskets( - any(), any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verify(taskanaEngineMock).getWorkbasketService(); - verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("WBI:000000000000000000000000000000000001").getTotalValue()) - .isEqualTo(1); - assertThat(actualResult.getRow("WBI:000000000000000000000000000000000001").getCells()[0]) - .isEqualTo(1); - assertThat(actualResult.getSumRow().getTotalValue()).isEqualTo(1); - } - - @Test - void testGetTaskIdsOfCategoryReportForSelectedItems() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - List selectedItems = List.of(new SelectedItem("EXTERN", null, 1, 5)); - - List expectedResult = List.of("TKI:000000000000000000000000000000000001"); - when(monitorMapperMock.getTaskIdsForSelectedItems( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter), - eq(null), - eq("WORKBASKET_KEY"), - eq(TaskTimestamp.DUE), - eq(selectedItems), - eq(false))) - .thenReturn(expectedResult); - - final List actualResult = - cut.createWorkbasketReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .listTaskIdsForSelectedItems(selectedItems, TaskTimestamp.DUE); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - verify(monitorMapperMock) - .getTaskIdsForSelectedItems( - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - any(), - eq(TaskTimestamp.DUE), - any(), - eq(false)); - verify(internalTaskanaEngineMock).returnConnection(); - verify(taskanaEngineMock).getWorkbasketService(); - verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult).isEqualTo(expectedResult); - } - - @Test - void testListTaskIdsForSelectedItemsIsEmptyResult() { - List selectedItems = new ArrayList<>(); - ThrowingCallable call = - () -> { - List result = - cut.createWorkbasketReportBuilder() - .workbasketIdIn(List.of("DieGibtsGarantiertNed")) - .listTaskIdsForSelectedItems(selectedItems, TaskTimestamp.DUE); - assertThat(result).isNotNull(); - }; - assertThatThrownBy(call).isInstanceOf(InvalidArgumentException.class); - } - - @Test - void testListCustomAttributeValuesForCustomAttributeName() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List columnHeaders = - List.of(new TimeIntervalColumnHeader(0, 0)); - - List expectedResult = List.of("Geschaeftsstelle A"); - when(monitorMapperMock.getCustomAttributeValuesForReport( - workbasketIds, - states, - categories, - domains, - classificationIds, - excludedClassificationIds, - customAttributeFilter, - null, - TaskCustomField.CUSTOM_1)) - .thenReturn(expectedResult); - - final List actualResult = - cut.createWorkbasketReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .withColumnHeaders(columnHeaders) - .listCustomAttributeValuesForCustomAttributeName(TaskCustomField.CUSTOM_1); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(any()); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - verify(monitorMapperMock) - .getCustomAttributeValuesForReport( - any(), any(), any(), any(), any(), any(), any(), any(), any()); - verify(internalTaskanaEngineMock).returnConnection(); - verify(taskanaEngineMock).getWorkbasketService(); - verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult).isEqualTo(expectedResult); - } - - @Test - void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult() throws Exception { - List result = - cut.createWorkbasketReportBuilder() - .workbasketIdIn(List.of("GibtsSicherNed")) - .listCustomAttributeValuesForCustomAttributeName(TaskCustomField.CUSTOM_14); - assertThat(result).isNotNull(); - } - - @Test - void testGetTotalNumbersOfWorkbasketReportBasedOnCreatedDate() throws Exception { - final List workbasketIds = List.of("WBI:000000000000000000000000000000000001"); - final List states = List.of(TaskState.CLAIMED, TaskState.READY); - final List categories = List.of("EXTERN"); - final List domains = List.of("DOMAIN_A"); - final List classificationIds = List.of("L10000"); - final List excludedClassificationIds = List.of("L20000"); - Map customAttributeFilter = new HashMap<>(); - customAttributeFilter.put(TaskCustomField.CUSTOM_1, "Geschaeftsstelle A"); - final List combinedClassificationFilter = - List.of( - new CombinedClassificationFilter( - "CLI:000000000000000000000000000000000003", - "CLI:000000000000000000000000000000000008")); - - List expectedResult = new ArrayList<>(); - MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); - monitorQueryItem.setKey("WBI:000000000000000000000000000000000001"); - monitorQueryItem.setNumberOfTasks(1); - expectedResult.add(monitorQueryItem); - when(monitorMapperMock.getTaskCountOfWorkbaskets( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.PLANNED), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter), - eq(combinedClassificationFilter))) - .thenReturn(expectedResult); - - when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Map.of()); - - final WorkbasketReport actualResult = - cut.createWorkbasketReportBuilder() - .workbasketIdIn(workbasketIds) - .stateIn(states) - .classificationCategoryIn(categories) - .domainIn(domains) - .classificationIdIn(classificationIds) - .excludedClassificationIdIn(excludedClassificationIds) - .customAttributeFilterIn(customAttributeFilter) - .combinedClassificationFilterIn(combinedClassificationFilter) - .buildReport(TaskTimestamp.PLANNED); - - verify(internalTaskanaEngineMock).openConnection(); - verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); - verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(3)).getEngine(); - verify(monitorMapperMock) - .getTaskCountOfWorkbaskets( - any(), - eq(workbasketIds), - eq(states), - eq(categories), - eq(domains), - eq(TaskTimestamp.PLANNED), - eq(classificationIds), - eq(excludedClassificationIds), - eq(customAttributeFilter), - eq(combinedClassificationFilter)); - verify(internalTaskanaEngineMock).returnConnection(); - verify(taskanaEngineMock).getWorkbasketService(); - verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); - - assertThat(actualResult).isNotNull(); - assertThat(actualResult.getRow("WBI:000000000000000000000000000000000001").getTotalValue()) - .isEqualTo(1); - assertThat(actualResult.getSumRow().getTotalValue()).isEqualTo(1); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/JunitHelper.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/JunitHelper.java deleted file mode 100644 index 445f905fa..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/JunitHelper.java +++ /dev/null @@ -1,39 +0,0 @@ -package pro.taskana.task.internal; - -import pro.taskana.task.api.models.Attachment; -import pro.taskana.task.api.models.ObjectReference; -import pro.taskana.task.internal.models.AttachmentImpl; - -/** This class contains helper methods for Junit Tests. */ -public final class JunitHelper { - - private JunitHelper() {} - - public static ObjectReference createDefaultObjRef() { - return createObjRef("company", "system", "instance", "type", "value"); - } - - public static ObjectReference createObjRef( - String company, String system, String instance, String type, String value) { - ObjectReference objRef = new ObjectReference(); - objRef.setCompany(company); - objRef.setSystem(system); - objRef.setSystemInstance(instance); - objRef.setType(type); - objRef.setValue(value); - return objRef; - } - - public static Attachment createDefaultAttachment() { - return createAttachment("TAI:000", "CHANNEL", createDefaultObjRef()); - } - - public static Attachment createAttachment( - String id, String channel, ObjectReference objectReference) { - AttachmentImpl attachment = new AttachmentImpl(); - attachment.setChannel(channel); - attachment.setId(id); - attachment.setObjectReference(objectReference); - return attachment; - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/ObjectReferenceQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/ObjectReferenceQueryImplTest.java deleted file mode 100644 index 4b8a0604e..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/ObjectReferenceQueryImplTest.java +++ /dev/null @@ -1,78 +0,0 @@ -package pro.taskana.task.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; -import org.apache.ibatis.session.SqlSession; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.task.api.models.ObjectReference; - -/** Test for ObjectReferenceQueryImpl. */ -@ExtendWith(MockitoExtension.class) -class ObjectReferenceQueryImplTest { - - ObjectReferenceQueryImpl objectReferenceQueryImpl; - - @Mock InternalTaskanaEngine taskanaEngine; - - @Mock SqlSession sqlSession; - - @BeforeEach - void setup() { - objectReferenceQueryImpl = new ObjectReferenceQueryImpl(taskanaEngine); - } - - @Test - void should_ReturnList_When_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); - - List result = - objectReferenceQueryImpl - .valueIn("test", "asd", "blubber") - .typeIn("cool", "bla") - .systemInstanceIn("1", "2") - .systemIn("superId") - .list(); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnListWithOffset_When_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); - - List result = - objectReferenceQueryImpl - .valueIn("test", "asd", "blubber") - .typeIn("cool", "bla") - .systemInstanceIn("1", "2") - .systemIn("superId") - .list(1, 1); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnOneItem_When_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectOne(any(), any())).thenReturn(new ObjectReference()); - - ObjectReference result = - objectReferenceQueryImpl - .valueIn("test", "asd", "blubber") - .typeIn("cool", "bla") - .systemInstanceIn("1", "2") - .systemIn("superId") - .single(); - assertThat(result).isNotNull(); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskAttachmentTest.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskAttachmentTest.java deleted file mode 100644 index 8b4ab8e5c..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskAttachmentTest.java +++ /dev/null @@ -1,137 +0,0 @@ -package pro.taskana.task.internal; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.time.Instant; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.junit.jupiter.api.Test; - -import pro.taskana.classification.internal.models.ClassificationImpl; -import pro.taskana.task.api.models.Attachment; -import pro.taskana.task.api.models.AttachmentSummary; -import pro.taskana.task.api.models.ObjectReference; -import pro.taskana.task.internal.models.TaskImpl; - -/** - * Unit Test for methods needed fot attachment at TaskImpl.
- * This test should test every interaction with Attachments, which means adding, removing, nulling - * them. - */ -class TaskAttachmentTest { - - private TaskImpl cut = new TaskImpl(); - - @Test - void testAddAttachmentWithValidValue() { - Attachment attachment1 = CreateTaskModelHelper.createAttachment("ID1", "taskId1"); - Attachment attachment2 = CreateTaskModelHelper.createAttachment("ID2", "taskId1"); - Attachment attachment3 = CreateTaskModelHelper.createAttachment("ID3", "taskId1"); - - cut.addAttachment(attachment1); - cut.addAttachment(attachment2); - cut.addAttachment(attachment3); - - assertThat(cut.getAttachments()).hasSize(3); - } - - @Test - void testAddNullValue() { - Attachment attachment1 = CreateTaskModelHelper.createAttachment("ID1", "taskId1"); - - cut.addAttachment(attachment1); - cut.addAttachment(null); - - assertThat(cut.getAttachments()).hasSize(1); - } - - @Test - void testAddSameTwice() { - // Same values, not same REF. Important. - Attachment attachment1 = CreateTaskModelHelper.createAttachment("ID1", "taskId1"); - Attachment attachment2 = CreateTaskModelHelper.createAttachment("ID1", "taskId1"); - - cut.addAttachment(attachment1); - cut.addAttachment(attachment2); - - assertThat(cut.getAttachments()).hasSize(1); - - // Check with not same vlaues (same ID) - String newChannel = "I will overwrite the other!"; - attachment1.setChannel(newChannel); - cut.addAttachment(attachment1); - assertThat(cut.getAttachments()).hasSize(1); - assertThat(cut.getAttachments().get(0).getChannel()).isEqualTo(newChannel); - } - - @Test - void testRemoveAttachment() { - // Testing normal way - Attachment attachment1 = CreateTaskModelHelper.createAttachment("ID1", "taskId1"); - Attachment attachment2 = CreateTaskModelHelper.createAttachment("ID2", "taskId1"); - cut.addAttachment(attachment1); - cut.addAttachment(attachment2); - - Attachment actual = cut.removeAttachment(attachment2.getId()); - - assertThat(cut.getAttachments()).hasSize(1); - assertThat(actual).isEqualTo(attachment2); - } - - @Test - void testRemoveLoopStopsAtResult() { - Attachment attachment1 = CreateTaskModelHelper.createAttachment("ID2", "taskId1"); - // adding same uncommon way to test that the loop will stop. - cut.getAttachments().add(attachment1); - cut.getAttachments().add(attachment1); - cut.getAttachments().add(attachment1); - assertThat(cut.getAttachments()).hasSize(3); - - Attachment actual = cut.removeAttachment(attachment1.getId()); - - assertThat(cut.getAttachments()).hasSize(2); - assertThat(actual).isEqualTo(attachment1); - } - - @Test - void testGetAttachmentSummaries() { - ObjectReference objRef = new ObjectReference(); - objRef.setId("ObjRefId"); - objRef.setCompany("company"); - - Map customAttr = new HashMap<>(); - customAttr.put("key", "value"); - - Attachment attachment1 = CreateTaskModelHelper.createAttachment("ID1", "taskId1"); - attachment1.setChannel("channel"); - attachment1.setClassificationSummary(new ClassificationImpl().asSummary()); - attachment1.setReceived(Instant.now()); - attachment1.setObjectReference(objRef); - // attachment1.setCustomAttributes(customAttr); - - cut.addAttachment(attachment1); - - List summaries = cut.asSummary().getAttachmentSummaries(); - AttachmentSummary attachmentSummary = summaries.get(0); - - assertThat(attachmentSummary).isEqualTo(attachment1.asSummary()); - assertThat(attachmentSummary.getId()).isEqualTo(attachment1.getId()); - assertThat(attachmentSummary.getTaskId()).isEqualTo(attachment1.getTaskId()); - assertThat(attachmentSummary.getChannel()).isEqualTo(attachment1.getChannel()); - assertThat(attachmentSummary.getClassificationSummary()) - .isEqualTo(attachment1.getClassificationSummary()); - assertThat(attachmentSummary.getObjectReference()).isEqualTo(attachment1.getObjectReference()); - assertThat(attachmentSummary.getCreated()).isEqualTo(attachment1.getCreated()); - assertThat(attachmentSummary.getReceived()).isEqualTo(attachment1.getReceived()); - assertThat(attachmentSummary.getModified()).isEqualTo(attachment1.getModified()); - - // Must be different - assertThat(attachment1.hashCode()).isNotEqualTo(attachmentSummary.hashCode()); - - cut.removeAttachment("ID1"); - assertThat(summaries).hasSize(1); - summaries = cut.asSummary().getAttachmentSummaries(); - assertThat(summaries).isEmpty(); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskQueryImplTest.java deleted file mode 100644 index 07bd5c1dd..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskQueryImplTest.java +++ /dev/null @@ -1,103 +0,0 @@ -package pro.taskana.task.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; -import org.apache.ibatis.session.Configuration; -import org.apache.ibatis.session.SqlSession; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.security.CurrentUserContext; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.common.internal.configuration.DB; -import pro.taskana.task.api.TaskState; -import pro.taskana.task.api.models.TaskSummary; -import pro.taskana.task.internal.models.TaskSummaryImpl; - -/** Test for TaskQueryImpl. */ -@ExtendWith(MockitoExtension.class) -class TaskQueryImplTest { - - @Mock TaskServiceImpl taskServiceMock; - - @Mock private InternalTaskanaEngine internalTaskanaEngine; - @Mock private TaskanaEngine taskanaEngine; - @Mock private SqlSession sqlSession; - @Mock private CurrentUserContext currentUserContext; - - private TaskQueryImpl taskQueryImpl; - - @BeforeEach - void setup() { - when(internalTaskanaEngine.getEngine()).thenReturn(taskanaEngine); - when(taskanaEngine.getTaskService()).thenReturn(taskServiceMock); - when(taskanaEngine.getCurrentUserContext()).thenReturn(currentUserContext); - - Configuration configuration = new org.apache.ibatis.session.Configuration(); - configuration.setDatabaseId(DB.H2.dbProductId); - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.getConfiguration()).thenReturn(configuration); - - taskQueryImpl = new TaskQueryImpl(internalTaskanaEngine); - } - - @Test - void should_ReturnList_When_BuilderIsUsed() { - when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); - List intermediate = new ArrayList<>(); - intermediate.add(new TaskSummaryImpl()); - when(taskServiceMock.augmentTaskSummariesByContainedSummariesWithPartitioning(any())) - .thenReturn(intermediate); - - List result = - taskQueryImpl - .nameIn("test", "asd", "blubber") - .priorityIn(1, 2) - .stateIn(TaskState.CLAIMED, TaskState.COMPLETED) - .list(); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnListWithOffset_When_BuilderIsUsed() { - when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); - List intermediate = new ArrayList<>(); - intermediate.add(new TaskSummaryImpl()); - when(taskServiceMock.augmentTaskSummariesByContainedSummariesWithPartitioning(any())) - .thenReturn(intermediate); - - List result = - taskQueryImpl - .nameIn("test", "asd", "blubber") - .priorityIn(1, 2) - .stateIn(TaskState.CLAIMED, TaskState.COMPLETED) - .list(1, 1); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnOneItem_When_BuilderIsUsed() { - when(sqlSession.selectOne(any(), any())).thenReturn(new TaskSummaryImpl()); - List intermediate = new ArrayList<>(); - intermediate.add(new TaskSummaryImpl()); - - when(taskServiceMock.augmentTaskSummariesByContainedSummariesWithPartitioning(any())) - .thenReturn(intermediate); - - TaskSummary result = - taskQueryImpl - .nameIn("test", "asd", "blubber") - .priorityIn(1, 2) - .stateIn(TaskState.CLAIMED, TaskState.COMPLETED) - .single(); - assertThat(result).isNotNull(); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplIntAutocommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplIntAutocommitTest.java deleted file mode 100644 index 84ca48b8e..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplIntAutocommitTest.java +++ /dev/null @@ -1,369 +0,0 @@ -package pro.taskana.task.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import java.util.List; -import java.util.UUID; -import javax.sql.DataSource; -import org.assertj.core.api.ThrowableAssert.ThrowingCallable; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.classification.api.ClassificationService; -import pro.taskana.classification.api.models.Classification; -import pro.taskana.classification.internal.models.ClassificationImpl; -import pro.taskana.common.api.KeyDomain; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.TaskanaEngine.ConnectionManagementMode; -import pro.taskana.common.api.exceptions.NotAuthorizedException; -import pro.taskana.common.internal.TaskanaEngineImpl; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; -import pro.taskana.common.internal.util.IdGenerator; -import pro.taskana.common.test.security.JaasExtension; -import pro.taskana.common.test.security.WithAccessId; -import pro.taskana.sampledata.SampleDataGenerator; -import pro.taskana.task.api.TaskCustomField; -import pro.taskana.task.api.TaskState; -import pro.taskana.task.api.exceptions.TaskNotFoundException; -import pro.taskana.task.api.models.ObjectReference; -import pro.taskana.task.api.models.Task; -import pro.taskana.task.api.models.TaskSummary; -import pro.taskana.task.internal.models.TaskImpl; -import pro.taskana.workbasket.api.WorkbasketPermission; -import pro.taskana.workbasket.api.WorkbasketService; -import pro.taskana.workbasket.api.WorkbasketType; -import pro.taskana.workbasket.api.models.Workbasket; -import pro.taskana.workbasket.api.models.WorkbasketAccessItem; -import pro.taskana.workbasket.internal.models.WorkbasketImpl; - -/** Integration Test for TaskServiceImpl transactions with connection management mode AUTOCOMMIT. */ -@ExtendWith(JaasExtension.class) -class TaskServiceImplIntAutocommitTest { - - private static SampleDataGenerator sampleDataGenerator; - private static TaskanaEngineConfiguration taskanaEngineConfiguration; - private TaskServiceImpl taskServiceImpl; - private TaskanaEngine taskanaEngine; - private TaskanaEngineImpl taskanaEngineImpl; - private ClassificationService classificationService; - private WorkbasketService workbasketService; - - @BeforeAll - static void beforeAll() { - DataSource dataSource = TaskanaEngineTestConfiguration.getDataSource(); - String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName); - taskanaEngineConfiguration = - new TaskanaEngineConfiguration(dataSource, false, false, schemaName); - } - - @BeforeEach - void setup() throws Exception { - sampleDataGenerator.clearDb(); - taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; - taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); - taskServiceImpl = (TaskServiceImpl) taskanaEngine.getTaskService(); - classificationService = taskanaEngine.getClassificationService(); - workbasketService = taskanaEngine.getWorkbasketService(); - } - - @Test - void testStart() throws Exception { - - Workbasket wb = workbasketService.newWorkbasket("workbasket", "DOMAIN_A"); - wb.setName("workbasket"); - wb.setType(WorkbasketType.GROUP); - taskanaEngine.getWorkbasketService().createWorkbasket(wb); - - Classification classification = - classificationService.newClassification("TEST", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - taskanaEngine.getClassificationService().createClassification(classification); - - Task task = taskServiceImpl.newTask(wb.getId()); - task.setName("Unit Test Task"); - - task.setClassificationKey(classification.getKey()); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - task = taskServiceImpl.createTask(task); - - TaskanaEngine te2 = taskanaEngineConfiguration.buildTaskanaEngine(); - TaskServiceImpl taskServiceImpl2 = (TaskServiceImpl) te2.getTaskService(); - Task resultTask = taskServiceImpl2.getTask(task.getId()); - assertThat(resultTask).isNotNull(); - } - - @Test - void testStartTransactionFail() throws Exception { - - Workbasket wb = workbasketService.newWorkbasket("wb1k1", "DOMAIN_A"); - wb.setName("sdf"); - wb.setType(WorkbasketType.GROUP); - taskanaEngine.getWorkbasketService().createWorkbasket(wb); - - Classification classification = - classificationService.newClassification("TEST", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - classification = taskanaEngine.getClassificationService().createClassification(classification); - classification = - taskanaEngine - .getClassificationService() - .getClassification(classification.getKey(), classification.getDomain()); - - TaskImpl task = (TaskImpl) taskServiceImpl.newTask(wb.getKey(), "DOMAIN_A"); - task.setName("Unit Test Task"); - task.setClassificationKey(classification.getKey()); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - taskServiceImpl.createTask(task); - taskServiceImpl.getTask(task.getId()); - - TaskanaEngineImpl te2 = (TaskanaEngineImpl) taskanaEngineConfiguration.buildTaskanaEngine(); - TaskServiceImpl taskServiceImpl2 = (TaskServiceImpl) te2.getTaskService(); - - assertThatThrownBy(() -> taskServiceImpl2.getTask(wb.getId())) - .isInstanceOf(TaskNotFoundException.class); - } - - @Test - void should_ReturnList_When_BuilderIsUsed() throws Exception { - Workbasket wb = workbasketService.newWorkbasket("key", "DOMAIN_A"); - wb.setName("workbasket"); - wb.setType(WorkbasketType.GROUP); - taskanaEngine.getWorkbasketService().createWorkbasket(wb); - Classification classification = - classificationService.newClassification("TEST", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - taskanaEngine.getClassificationService().createClassification(classification); - - Task task = taskServiceImpl.newTask(wb.getKey(), wb.getDomain()); - task.setName("Unit Test Task"); - task.setClassificationKey(classification.getKey()); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - taskServiceImpl.createTask(task); - - List results = - taskServiceImpl - .createTaskQuery() - .nameIn("bla", "test") - .descriptionLike("test") - .priorityIn(1, 2, 2) - .stateIn(TaskState.CLAIMED) - .workbasketKeyDomainIn( - new KeyDomain("asd", "novatec"), new KeyDomain("asdasdasd", "DOMAIN_A")) - .ownerIn("test", "test2", "bla") - .customAttributeIn(TaskCustomField.CUSTOM_16, "test") - .classificationKeyIn("pId1", "pId2") - .primaryObjectReferenceCompanyIn("first comp", "sonstwo gmbh") - .primaryObjectReferenceSystemIn("sys") - .primaryObjectReferenceTypeIn("type1", "type2") - .primaryObjectReferenceSystemInstanceIn("sysInst1", "sysInst2") - .primaryObjectReferenceValueIn("val1", "val2", "val3") - .list(); - - assertThat(results).isEmpty(); - } - - @Test - void shouldTransferTaskToOtherWorkbasket() throws Exception { - final int sleepTime = 100; - - // Source Workbasket - WorkbasketImpl wb = (WorkbasketImpl) workbasketService.newWorkbasket("key1", "DOMAIN_A"); - wb.setName("Basic-Workbasket"); - wb.setDescription("Just used as base WB for Task here"); - wb.setType(WorkbasketType.GROUP); - wb.setOwner("The Tester ID"); - final Workbasket sourceWB = workbasketService.createWorkbasket(wb); - - // Destination Workbasket - wb = (WorkbasketImpl) workbasketService.newWorkbasket("k1", "DOMAIN_A"); - wb.setName("Desination-WorkBasket"); - - wb.setType(WorkbasketType.CLEARANCE); - wb.setDescription("Destination WB where Task should be transfered to"); - wb.setOwner("The Tester ID"); - final Workbasket destinationWB = workbasketService.createWorkbasket(wb); - - // Classification required for Task - ClassificationImpl classification = - (ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK"); - classification.setCategory("EXTERNAL"); - classification.setName("Transfert-Task Classification"); - classification.setServiceLevel("P1D"); - classificationService.createClassification(classification); - - // Task which should be transfered - TaskImpl task = (TaskImpl) taskServiceImpl.newTask(sourceWB.getId()); - task.setName("Task Name"); - task.setDescription("Task used for transfer Test"); - task.setRead(true); - task.setTransferred(false); - task.setModified(null); - task.setClassificationKey(classification.getKey()); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - task = (TaskImpl) taskServiceImpl.createTask(task); - Thread.sleep(sleepTime); // Sleep for modification-timestamp - - Task resultTask = taskServiceImpl.transfer(task.getId(), destinationWB.getId()); - assertThat(resultTask.isRead()).isFalse(); - assertThat(resultTask.isTransferred()).isTrue(); - assertThat(resultTask.getWorkbasketSummary().getId()).isEqualTo(destinationWB.getId()); - assertThat(resultTask.getModified()).isNotNull(); - assertThat(resultTask.getModified()).isNotEqualTo(task.getModified()); - assertThat(resultTask.getCreated()).isNotNull(); - assertThat(resultTask.getCreated()).isEqualTo(task.getCreated()); - } - - @Test - void shouldNotTransferAnyTask() { - assertThatThrownBy(() -> taskServiceImpl.transfer(UUID.randomUUID() + "_X", "1")) - .isInstanceOf(TaskNotFoundException.class); - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void shouldNotTransferByFailingSecurity() throws Exception { - final String user = taskanaEngine.getCurrentUserContext().getUserid(); - - // Set up Security for this Test - DataSource dataSource = TaskanaEngineTestConfiguration.getDataSource(); - taskanaEngineConfiguration = - new TaskanaEngineConfiguration( - dataSource, false, true, TaskanaEngineTestConfiguration.getSchemaName()); - taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; - taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); - taskServiceImpl = (TaskServiceImpl) taskanaEngine.getTaskService(); - classificationService = taskanaEngine.getClassificationService(); - workbasketService = taskanaEngine.getWorkbasketService(); - - ClassificationImpl classification = - (ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK"); - classification.setCategory("EXTERNAL"); - classification.setName("Transfert-Task Classification"); - classification.setServiceLevel("P1D"); - classificationService.createClassification(classification); - - WorkbasketImpl wb = (WorkbasketImpl) workbasketService.newWorkbasket("k5", "DOMAIN_A"); - wb.setName("BASE WB"); - wb.setDescription("Normal base WB"); - wb.setOwner(user); - wb.setType(WorkbasketType.TOPIC); - WorkbasketImpl wbCreated = (WorkbasketImpl) workbasketService.createWorkbasket(wb); - createWorkbasketWithSecurity(wbCreated, wbCreated.getOwner(), true, true, true, true); - - WorkbasketImpl wbNoAppend = - (WorkbasketImpl) workbasketService.newWorkbasket("key77", "DOMAIN_A"); - wbNoAppend.setName("Test-Security-WorkBasket-APPEND"); - wbNoAppend.setDescription("Workbasket without permission APPEND on Task"); - wbNoAppend.setOwner(user); - wbNoAppend.setType(WorkbasketType.PERSONAL); - - WorkbasketImpl wbNoAppendCreated = - (WorkbasketImpl) workbasketService.createWorkbasket(wbNoAppend); - createWorkbasketWithSecurity( - wbNoAppendCreated, wbNoAppendCreated.getOwner(), true, true, false, true); - - WorkbasketImpl wbNoTransfer = - (WorkbasketImpl) workbasketService.newWorkbasket("k99", "DOMAIN_B"); - wbNoTransfer.setName("Test-Security-WorkBasket-TRANSFER"); - wbNoTransfer.setDescription("Workbasket without permission TRANSFER on Task"); - wbNoTransfer.setOwner(user); - wbNoTransfer.setType(WorkbasketType.CLEARANCE); - - wbNoTransfer = (WorkbasketImpl) workbasketService.createWorkbasket(wbNoTransfer); - createWorkbasketWithSecurity(wbNoTransfer, wbNoTransfer.getOwner(), true, true, true, false); - - TaskImpl task = (TaskImpl) taskServiceImpl.newTask(wbCreated.getId()); - task.setName("Task Name"); - task.setDescription("Task used for transfer Test"); - task.setOwner(user); - task.setClassificationKey(classification.getKey()); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - TaskImpl taskCreated = (TaskImpl) taskServiceImpl.createTask(task); - - ThrowingCallable call = - () -> taskServiceImpl.transfer(taskCreated.getId(), wbNoAppendCreated.getId()); - assertThatThrownBy(call) - .describedAs( - "Transfer Task should be FAILD, because there are no APPEND-Rights on destination WB.") - .isInstanceOf(NotAuthorizedException.class) - .hasMessageContaining("APPEND"); - - assertThat(taskCreated.isTransferred()).isFalse(); - assertThat(taskCreated.getWorkbasketKey()).isNotEqualTo(wbNoAppendCreated.getKey()); - assertThat(taskCreated.getWorkbasketKey()).isEqualTo(wbCreated.getKey()); - - // Check failing with missing TRANSFER - taskCreated.setId(""); - taskCreated.getWorkbasketSummaryImpl().setId(wbNoTransfer.getId()); - taskCreated.setWorkbasketKey(null); - taskCreated.setExternalId(IdGenerator.generateWithPrefix("TST")); - - TaskImpl taskCreated2 = (TaskImpl) taskServiceImpl.createTask(taskCreated); - - assertThatThrownBy(() -> taskServiceImpl.transfer(taskCreated2.getId(), wbCreated.getId())) - .describedAs( - "Transfer Task should be FAILED, because there are no TRANSFER-Rights on current WB.") - .isInstanceOf(NotAuthorizedException.class) - .hasMessageContaining("TRANSFER"); - - assertThat(taskCreated2.isTransferred()).isFalse(); - assertThat(taskCreated2.getWorkbasketKey()).isNotEqualTo(wbNoAppendCreated.getKey()); - } - - @Test - void testWithPrimaryObjectRef() throws Exception { - Workbasket wb = workbasketService.newWorkbasket("workbasket", "DOMAIN_A"); - wb.setName("workbasket"); - wb.setType(WorkbasketType.GROUP); - taskanaEngine.getWorkbasketService().createWorkbasket(wb); - Classification classification = - classificationService.newClassification("TEST", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - taskanaEngine.getClassificationService().createClassification(classification); - - Task task = taskServiceImpl.newTask(wb.getId()); - task.setName("Unit Test Task"); - - task.setClassificationKey(classification.getKey()); - - ObjectReference objRef = new ObjectReference(); - objRef.setCompany("novatec"); - objRef.setSystem("linux"); - objRef.setSystemInstance("inst1"); - objRef.setType("fast"); - objRef.setValue("4711"); - task.setPrimaryObjRef(objRef); - - task = taskServiceImpl.createTask(task); - - Task task2 = taskServiceImpl.getTask(task.getId()); - // skanaEngineImpl.getSqlSession().commit(); // needed so that the change is visible in the - // other session - - assertThat(task2).isNotNull(); - } - - private void createWorkbasketWithSecurity( - Workbasket wb, - String accessId, - boolean permOpen, - boolean permRead, - boolean permAppend, - boolean permTransfer) - throws Exception { - WorkbasketAccessItem accessItem = - workbasketService.newWorkbasketAccessItem(wb.getId(), accessId); - accessItem.setPermission(WorkbasketPermission.OPEN, permOpen); - accessItem.setPermission(WorkbasketPermission.READ, permRead); - accessItem.setPermission(WorkbasketPermission.APPEND, permAppend); - accessItem.setPermission(WorkbasketPermission.TRANSFER, permTransfer); - workbasketService.createWorkbasketAccessItem(accessItem); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplIntExplicitTest.java deleted file mode 100644 index 42c6fe9f6..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplIntExplicitTest.java +++ /dev/null @@ -1,477 +0,0 @@ -package pro.taskana.task.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import java.io.File; -import java.sql.Connection; -import java.util.List; -import java.util.UUID; -import javax.sql.DataSource; -import org.assertj.core.api.ThrowableAssert.ThrowingCallable; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.classification.api.ClassificationService; -import pro.taskana.classification.api.exceptions.ClassificationNotFoundException; -import pro.taskana.classification.api.models.Classification; -import pro.taskana.classification.internal.models.ClassificationImpl; -import pro.taskana.common.api.KeyDomain; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.TaskanaEngine.ConnectionManagementMode; -import pro.taskana.common.api.exceptions.NotAuthorizedException; -import pro.taskana.common.internal.TaskanaEngineImpl; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; -import pro.taskana.common.internal.configuration.DbSchemaCreator; -import pro.taskana.common.internal.util.IdGenerator; -import pro.taskana.common.test.security.JaasExtension; -import pro.taskana.common.test.security.WithAccessId; -import pro.taskana.sampledata.SampleDataGenerator; -import pro.taskana.task.api.TaskCustomField; -import pro.taskana.task.api.TaskState; -import pro.taskana.task.api.exceptions.TaskNotFoundException; -import pro.taskana.task.api.models.Task; -import pro.taskana.task.api.models.TaskSummary; -import pro.taskana.task.internal.models.TaskImpl; -import pro.taskana.workbasket.api.WorkbasketPermission; -import pro.taskana.workbasket.api.WorkbasketService; -import pro.taskana.workbasket.api.WorkbasketType; -import pro.taskana.workbasket.api.exceptions.WorkbasketAccessItemAlreadyExistException; -import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException; -import pro.taskana.workbasket.api.models.Workbasket; -import pro.taskana.workbasket.api.models.WorkbasketAccessItem; -import pro.taskana.workbasket.internal.models.WorkbasketImpl; -import pro.taskana.workbasket.internal.models.WorkbasketSummaryImpl; - -/** Integration Test for TaskServiceImpl transactions with connection management mode EXPLICIT. */ -@ExtendWith(JaasExtension.class) -class TaskServiceImplIntExplicitTest { - - private static DataSource dataSource; - private static SampleDataGenerator sampleDataGenerator; - private static TaskanaEngineConfiguration taskanaEngineConfiguration; - private TaskServiceImpl taskServiceImpl; - private TaskanaEngine taskanaEngine; - private TaskanaEngineImpl taskanaEngineImpl; - private ClassificationService classificationService; - private WorkbasketService workbasketService; - - @BeforeAll - static void beforeAll() throws Exception { - String userHomeDirectory = System.getProperty("user.home"); - String propertiesFileName = userHomeDirectory + "/taskanaUnitTest.properties"; - - dataSource = - new File(propertiesFileName).exists() - ? TaskanaEngineTestConfiguration.createDataSourceFromProperties(propertiesFileName) - : TaskanaEngineConfiguration.createDefaultDataSource(); - taskanaEngineConfiguration = - new TaskanaEngineConfiguration( - dataSource, false, TaskanaEngineTestConfiguration.getSchemaName()); - sampleDataGenerator = - new SampleDataGenerator(dataSource, TaskanaEngineTestConfiguration.getSchemaName()); - } - - @BeforeEach - void setup() throws Exception { - taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - taskServiceImpl = (TaskServiceImpl) taskanaEngine.getTaskService(); - taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; - classificationService = taskanaEngine.getClassificationService(); - taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.EXPLICIT); - workbasketService = taskanaEngine.getWorkbasketService(); - try (Connection connection = dataSource.getConnection()) { - sampleDataGenerator.clearDb(); - DbSchemaCreator creator = new DbSchemaCreator(dataSource, connection.getSchema()); - creator.run(); - } - } - - @AfterEach - void tearDown() { - sampleDataGenerator.clearDb(); - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void testStartTransactionFail() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - - WorkbasketImpl workbasket = - (WorkbasketImpl) workbasketService.newWorkbasket("k1", "DOMAIN_A"); - workbasket.setName("workbasket"); - workbasket.setId("1"); // set id manually for authorization tests - - workbasket.setType(WorkbasketType.GROUP); - final Classification classification = - classificationService.newClassification("TEST", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - taskanaEngineImpl.getWorkbasketService().createWorkbasket(workbasket); - - WorkbasketAccessItem accessItem = workbasketService.newWorkbasketAccessItem("1", "user-1-1"); - accessItem.setPermission(WorkbasketPermission.APPEND, true); - accessItem.setPermission(WorkbasketPermission.READ, true); - accessItem.setPermission(WorkbasketPermission.OPEN, true); - workbasketService.createWorkbasketAccessItem(accessItem); - - taskanaEngineImpl.getClassificationService().createClassification(classification); - connection.commit(); - Task task = taskServiceImpl.newTask(workbasket.getId()); - task.setName("Unit Test Task"); - task.setClassificationKey(classification.getKey()); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - task = taskServiceImpl.createTask(task); - connection.commit(); - taskServiceImpl.getTask(task.getId()); - - TaskanaEngineImpl te2 = (TaskanaEngineImpl) taskanaEngineConfiguration.buildTaskanaEngine(); - TaskServiceImpl taskServiceImpl2 = (TaskServiceImpl) te2.getTaskService(); - assertThatThrownBy(() -> taskServiceImpl2.getTask(workbasket.getId())) - .isInstanceOf(TaskNotFoundException.class); - connection.commit(); - } - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void testCreateTask() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - - final Task task = this.generateDummyTask(); - connection.commit(); - - WorkbasketAccessItem accessItem = workbasketService.newWorkbasketAccessItem("1", "user-1-1"); - accessItem.setPermission(WorkbasketPermission.APPEND, true); - accessItem.setPermission(WorkbasketPermission.READ, true); - accessItem.setPermission(WorkbasketPermission.OPEN, true); - workbasketService.createWorkbasketAccessItem(accessItem); - - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - final Task task2 = taskServiceImpl.createTask(task); - connection.commit(); // needed so that the change is visible in the other session - - TaskanaEngine te2 = taskanaEngineConfiguration.buildTaskanaEngine(); - TaskServiceImpl taskServiceImpl2 = (TaskServiceImpl) te2.getTaskService(); - Task resultTask = taskServiceImpl2.getTask(task2.getId()); - assertThat(resultTask).isNotNull(); - connection.commit(); - } - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void createTaskShouldThrowWorkbasketNotFoundException() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - Task test = this.generateDummyTask(); - ((WorkbasketSummaryImpl) (test.getWorkbasketSummary())).setId("2"); - - assertThatThrownBy(() -> taskServiceImpl.createTask(test)) - .isInstanceOf(WorkbasketNotFoundException.class); - } - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void createManualTaskShouldThrowClassificationNotFoundException() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - - Workbasket wb = workbasketService.newWorkbasket("WB NR.1", "DOMAIN_A"); - wb.setName("dummy-WB"); - wb.setType(WorkbasketType.PERSONAL); - wb = workbasketService.createWorkbasket(wb); - workbasketService.createWorkbasketAccessItem( - this.createWorkbasketWithSecurity( - wb, taskanaEngine.getCurrentUserContext().getUserid(), true, true, true, false)); - Classification classification = - classificationService.newClassification( - UUID.randomUUID().toString(), wb.getDomain(), "t1"); // not persisted, - // not found. - classification.setName("not persisted - so not found."); - - Task task = this.generateDummyTask(); - ((TaskImpl) task).setWorkbasketSummary(wb.asSummary()); - task.setClassificationKey(classification.getKey()); - - assertThatThrownBy(() -> taskServiceImpl.createTask(task)) - .isInstanceOf(ClassificationNotFoundException.class); - } - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void should_ReturnList_When_BuilderIsUsed() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - WorkbasketImpl workbasket = - (WorkbasketImpl) workbasketService.newWorkbasket("k1", "DOMAIN_A"); - workbasket.setName("workbasket"); - Classification classification = - classificationService.newClassification("TEST", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - classificationService.createClassification(classification); - workbasket.setId("1"); // set id manually for authorization tests - workbasket.setType(WorkbasketType.GROUP); - workbasket = (WorkbasketImpl) workbasketService.createWorkbasket(workbasket); - - WorkbasketAccessItem accessItem = workbasketService.newWorkbasketAccessItem("1", "user-1-1"); - accessItem.setPermission(WorkbasketPermission.APPEND, true); - accessItem.setPermission(WorkbasketPermission.READ, true); - accessItem.setPermission(WorkbasketPermission.OPEN, true); - workbasketService.createWorkbasketAccessItem(accessItem); - - Task task = taskServiceImpl.newTask(workbasket.getId()); - task.setName("Unit Test Task"); - task.setClassificationKey(classification.getKey()); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - taskServiceImpl.createTask(task); - - List results = - taskServiceImpl - .createTaskQuery() - .nameIn("bla", "test") - .descriptionLike("test") - .priorityIn(1, 2, 2) - .stateIn(TaskState.CLAIMED) - .workbasketKeyDomainIn(new KeyDomain("k1", "DOMAIN_A")) - .ownerIn("test", "test2", "bla") - .customAttributeLike(TaskCustomField.CUSTOM_13, "test") - .classificationKeyIn("pId1", "pId2") - .primaryObjectReferenceCompanyIn("first comp", "sonstwo gmbh") - .primaryObjectReferenceSystemIn("sys") - .primaryObjectReferenceTypeIn("type1", "type2") - .primaryObjectReferenceSystemInstanceIn("sysInst1", "sysInst2") - .primaryObjectReferenceValueIn("val1", "val2", "val3") - .list(); - - assertThat(results).isEmpty(); - connection.commit(); - } - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void shouldTransferTaskToOtherWorkbasket() throws Exception { - final int sleepTime = 100; - final String user = taskanaEngine.getCurrentUserContext().getUserid(); - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - - // Source Workbasket - WorkbasketImpl wb = - (WorkbasketImpl) workbasketService.newWorkbasket("sourceWbKey", "DOMAIN_A"); - wb.setName("Basic-Workbasket"); - wb.setDescription("Just used as base WB for Task here"); - wb.setOwner(user); - wb.setType(WorkbasketType.PERSONAL); - Workbasket sourceWB = workbasketService.createWorkbasket(wb); - - workbasketService.createWorkbasketAccessItem( - createWorkbasketWithSecurity(wb, wb.getOwner(), true, true, true, true)); - connection.commit(); - ThrowingCallable call = - () -> - workbasketService.createWorkbasketAccessItem( - createWorkbasketWithSecurity( - sourceWB, sourceWB.getOwner(), false, false, false, false)); - assertThatThrownBy(call).isInstanceOf(WorkbasketAccessItemAlreadyExistException.class); - connection.rollback(); - - // Destination Workbasket - wb = (WorkbasketImpl) workbasketService.newWorkbasket("wb2Key", "DOMAIN_A"); - wb.setName("Desination-WorkBasket"); - wb.setDescription("Destination WB where Task should be transfered to"); - wb.setOwner(user); - wb.setType(WorkbasketType.TOPIC); - - Workbasket destinationWB = workbasketService.createWorkbasket(wb); - workbasketService.createWorkbasketAccessItem( - createWorkbasketWithSecurity( - destinationWB, destinationWB.getOwner(), false, true, true, true)); - - // Classification required for Task - ClassificationImpl classification = - (ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK"); - classification.setCategory("EXTERNAL"); - classification.setName("Transfert-Task Classification"); - classification.setServiceLevel("P1D"); - classificationService.createClassification(classification); - - // Task which should be transfered - TaskImpl task = (TaskImpl) taskServiceImpl.newTask(sourceWB.getId()); - task.setName("Task Name"); - task.setDescription("Task used for transfer Test"); - task.setRead(true); - task.setTransferred(false); - task.setModified(null); - task.setClassificationKey("KEY"); - task.setOwner(user); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - task = (TaskImpl) taskServiceImpl.createTask(task); - Thread.sleep(sleepTime); // Sleep for modification-timestamp - connection.commit(); - - Task resultTask = taskServiceImpl.transfer(task.getId(), destinationWB.getId()); - connection.commit(); - assertThat(resultTask.isRead()).isFalse(); - assertThat(resultTask.isTransferred()).isTrue(); - assertThat(resultTask.getWorkbasketKey()).isEqualTo(destinationWB.getKey()); - assertThat(resultTask.getModified()).isNotNull(); - assertThat(resultTask.getModified()).isNotEqualTo(task.getModified()); - assertThat(resultTask.getCreated()).isNotNull(); - assertThat(resultTask.getCreated()).isEqualTo(task.getCreated()); - } - } - - @Test - void shouldNotTransferAnyTask() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - - assertThatThrownBy(() -> taskServiceImpl.transfer(UUID.randomUUID() + "_X", "1")) - .isInstanceOf(TaskNotFoundException.class); - } - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void shouldNotTransferByFailingSecurity() throws Exception { - final String user = "user-1-1"; - - // Set up Security for this Test - final DataSource dataSource = TaskanaEngineTestConfiguration.getDataSource(); - final TaskanaEngineConfiguration taskanaEngineConfiguration = - new TaskanaEngineConfiguration( - dataSource, false, true, TaskanaEngineTestConfiguration.getSchemaName()); - final TaskanaEngine taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - final TaskanaEngineImpl taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; - taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); - final TaskServiceImpl taskServiceImpl = (TaskServiceImpl) taskanaEngine.getTaskService(); - final ClassificationService classificationService = taskanaEngine.getClassificationService(); - final WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); - - ClassificationImpl classification = - (ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK"); - classification.setCategory("EXTERNAL"); - classification.setName("Transfert-Task Classification"); - classification.setServiceLevel("P1D"); - classificationService.createClassification(classification); - - WorkbasketImpl wb = (WorkbasketImpl) workbasketService.newWorkbasket("wbKey1", "DOMAIN_A"); - wb.setName("BASE WB"); - wb.setDescription("Normal base WB"); - wb.setOwner(user); - wb.setType(WorkbasketType.GROUP); - WorkbasketImpl wbCreated = (WorkbasketImpl) workbasketService.createWorkbasket(wb); - workbasketService.createWorkbasketAccessItem( - createWorkbasketWithSecurity(wbCreated, wbCreated.getOwner(), true, true, true, true)); - - WorkbasketImpl wbNoAppend = - (WorkbasketImpl) workbasketService.newWorkbasket("keyNoAppend", "DOMAIN_B"); - wbNoAppend.setName("Test-Security-WorkBasket-APPEND"); - wbNoAppend.setDescription("Workbasket without permission APPEND on Task"); - wbNoAppend.setOwner(user); - - wbNoAppend.setType(WorkbasketType.CLEARANCE); - WorkbasketImpl wbNoAppendCreated = - (WorkbasketImpl) workbasketService.createWorkbasket(wbNoAppend); - workbasketService.createWorkbasketAccessItem( - createWorkbasketWithSecurity( - wbNoAppendCreated, wbNoAppendCreated.getOwner(), true, true, false, true)); - - WorkbasketImpl wbNoTransfer = - (WorkbasketImpl) workbasketService.newWorkbasket("keyNoTransfer", "DOMAIN_A"); - wbNoTransfer.setName("Test-Security-WorkBasket-TRANSFER"); - wbNoTransfer.setDescription("Workbasket without permission TRANSFER on Task"); - wbNoTransfer.setOwner(user); - wbNoTransfer.setType(WorkbasketType.GROUP); - wbNoTransfer = (WorkbasketImpl) workbasketService.createWorkbasket(wbNoTransfer); - workbasketService.createWorkbasketAccessItem( - createWorkbasketWithSecurity( - wbNoTransfer, wbNoTransfer.getOwner(), true, true, true, false)); - - TaskImpl task = (TaskImpl) taskServiceImpl.newTask(wbCreated.getId()); - task.setName("Task Name"); - task.setDescription("Task used for transfer Test"); - task.setOwner(user); - task.setClassificationKey(classification.getKey()); - task.setPrimaryObjRef(JunitHelper.createDefaultObjRef()); - TaskImpl taskCreated = (TaskImpl) taskServiceImpl.createTask(task); - - // Check failing with missing APPEND - ThrowingCallable call = - () -> taskServiceImpl.transfer(taskCreated.getId(), wbNoAppendCreated.getId()); - assertThatThrownBy(call) - .describedAs( - "Transfer Task should be FAILED, " - + "because there are no APPEND-Rights on destination WB.") - .isInstanceOf(NotAuthorizedException.class) - .hasMessageContaining("APPEND"); - - assertThat(taskCreated.isTransferred()).isFalse(); - assertThat(taskCreated.getWorkbasketKey()).isNotEqualTo(wbNoAppendCreated.getKey()); - assertThat(taskCreated.getWorkbasketKey()).isEqualTo(wbCreated.getKey()); - - // Check failing with missing TRANSFER - taskCreated.setId(""); - taskCreated.setWorkbasketKey(wbNoTransfer.getKey()); - taskCreated.getWorkbasketSummaryImpl().setId(wbNoTransfer.getId()); - taskCreated.setExternalId(IdGenerator.generateWithPrefix("TST")); - TaskImpl taskCreated2 = (TaskImpl) taskServiceImpl.createTask(taskCreated); - assertThatThrownBy(() -> taskServiceImpl.transfer(taskCreated2.getId(), wbCreated.getId())) - .describedAs( - "Transfer Task should be FAILED, because there are no TRANSFER-Rights on current WB.") - .isInstanceOf(NotAuthorizedException.class) - .hasMessageContaining("TRANSFER"); - - assertThat(taskCreated2.isTransferred()).isFalse(); - assertThat(taskCreated2.getWorkbasketKey()).isNotEqualTo(wbNoAppendCreated.getKey()); - assertThat(taskCreated2.isTransferred()).isFalse(); - assertThat(taskCreated2.getWorkbasketKey()).isNotEqualTo(wbNoAppendCreated.getKey()); - } - - @AfterEach - void cleanUp() throws Exception { - taskanaEngineImpl.setConnection(null); - } - - private Task generateDummyTask() throws Exception { - WorkbasketImpl workbasket = (WorkbasketImpl) workbasketService.newWorkbasket("wb", "DOMAIN_A"); - workbasket.setName("wb"); - workbasket.setId("1"); // set id manually for authorization tests - workbasket.setType(WorkbasketType.GROUP); - taskanaEngine.getWorkbasketService().createWorkbasket(workbasket); - - Classification classification = - classificationService.newClassification("TEST", "DOMAIN_A", "TASK"); - classification.setServiceLevel("P1D"); - taskanaEngine.getClassificationService().createClassification(classification); - - Task task = taskServiceImpl.newTask(workbasket.getId()); - task.setClassificationKey(classification.getKey()); - return task; - } - - private WorkbasketAccessItem createWorkbasketWithSecurity( - Workbasket wb, - String accessId, - boolean permOpen, - boolean permRead, - boolean permAppend, - boolean permTransfer) { - WorkbasketAccessItem accessItem = - workbasketService.newWorkbasketAccessItem(wb.getId(), accessId); - accessItem.setPermission(WorkbasketPermission.OPEN, permOpen); - accessItem.setPermission(WorkbasketPermission.READ, permRead); - accessItem.setPermission(WorkbasketPermission.APPEND, permAppend); - accessItem.setPermission(WorkbasketPermission.TRANSFER, permTransfer); - return accessItem; - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplTest.java deleted file mode 100644 index 1bf516b16..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskServiceImplTest.java +++ /dev/null @@ -1,86 +0,0 @@ -package pro.taskana.task.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.when; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.classification.api.models.Classification; -import pro.taskana.classification.internal.ClassificationServiceImpl; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.task.api.models.ObjectReference; -import pro.taskana.task.api.models.TaskSummary; -import pro.taskana.task.internal.models.TaskImpl; -import pro.taskana.workbasket.api.WorkbasketService; -import pro.taskana.workbasket.api.models.Workbasket; - -/** Unit Test for TaskServiceImpl. */ -@ExtendWith(MockitoExtension.class) -class TaskServiceImplTest { - - private TaskServiceImpl cut; - - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - - @Mock private TaskanaEngine taskanaEngineMock; - - @Mock private TaskMapper taskMapperMock; - - @Mock private TaskCommentMapper taskCommentMapperMock; - - @Mock private AttachmentMapper attachmentMapperMock; - - @Mock private WorkbasketService workbasketServiceMock; - - @Mock private ClassificationServiceImpl classificationServiceImplMock; - - @BeforeEach - void setup() { - when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock); - when(taskanaEngineMock.getWorkbasketService()).thenReturn(workbasketServiceMock); - when(taskanaEngineMock.getClassificationService()).thenReturn(classificationServiceImplMock); - cut = - new TaskServiceImpl( - internalTaskanaEngineMock, taskMapperMock, taskCommentMapperMock, attachmentMapperMock); - } - - @Test - void testTaskSummaryEqualsHashCode() throws Exception { - Classification classification = CreateTaskModelHelper.createDummyClassification(); - Workbasket wb = CreateTaskModelHelper.createWorkbasket("WB-ID", "WB-Key"); - ObjectReference objectReference = JunitHelper.createDefaultObjRef(); - TaskImpl taskBefore = - CreateTaskModelHelper.createUnitTestTask("ID", "taskName", wb.getKey(), classification); - taskBefore.setPrimaryObjRef(objectReference); - Thread.sleep(10); - TaskImpl taskAfter = - CreateTaskModelHelper.createUnitTestTask("ID", "taskName", wb.getKey(), classification); - taskAfter.setPrimaryObjRef(objectReference); - TaskSummary summaryBefore = taskBefore.asSummary(); - TaskSummary summaryAfter = taskAfter.asSummary(); - - assertThat(summaryAfter).isNotEqualTo(summaryBefore); - assertThat(summaryAfter.hashCode()).isNotEqualTo(summaryBefore.hashCode()); - - taskAfter.setCreated(taskBefore.getCreated()); - taskAfter.setModified(taskBefore.getModified()); - summaryAfter = taskAfter.asSummary(); - assertThat(summaryAfter).isEqualTo(summaryBefore); - assertThat(summaryAfter.hashCode()).isEqualTo(summaryBefore.hashCode()); - - taskBefore.setModified(null); - summaryBefore = taskBefore.asSummary(); - assertThat(summaryAfter).isNotEqualTo(summaryBefore); - assertThat(summaryAfter.hashCode()).isNotEqualTo(summaryBefore.hashCode()); - - taskAfter.setModified(null); - summaryAfter = taskAfter.asSummary(); - assertThat(summaryAfter).isEqualTo(summaryBefore); - assertThat(summaryAfter.hashCode()).isEqualTo(summaryBefore.hashCode()); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskTestMapper.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskTestMapper.java deleted file mode 100644 index 285cf522a..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskTestMapper.java +++ /dev/null @@ -1,72 +0,0 @@ -package pro.taskana.task.internal; - -import java.util.List; -import java.util.Map; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Result; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.type.ClobTypeHandler; - -import pro.taskana.common.internal.persistence.MapTypeHandler; -import pro.taskana.task.internal.models.TaskImpl; - -/** This class contains specific mybatis mappings for task tests. */ -@SuppressWarnings({"checkstyle:LineLength"}) -public interface TaskTestMapper { - - @Select("select CUSTOM_ATTRIBUTES from TASK where id = #{taskId}") - @Result( - property = "customAttributes", - column = "CUSTOM_ATTRIBUTES", - javaType = String.class, - typeHandler = ClobTypeHandler.class) - String getCustomAttributesAsString(@Param("taskId") String taskId); - - @Select( - "SELECT ID, CREATED, CLAIMED, COMPLETED, MODIFIED, PLANNED, DUE, NAME, CREATOR, DESCRIPTION, NOTE, PRIORITY, STATE, CLASSIFICATION_CATEGORY, CLASSIFICATION_KEY, CLASSIFICATION_ID, WORKBASKET_ID, WORKBASKET_KEY, DOMAIN, BUSINESS_PROCESS_ID, PARENT_BUSINESS_PROCESS_ID, OWNER, POR_COMPANY, POR_SYSTEM, POR_INSTANCE, POR_TYPE, POR_VALUE, IS_READ, IS_TRANSFERRED, CUSTOM_ATTRIBUTES, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8, CUSTOM_9, CUSTOM_10 " - + "FROM TASK " - + "WHERE CUSTOM_ATTRIBUTES like #{searchText}") - @Result(property = "id", column = "ID") - @Result(property = "created", column = "CREATED") - @Result(property = "claimed", column = "CLAIMED") - @Result(property = "completed", column = "COMPLETED") - @Result(property = "modified", column = "MODIFIED") - @Result(property = "planned", column = "PLANNED") - @Result(property = "due", column = "DUE") - @Result(property = "name", column = "NAME") - @Result(property = "creator", column = "CREATOR") - @Result(property = "description", column = "DESCRIPTION") - @Result(property = "note", column = "NOTE") - @Result(property = "priority", column = "PRIORITY") - @Result(property = "state", column = "STATE") - @Result(property = "classificationSummaryImpl.category", column = "CLASSIFICATION_CATEGORY") - @Result(property = "classificationSummaryImpl.id", column = "CLASSIFICATION_ID") - @Result(property = "classificationSummaryImpl.key", column = "CLASSIFICATION_KEY") - @Result(property = "domain", column = "DOMAIN") - @Result(property = "businessProcessId", column = "BUSINESS_PROCESS_ID") - @Result(property = "parentBusinessProcessId", column = "PARENT_BUSINESS_PROCESS_ID") - @Result(property = "owner", column = "OWNER") - @Result(property = "primaryObjRef.company", column = "POR_COMPANY") - @Result(property = "primaryObjRef.system", column = "POR_SYSTEM") - @Result(property = "primaryObjRef.systemInstance", column = "POR_INSTANCE") - @Result(property = "primaryObjRef.type", column = "POR_TYPE") - @Result(property = "primaryObjRef.value", column = "POR_VALUE") - @Result(property = "isRead", column = "IS_READ") - @Result(property = "isTransferred", column = "IS_TRANSFERRED") - @Result( - property = "customAttributes", - column = "CUSTOM_ATTRIBUTES", - javaType = Map.class, - typeHandler = MapTypeHandler.class) - @Result(property = "custom1", column = "CUSTOM_1") - @Result(property = "custom2", column = "CUSTOM_2") - @Result(property = "custom3", column = "CUSTOM_3") - @Result(property = "custom4", column = "CUSTOM_4") - @Result(property = "custom5", column = "CUSTOM_5") - @Result(property = "custom6", column = "CUSTOM_6") - @Result(property = "custom7", column = "CUSTOM_7") - @Result(property = "custom8", column = "CUSTOM_8") - @Result(property = "custom9", column = "CUSTOM_9") - @Result(property = "custom10", column = "CUSTOM_10") - List selectTasksByCustomAttributeLike(@Param("searchText") String searchText); -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskTransferrerTest.java b/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskTransferrerTest.java deleted file mode 100644 index 289b79e6e..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/task/internal/TaskTransferrerTest.java +++ /dev/null @@ -1,106 +0,0 @@ -package pro.taskana.task.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -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 org.apache.ibatis.session.SqlSession; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.classification.api.models.Classification; -import pro.taskana.classification.internal.ClassificationQueryImpl; -import pro.taskana.classification.internal.ClassificationServiceImpl; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.task.api.TaskState; -import pro.taskana.task.api.models.Task; -import pro.taskana.task.internal.models.TaskImpl; -import pro.taskana.workbasket.api.WorkbasketPermission; -import pro.taskana.workbasket.api.WorkbasketService; -import pro.taskana.workbasket.api.models.Workbasket; - -/** Unit Test for TaskServiceImpl. */ -@ExtendWith(MockitoExtension.class) -class TaskTransferrerTest { - - private TaskTransferrer cut; - @Mock private TaskServiceImpl taskServiceImplMock; - - @Mock private TaskanaEngineConfiguration taskanaEngineConfigurationMock; - - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - - @Mock private TaskanaEngine taskanaEngineMock; - - @Mock private TaskMapper taskMapperMock; - - @Mock private ObjectReferenceMapper objectReferenceMapperMock; - - @Mock private WorkbasketService workbasketServiceMock; - - @Mock private ClassificationServiceImpl classificationServiceImplMock; - - @Mock private AttachmentMapper attachmentMapperMock; - - @Mock private ClassificationQueryImpl classificationQueryImplMock; - - @Mock private SqlSession sqlSessionMock; - - @Test - void testTransferTaskToDestinationWorkbasketWithoutSecurity() throws Exception { - doReturn(taskanaEngineMock).when(internalTaskanaEngineMock).getEngine(); - doReturn(workbasketServiceMock).when(taskanaEngineMock).getWorkbasketService(); - cut = new TaskTransferrer(internalTaskanaEngineMock, taskMapperMock, taskServiceImplMock); - - final TaskTransferrer cutSpy = Mockito.spy(cut); - Workbasket destinationWorkbasket = CreateTaskModelHelper.createWorkbasket("2", "k1"); - Workbasket sourceWorkbasket = CreateTaskModelHelper.createWorkbasket("47", "key47"); - Classification dummyClassification = CreateTaskModelHelper.createDummyClassification(); - TaskImpl task = - CreateTaskModelHelper.createUnitTestTask( - "1", "Unit Test Task 1", "key47", dummyClassification); - task.setWorkbasketSummary(sourceWorkbasket.asSummary()); - task.setRead(true); - doReturn(destinationWorkbasket) - .when(workbasketServiceMock) - .getWorkbasket(destinationWorkbasket.getId()); - doReturn(task).when(taskServiceImplMock).getTask(task.getId()); - - final Task actualTask = cutSpy.transfer(task.getId(), destinationWorkbasket.getId()); - - verify(internalTaskanaEngineMock, times(1)).openConnection(); - verify(workbasketServiceMock, times(1)) - .checkAuthorization(destinationWorkbasket.getId(), WorkbasketPermission.APPEND); - verify(workbasketServiceMock, times(1)) - .checkAuthorization(sourceWorkbasket.getId(), WorkbasketPermission.TRANSFER); - verify(workbasketServiceMock, times(1)).getWorkbasket(destinationWorkbasket.getId()); - verify(taskMapperMock, times(1)).update(any()); - verify(internalTaskanaEngineMock, times(1)).returnConnection(); - verify(internalTaskanaEngineMock, times(1)).getEngine(); - verify(internalTaskanaEngineMock).getHistoryEventManager(); - verify(taskanaEngineMock).getWorkbasketService(); - verifyNoMoreInteractions( - attachmentMapperMock, - taskanaEngineConfigurationMock, - taskanaEngineMock, - internalTaskanaEngineMock, - taskMapperMock, - objectReferenceMapperMock, - workbasketServiceMock, - sqlSessionMock, - classificationQueryImplMock); - - assertThat(actualTask.isRead()).isFalse(); - assertThat(actualTask.getState()).isEqualTo(TaskState.READY); - assertThat(actualTask.isTransferred()).isTrue(); - assertThat(actualTask.getWorkbasketKey()).isEqualTo(destinationWorkbasket.getKey()); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketAccessItemQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketAccessItemQueryImplTest.java deleted file mode 100644 index ddf62574f..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketAccessItemQueryImplTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package pro.taskana.workbasket.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; -import org.apache.ibatis.session.SqlSession; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.workbasket.api.models.WorkbasketAccessItem; -import pro.taskana.workbasket.internal.models.WorkbasketAccessItemImpl; - -/** Test for WorkbasketAccessItemQueryImpl. */ -@ExtendWith(MockitoExtension.class) -class WorkbasketAccessItemQueryImplTest { - - @InjectMocks private WorkbasketAccessItemQueryImpl workbasketAccessItemQueryImpl; - - @Mock private InternalTaskanaEngine internalTaskanaEngine; - - @Mock private SqlSession sqlSession; - - @Test - void should_ReturnList_When_BuilderIsUsed() { - when(internalTaskanaEngine.openAndReturnConnection(any())).thenReturn(new ArrayList<>()); - - List result = - workbasketAccessItemQueryImpl.accessIdIn("test", "asd").list(); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnListWithOffset_When_BuilderIsUsed() { - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); - - List result = - workbasketAccessItemQueryImpl.accessIdIn("test", "asd").list(1, 1); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnOneItem_When_BuilderIsUsed() { - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketAccessItemImpl()); - - WorkbasketAccessItem result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd").single(); - assertThat(result).isNotNull(); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketQueryImplTest.java deleted file mode 100644 index 4001c516c..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketQueryImplTest.java +++ /dev/null @@ -1,81 +0,0 @@ -package pro.taskana.workbasket.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; -import org.apache.ibatis.session.SqlSession; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.security.CurrentUserContext; -import pro.taskana.common.internal.InternalTaskanaEngine; -import pro.taskana.workbasket.api.models.WorkbasketSummary; -import pro.taskana.workbasket.internal.models.WorkbasketSummaryImpl; - -/** Test for WorkbasketQueryImpl. */ -@ExtendWith(MockitoExtension.class) -class WorkbasketQueryImplTest { - - @InjectMocks private WorkbasketQueryImpl workbasketQueryImpl; - - @Mock private InternalTaskanaEngine internalTaskanaEngine; - - @Mock private TaskanaEngine taskanaEngine; - - @Mock private SqlSession sqlSession; - - @Mock private CurrentUserContext currentUserContext; - - @BeforeEach - void setup() { - when(internalTaskanaEngine.getEngine()).thenReturn(taskanaEngine); - when(taskanaEngine.getCurrentUserContext()).thenReturn(currentUserContext); - } - - @Test - void should_ReturnList_When_BuilderIsUsed() { - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); - - List result = - workbasketQueryImpl - .nameIn("Gruppenpostkorb KSC 1", "Gruppenpostkorb KSC 2") - .keyLike("GPK_%") - .list(); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnListWithOffset_When_BuilderIsUsed() { - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); - - List result = - workbasketQueryImpl - .nameIn("Gruppenpostkorb KSC 1", "Gruppenpostkorb KSC 2") - .keyLike("GPK_%") - .list(1, 1); - assertThat(result).isNotNull(); - } - - @Test - void should_ReturnOneItem_When_BuilderIsUsed() { - when(internalTaskanaEngine.getSqlSession()).thenReturn(sqlSession); - when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketSummaryImpl()); - - WorkbasketSummary result = - workbasketQueryImpl - .nameIn("Gruppenpostkorb KSC 1", "Gruppenpostkorb KSC 2") - .keyLike("GPK_%") - .single(); - assertThat(result).isNotNull(); - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplIntAutocommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplIntAutocommitTest.java deleted file mode 100644 index d575452d4..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplIntAutocommitTest.java +++ /dev/null @@ -1,194 +0,0 @@ -package pro.taskana.workbasket.internal; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -import java.util.List; -import javax.sql.DataSource; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.TaskanaEngine.ConnectionManagementMode; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; -import pro.taskana.common.internal.util.IdGenerator; -import pro.taskana.common.test.security.JaasExtension; -import pro.taskana.common.test.security.WithAccessId; -import pro.taskana.sampledata.SampleDataGenerator; -import pro.taskana.workbasket.api.WorkbasketPermission; -import pro.taskana.workbasket.api.WorkbasketService; -import pro.taskana.workbasket.api.WorkbasketType; -import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException; -import pro.taskana.workbasket.api.models.Workbasket; -import pro.taskana.workbasket.api.models.WorkbasketAccessItem; -import pro.taskana.workbasket.api.models.WorkbasketSummary; -import pro.taskana.workbasket.internal.models.WorkbasketImpl; - -/** Integration Test for workbasketServiceImpl with connection management mode AUTOCOMMIT. */ -@ExtendWith(JaasExtension.class) -class WorkbasketServiceImplIntAutocommitTest { - - private static final int SLEEP_TIME = 100; - private WorkbasketService workBasketService; - - @BeforeAll - static void resetDb() { - DataSource ds = TaskanaEngineTestConfiguration.getDataSource(); - String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - new SampleDataGenerator(ds, schemaName).dropDb(); - } - - @BeforeEach - void setup() throws Exception { - DataSource dataSource = TaskanaEngineTestConfiguration.getDataSource(); - String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - TaskanaEngineConfiguration taskanaEngineConfiguration = - new TaskanaEngineConfiguration(dataSource, false, schemaName); - TaskanaEngine taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - taskanaEngine.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); - workBasketService = taskanaEngine.getWorkbasketService(); - SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName); - sampleDataGenerator.clearDb(); - } - - @Test - void testGetWorkbasketFail() { - assertThatThrownBy(() -> workBasketService.getWorkbasket("fail")) - .isInstanceOf(WorkbasketNotFoundException.class); - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void testUpdateWorkbasket() throws Exception { - String id0 = IdGenerator.generateWithPrefix("TWB"); - Workbasket workbasket0 = - createTestWorkbasket(id0, "key0", "DOMAIN_A", "Superbasket", WorkbasketType.GROUP); - workbasket0 = workBasketService.createWorkbasket(workbasket0); - createWorkbasketWithSecurity(workbasket0, "user-1-1", true, true, false, false); - - String id1 = IdGenerator.generateWithPrefix("TWB"); - Workbasket workbasket1 = - createTestWorkbasket(id1, "key1", "DOMAIN_A", "Megabasket", WorkbasketType.GROUP); - workbasket1 = workBasketService.createWorkbasket(workbasket1); - createWorkbasketWithSecurity(workbasket1, "user-1-1", true, true, false, false); - - String id2 = IdGenerator.generateWithPrefix("TWB"); - Workbasket workbasket2 = - createTestWorkbasket(id2, "key2", "DOMAIN_A", "Hyperbasket", WorkbasketType.GROUP); - workbasket2 = workBasketService.createWorkbasket(workbasket2); - createWorkbasketWithSecurity(workbasket2, "user-1-1", true, true, false, false); - List distTargets = List.of(workbasket0.getId(), workbasket1.getId()); - Thread.sleep(SLEEP_TIME); - workBasketService.setDistributionTargets(workbasket2.getId(), distTargets); - - String id3 = IdGenerator.generateWithPrefix("TWB"); - Workbasket workbasket3 = - createTestWorkbasket( - id3, "key3", "DOMAIN_A", "hm ... irgend ein basket", WorkbasketType.GROUP); - workbasket3 = workBasketService.createWorkbasket(workbasket3); - createWorkbasketWithSecurity(workbasket3, "user-1-1", true, true, false, false); - - List newDistTargets = List.of(workbasket3.getId()); - Thread.sleep(SLEEP_TIME); - workBasketService.setDistributionTargets(workbasket2.getId(), newDistTargets); - - Workbasket foundBasket = workBasketService.getWorkbasket(workbasket2.getId()); - - List distributionTargets = - workBasketService.getDistributionTargets(foundBasket.getId()); - - assertThat(distributionTargets).hasSize(1); - assertThat(distributionTargets.get(0).getId()).isEqualTo(id3); - assertThat(workBasketService.getWorkbasket(id2).getCreated()) - .isNotEqualTo(workBasketService.getWorkbasket(id2).getModified()); - assertThat(workBasketService.getWorkbasket(id1).getCreated()) - .isEqualTo(workBasketService.getWorkbasket(id1).getModified()); - assertThat(workBasketService.getWorkbasket(id3).getCreated()) - .isEqualTo(workBasketService.getWorkbasket(id3).getModified()); - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void testInsertWorkbasketAccessUser() throws Exception { - - Workbasket wb = - createTestWorkbasket( - "k100000000000000000000000000000000000000", - "key1", - "DOMAIN_A", - "name", - WorkbasketType.PERSONAL); - workBasketService.createWorkbasket(wb); - WorkbasketAccessItem accessItem = - workBasketService.newWorkbasketAccessItem( - "k100000000000000000000000000000000000000", "Arthur Dent"); - accessItem.setPermission(WorkbasketPermission.OPEN, true); - accessItem.setPermission(WorkbasketPermission.READ, true); - workBasketService.createWorkbasketAccessItem(accessItem); - - assertThat( - workBasketService.getWorkbasketAccessItems("k100000000000000000000000000000000000000")) - .hasSize(1); - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void testUpdateWorkbasketAccessUser() throws Exception { - WorkbasketImpl wb = (WorkbasketImpl) workBasketService.newWorkbasket("key", "DOMAIN_A"); - wb.setId("k200000000000000000000000000000000000000"); - wb.setName("name"); - wb.setDescription("Description of a Workbasket..."); - wb.setType(WorkbasketType.GROUP); - workBasketService.createWorkbasket(wb); - - WorkbasketAccessItem accessItem = - workBasketService.newWorkbasketAccessItem( - "k200000000000000000000000000000000000000", "Zaphod Beeblebrox"); - accessItem.setPermission(WorkbasketPermission.OPEN, true); - accessItem.setPermission(WorkbasketPermission.READ, true); - workBasketService.createWorkbasketAccessItem(accessItem); - - assertThat( - workBasketService.getWorkbasketAccessItems("k200000000000000000000000000000000000000")) - .hasSize(1); - - accessItem.setPermission(WorkbasketPermission.APPEND, true); - workBasketService.updateWorkbasketAccessItem(accessItem); - - if (TaskanaEngineConfiguration.shouldUseLowerCaseForAccessIds()) { - assertThat(accessItem.getAccessId()).isEqualTo("zaphod beeblebrox"); - } else { - assertThat(accessItem.getAccessId()).isEqualTo("Zaphod Beeblebrox"); - } - } - - private void createWorkbasketWithSecurity( - Workbasket wb, - String accessId, - boolean permOpen, - boolean permRead, - boolean permAppend, - boolean permTransfer) - throws Exception { - WorkbasketAccessItem accessItem = - workBasketService.newWorkbasketAccessItem(wb.getId(), accessId); - accessItem.setPermission(WorkbasketPermission.OPEN, permOpen); - accessItem.setPermission(WorkbasketPermission.READ, permRead); - accessItem.setPermission(WorkbasketPermission.APPEND, permAppend); - accessItem.setPermission(WorkbasketPermission.TRANSFER, permTransfer); - workBasketService.createWorkbasketAccessItem(accessItem); - } - - private Workbasket createTestWorkbasket( - String id, String key, String domain, String name, WorkbasketType type) { - WorkbasketImpl wb = (WorkbasketImpl) workBasketService.newWorkbasket(key, domain); - wb.setId(id); - wb.setName(name); - wb.setDescription("Description of a Workbasket..."); - wb.setType(type); - return wb; - } -} diff --git a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplIntExplicitTest.java deleted file mode 100644 index 3f72d8bf2..000000000 --- a/lib/taskana-core/src/test/java/pro/taskana/workbasket/internal/WorkbasketServiceImplIntExplicitTest.java +++ /dev/null @@ -1,190 +0,0 @@ -package pro.taskana.workbasket.internal; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.sql.Connection; -import java.util.List; -import javax.sql.DataSource; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import pro.taskana.TaskanaEngineConfiguration; -import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.common.api.TaskanaEngine.ConnectionManagementMode; -import pro.taskana.common.internal.TaskanaEngineImpl; -import pro.taskana.common.internal.TaskanaEngineTestConfiguration; -import pro.taskana.common.internal.util.IdGenerator; -import pro.taskana.common.test.security.JaasExtension; -import pro.taskana.common.test.security.WithAccessId; -import pro.taskana.sampledata.SampleDataGenerator; -import pro.taskana.workbasket.api.WorkbasketPermission; -import pro.taskana.workbasket.api.WorkbasketService; -import pro.taskana.workbasket.api.WorkbasketType; -import pro.taskana.workbasket.api.models.Workbasket; -import pro.taskana.workbasket.api.models.WorkbasketAccessItem; -import pro.taskana.workbasket.api.models.WorkbasketSummary; -import pro.taskana.workbasket.internal.models.WorkbasketImpl; - -/** Integration Test for workbasketServiceImpl with connection mode EXPLICIT. */ -@ExtendWith(JaasExtension.class) -class WorkbasketServiceImplIntExplicitTest { - - private static final int SLEEP_TIME = 100; - - private DataSource dataSource; - private TaskanaEngine taskanaEngine; - private TaskanaEngineImpl taskanaEngineImpl; - private WorkbasketService workBasketService; - - @BeforeAll - static void resetDb() { - DataSource ds = TaskanaEngineTestConfiguration.getDataSource(); - String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - new SampleDataGenerator(ds, schemaName).dropDb(); - } - - @BeforeEach - void setup() throws Exception { - dataSource = TaskanaEngineTestConfiguration.getDataSource(); - String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - TaskanaEngineConfiguration taskanaEngineConfiguration = - new TaskanaEngineConfiguration(dataSource, false, schemaName); - taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; - taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.EXPLICIT); - SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName); - sampleDataGenerator.clearDb(); - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void testUpdateWorkbasket() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - workBasketService = taskanaEngine.getWorkbasketService(); - String id0 = IdGenerator.generateWithPrefix("TWB"); - Workbasket workbasket0 = - createTestWorkbasket(id0, "key0", "DOMAIN_A", "Superbasket", WorkbasketType.GROUP); - workbasket0 = workBasketService.createWorkbasket(workbasket0); - createWorkbasketWithSecurity(workbasket0, "user-1-1", true, true, false, false); - - String id1 = IdGenerator.generateWithPrefix("TWB"); - Workbasket workbasket1 = - createTestWorkbasket(id1, "key1", "DOMAIN_A", "Megabasket", WorkbasketType.GROUP); - workbasket1 = workBasketService.createWorkbasket(workbasket1); - createWorkbasketWithSecurity(workbasket1, "user-1-1", true, true, false, false); - - String id2 = IdGenerator.generateWithPrefix("TWB"); - Workbasket workbasket2 = - createTestWorkbasket(id2, "key2", "DOMAIN_A", "Hyperbasket", WorkbasketType.GROUP); - workbasket2 = workBasketService.createWorkbasket(workbasket2); - createWorkbasketWithSecurity(workbasket2, "user-1-1", true, true, false, false); - - List distTargets = List.of(workbasket0.getId(), workbasket1.getId()); - Thread.sleep(SLEEP_TIME); - workBasketService.setDistributionTargets(workbasket2.getId(), distTargets); - - String id3 = IdGenerator.generateWithPrefix("TWB"); - Workbasket workbasket3 = - createTestWorkbasket( - id3, "key3", "DOMAIN_A", "hm ... irgend ein basket", WorkbasketType.GROUP); - workbasket3 = workBasketService.createWorkbasket(workbasket3); - createWorkbasketWithSecurity(workbasket3, "user-1-1", true, true, false, false); - - List newDistTargets = List.of(workbasket3.getId()); - Thread.sleep(SLEEP_TIME); - workBasketService.setDistributionTargets(workbasket2.getId(), newDistTargets); - - Workbasket foundBasket = workBasketService.getWorkbasket(workbasket2.getId()); - - List distributionTargets = - workBasketService.getDistributionTargets(foundBasket.getId()); - assertThat(distributionTargets).hasSize(1); - assertThat(distributionTargets.get(0).getId()).isEqualTo(workbasket3.getId()); - assertThat(workBasketService.getWorkbasket(id2).getCreated()) - .isNotEqualTo(workBasketService.getWorkbasket(id2).getModified()); - assertThat(workBasketService.getWorkbasket(id1).getCreated()) - .isEqualTo(workBasketService.getWorkbasket(id1).getModified()); - assertThat(workBasketService.getWorkbasket(id3).getCreated()) - .isEqualTo(workBasketService.getWorkbasket(id3).getModified()); - connection.commit(); - } - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void testInsertWorkbasketAccessUser() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - workBasketService = taskanaEngine.getWorkbasketService(); - Workbasket wb = - createTestWorkbasket("id1", "key1", "DOMAIN_A", "name", WorkbasketType.CLEARANCE); - workBasketService.createWorkbasket(wb); - WorkbasketAccessItem accessItem = - workBasketService.newWorkbasketAccessItem("id1", "Arthur Dent"); - accessItem.setPermission(WorkbasketPermission.OPEN, true); - accessItem.setPermission(WorkbasketPermission.READ, true); - workBasketService.createWorkbasketAccessItem(accessItem); - - assertThat(workBasketService.getWorkbasketAccessItems("id1")).hasSize(1); - connection.commit(); - } - } - - @WithAccessId(user = "user-1-1", groups = "businessadmin") - @Test - void testUpdateWorkbasketAccessUser() throws Exception { - try (Connection connection = dataSource.getConnection()) { - taskanaEngineImpl.setConnection(connection); - workBasketService = taskanaEngine.getWorkbasketService(); - - Workbasket wb = - createTestWorkbasket("key2", "kkey2", "DOMAIN_A", "name", WorkbasketType.CLEARANCE); - workBasketService.createWorkbasket(wb); - WorkbasketAccessItem accessItem = - workBasketService.newWorkbasketAccessItem("key2", "Zaphod Beeblebrox"); - accessItem.setPermission(WorkbasketPermission.OPEN, true); - accessItem.setPermission(WorkbasketPermission.READ, true); - workBasketService.createWorkbasketAccessItem(accessItem); - - assertThat(workBasketService.getWorkbasketAccessItems("key2")).hasSize(1); - assertThat(accessItem.getAccessId()).isEqualTo("zaphod beeblebrox"); - connection.commit(); - } - } - - @AfterEach - void cleanUp() throws Exception { - taskanaEngineImpl.setConnection(null); - } - - private void createWorkbasketWithSecurity( - Workbasket wb, - String accessId, - boolean permOpen, - boolean permRead, - boolean permAppend, - boolean permTransfer) - throws Exception { - WorkbasketAccessItem accessItem = - workBasketService.newWorkbasketAccessItem(wb.getId(), accessId); - accessItem.setPermission(WorkbasketPermission.OPEN, permOpen); - accessItem.setPermission(WorkbasketPermission.READ, permRead); - accessItem.setPermission(WorkbasketPermission.APPEND, permAppend); - accessItem.setPermission(WorkbasketPermission.TRANSFER, permTransfer); - workBasketService.createWorkbasketAccessItem(accessItem); - } - - private Workbasket createTestWorkbasket( - String id, String key, String domain, String name, WorkbasketType type) { - WorkbasketImpl wb = (WorkbasketImpl) workBasketService.newWorkbasket(key, domain); - wb.setId(id); - wb.setName(name); - wb.setDescription("Description of a Workbasket..."); - wb.setType(type); - return wb; - } -}