TSK-1816: Update QueryClassificationAccTest to use Test-API
Used new builder to create classifications. Instead of working with a clean database for each test, we create a scenario. In that scenario we use ClassificationCustomField#CUSTOM_1 to filter out all the other created Classifications. Therefore, all tests regarding ClassificationCustomFields are executed first. The alternative is to create a "big" scenario as a test setup. But that would result to the same issues we have with the sql file. Corrected assertion for should_FindClassifications_When_QueryingForListValueField():167. The databases (H2, POSTGRES) have different interpretations for boolean values. getCustomAttribute got deprecated, now getCustomField is being used. Move test to taskana-core-test according to new project structure. Separated QueryClassificationsAccTest to filtering and sorting class. ClassificationQueryAccTest resolved to QueryClassifications classes. TSK-1816: X
This commit is contained in:
parent
f7b2a46e75
commit
e074a90222
|
@ -1,48 +0,0 @@
|
|||
package acceptance.classification.query;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static pro.taskana.testapi.DefaultTestEntities.defaultTestClassification;
|
||||
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestTemplate;
|
||||
|
||||
import pro.taskana.classification.api.ClassificationService;
|
||||
import pro.taskana.classification.api.models.ClassificationSummary;
|
||||
import pro.taskana.testapi.TaskanaInject;
|
||||
import pro.taskana.testapi.TaskanaIntegrationTest;
|
||||
import pro.taskana.testapi.security.WithAccessId;
|
||||
|
||||
/** Acceptance test for classification queries and authorization. */
|
||||
@TaskanaIntegrationTest
|
||||
class ClassificationQueryAccTest {
|
||||
|
||||
@TaskanaInject ClassificationService classificationService;
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@BeforeAll
|
||||
void createClassificationsWithDifferentRoles() throws Exception {
|
||||
for (int i = 0; i < 5; i++) {
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_FindAllAccesibleClassifications_When_UserNotAuthenticated() {
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService.createClassificationQuery().domainIn("DOMAIN_A").list();
|
||||
|
||||
assertThat(classificationSummaryList).hasSize(5);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "admin")
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@TestTemplate
|
||||
void should_FindAllAccessibleClassifications_When_UserInRoleAdminOrBusinessadmin() {
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService.createClassificationQuery().domainIn("DOMAIN_A").list();
|
||||
|
||||
assertThat(classificationSummaryList).hasSize(5);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,724 @@
|
|||
package acceptance.classification.query;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_1;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_2;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_3;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_4;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_5;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_6;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_7;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_8;
|
||||
import static pro.taskana.classification.api.ClassificationQueryColumnName.CREATED;
|
||||
import static pro.taskana.classification.api.ClassificationQueryColumnName.NAME;
|
||||
import static pro.taskana.classification.api.ClassificationQueryColumnName.TYPE;
|
||||
import static pro.taskana.classification.api.ClassificationQueryColumnName.VALID_IN_DOMAIN;
|
||||
import static pro.taskana.testapi.DefaultTestEntities.defaultTestClassification;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeFormatterBuilder;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.DynamicTest;
|
||||
import org.junit.jupiter.api.MethodOrderer;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestFactory;
|
||||
import org.junit.jupiter.api.TestMethodOrder;
|
||||
import org.junit.jupiter.api.TestTemplate;
|
||||
import org.junit.jupiter.api.function.ThrowingConsumer;
|
||||
|
||||
import pro.taskana.classification.api.ClassificationCustomField;
|
||||
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.TimeInterval;
|
||||
import pro.taskana.common.internal.util.Pair;
|
||||
import pro.taskana.testapi.TaskanaInject;
|
||||
import pro.taskana.testapi.TaskanaIntegrationTest;
|
||||
import pro.taskana.testapi.security.WithAccessId;
|
||||
|
||||
/**
|
||||
* The QueryClassificationsFilteringAccTest for all "query classification with filtering" scenarios.
|
||||
*
|
||||
* <p>Note: Instead of working with a clean database for each test, we create a scenario. In that
|
||||
* scenario we use {@linkplain ClassificationCustomField#CUSTOM_1} to filter out all the other
|
||||
* created {@linkplain Classification Classifications}. Therefore, all tests regarding {@linkplain
|
||||
* ClassificationCustomField ClassificationCustomFields} are executed first.
|
||||
*
|
||||
* <p>The alternative is to create a "big" scenario as a test setup. But that would result to the
|
||||
* same issues we have with the sql file.
|
||||
*/
|
||||
@TaskanaIntegrationTest
|
||||
@TestMethodOrder(value = MethodOrderer.OrderAnnotation.class)
|
||||
class ClassificationQueryFilteringAccTest {
|
||||
@TaskanaInject ClassificationService classificationService;
|
||||
ClassificationSummary classificationSummaryBeforeAll;
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@BeforeAll
|
||||
void createClassificationsWithDifferentRoles() throws Exception {
|
||||
classificationSummaryBeforeAll =
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@TestFactory
|
||||
@Order(1)
|
||||
Stream<DynamicTest> should_FindClassifications_When_QueryingForCustomAttributeIn() {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
|
||||
Iterator<ClassificationCustomField> customFieldIterator =
|
||||
Arrays.stream(ClassificationCustomField.values()).iterator();
|
||||
ThrowingConsumer<ClassificationCustomField> test =
|
||||
customField -> {
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(customField, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(customField, testIdentifier)
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService
|
||||
.getClassification(classificationSummary.getKey(), "")
|
||||
.asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
};
|
||||
return DynamicTest.stream(
|
||||
customFieldIterator, c -> String.format("for %s", c.toString()), test);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@TestFactory
|
||||
Stream<DynamicTest> should_FindClassifications_When_QueryingForCustomAttributeLike() {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
|
||||
// Value for Custom-Field has to be unique. Ensure uniqueness with testIdentifier
|
||||
Iterator<Pair<ClassificationCustomField, String>> identifierToCustomFieldsIterator =
|
||||
List.of(
|
||||
Pair.of(CUSTOM_1, testIdentifier + "_1CUSTOM1"),
|
||||
Pair.of(CUSTOM_2, testIdentifier + "_2CUSTOM2"),
|
||||
Pair.of(CUSTOM_3, testIdentifier + "_3CUSTOM3"),
|
||||
Pair.of(CUSTOM_4, testIdentifier + "_4CUSTOM4"),
|
||||
Pair.of(CUSTOM_5, testIdentifier + "_5CUSTOM5"),
|
||||
Pair.of(CUSTOM_6, testIdentifier + "_6CUSTOM6"),
|
||||
Pair.of(CUSTOM_7, testIdentifier + "_7CUSTOM7"),
|
||||
Pair.of(CUSTOM_8, testIdentifier + "_8CUSTOM8"))
|
||||
.iterator();
|
||||
|
||||
ThrowingConsumer<Pair<ClassificationCustomField, String>> test =
|
||||
pair -> {
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(pair.getLeft(), pair.getRight())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(pair.getLeft(), testIdentifier + "%")
|
||||
.domainIn("DOMAIN_A")
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList).containsExactlyInAnyOrder(classificationSummary);
|
||||
};
|
||||
|
||||
return DynamicTest.stream(
|
||||
identifierToCustomFieldsIterator,
|
||||
p -> String.format("for %s", p.getLeft().toString()),
|
||||
test);
|
||||
}
|
||||
|
||||
@Test
|
||||
void should_FindAllAccessibleClassifications_When_QueryingNotAuthenticated() throws Exception {
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.idIn(classificationSummaryBeforeAll.getId())
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList).containsExactly(classificationSummaryBeforeAll);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "admin")
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@TestTemplate
|
||||
void should_FindAllAccessibleClassifications_When_UserInRoleAdminOrBusinessadmin() {
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.idIn(classificationSummaryBeforeAll.getId())
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList).containsExactly(classificationSummaryBeforeAll);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingForCategoryInAndDomainIn() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.category("EXTERNAL")
|
||||
.type("TASK")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.category("MANUAL")
|
||||
.type("TASK")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.domainIn("DOMAIN_A")
|
||||
.categoryIn("MANUAL")
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList).containsExactly(classificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindAClassification_When_QueryingForMultipleDomainsInAndKeyIn() throws Exception {
|
||||
defaultTestClassification().domain("DOMAIN_B").buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn(classificationSummary.getKey())
|
||||
.domainIn("DOMAIN_A", "DOMAIN_B", "")
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassification =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassification);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingForTypeInAndParentIn() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.type("TASK")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary parentClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.type("DOCUMENT")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.type("DOCUMENT")
|
||||
.parentId(parentClassificationSummary.getId())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.typeIn("TASK", "DOCUMENT")
|
||||
.parentIdIn("")
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassification =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
ClassificationSummary masterParentClassification =
|
||||
classificationService
|
||||
.getClassification(parentClassificationSummary.getKey(), "")
|
||||
.asSummary();
|
||||
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(
|
||||
classificationSummary,
|
||||
parentClassificationSummary,
|
||||
masterClassification,
|
||||
masterParentClassification);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingForKeyInAndCategoryIn() throws Exception {
|
||||
ClassificationSummary externalClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.type("TASK")
|
||||
.category("EXTERNAL")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary manualClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.type("TASK")
|
||||
.category("MANUAL")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn(externalClassificationSummary.getKey(), manualClassificationSummary.getKey())
|
||||
.categoryIn("EXTERNAL", "MANUAL")
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationExternal =
|
||||
classificationService
|
||||
.getClassification(externalClassificationSummary.getKey(), "")
|
||||
.asSummary();
|
||||
ClassificationSummary masterClassificationManual =
|
||||
classificationService
|
||||
.getClassification(manualClassificationSummary.getKey(), "")
|
||||
.asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(
|
||||
externalClassificationSummary,
|
||||
manualClassificationSummary,
|
||||
masterClassificationExternal,
|
||||
masterClassificationManual);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingForParentIdIn() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary parentClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary childClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.parentId(parentClassificationSummary.getId())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.parentIdIn(parentClassificationSummary.getId())
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterChildClassification =
|
||||
classificationService
|
||||
.getClassification(childClassificationSummary.getKey(), "")
|
||||
.asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(childClassificationSummary, masterChildClassification);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingForParentKeyIn() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary parentClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary childClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.parentKey(parentClassificationSummary.getKey())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.parentKeyIn(parentClassificationSummary.getKey())
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterChildClassification =
|
||||
classificationService
|
||||
.getClassification(childClassificationSummary.getKey(), "")
|
||||
.asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(childClassificationSummary, masterChildClassification);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForParentIdInAndCustom2In() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary parentClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_2, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary childClassificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_2, testIdentifier)
|
||||
.parentId(parentClassificationSummary.getId())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_2, testIdentifier)
|
||||
.parentIdIn(parentClassificationSummary.getId())
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterChildClassification =
|
||||
classificationService
|
||||
.getClassification(childClassificationSummary.getKey(), "")
|
||||
.asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(childClassificationSummary, masterChildClassification);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForPriorityInAndValidInDomain() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.priority(999)
|
||||
.isValidInDomain(true)
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.validInDomainEquals(true)
|
||||
.priorityIn(999)
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList).containsExactlyInAnyOrder(classificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForNameLike() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.name(testIdentifier + "Name")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService.createClassificationQuery().nameLike(testIdentifier + "%").list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForNameIn() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.name(testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService.createClassificationQuery().nameIn(testIdentifier).list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForDescriptionLike() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.description(testIdentifier + "Description")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.descriptionLike(testIdentifier + "%")
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForServiceLevelIn() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.serviceLevel("P99D")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.serviceLevelIn("P99D")
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForServiceLevelLike() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.serviceLevel("P99D")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.serviceLevelLike("P99%")
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForApplicationEntryPointIn() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.applicationEntryPoint(testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.applicationEntryPointIn(testIdentifier)
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForApplicationEntryPointLike() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.applicationEntryPoint(testIdentifier + "ApplicationEntryPoint")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.applicationEntryPointLike(testIdentifier + "%")
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingForCreatedTimestampWithin() throws Exception {
|
||||
final Instant now = Instant.now();
|
||||
Thread.sleep(10);
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.createdWithin(new TimeInterval(now, null))
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService.getClassification(classificationSummary.getKey(), "").asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassification_When_QueryingForModifiedTimestampWithin() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
Classification classification =
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.buildAndStore(classificationService);
|
||||
final Instant now = Instant.now();
|
||||
Thread.sleep(10);
|
||||
classificationService.updateClassification(classification);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.modifiedWithin(new TimeInterval(now, null))
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList).containsExactlyInAnyOrder(classification.asSummary());
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingUsingListNameValues() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.name("Classification Name")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<String> columnNameList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.listValues(NAME, null);
|
||||
List<String> columnNameMasterList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.domainIn("")
|
||||
.listValues(NAME, null);
|
||||
List<String> columnNameAllList =
|
||||
Stream.concat(columnNameList.stream(), columnNameMasterList.stream())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
assertThat(columnNameAllList).containsOnly("Classification Name");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingUsingListTypeValues() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.type("DOCUMENT")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<String> columnTypeList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.listValues(TYPE, null);
|
||||
List<String> columnTypeMasterList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.domainIn("")
|
||||
.listValues(TYPE, null);
|
||||
List<String> columnTypeAllList =
|
||||
Stream.concat(columnTypeList.stream(), columnTypeMasterList.stream())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
assertThat(columnTypeAllList).containsOnly("DOCUMENT");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingUsingListIsValidInDomainValues() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.type("TASK")
|
||||
.isValidInDomain(false)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<String> columnIsValidInDomainList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.listValues(VALID_IN_DOMAIN, null);
|
||||
List<String> columnIsValidInDomainMasterList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.domainIn("")
|
||||
.listValues(TYPE, null);
|
||||
List<String> columnIsValidInDomainAllList =
|
||||
Stream.concat(columnIsValidInDomainList.stream(), columnIsValidInDomainMasterList.stream())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// Expecting "0" for H2 (==> false in Oracle DBs) and "f" for POSTGRES (==> abbreviation of
|
||||
// false)
|
||||
assertThat(columnIsValidInDomainAllList).containsAnyOf("f", "0");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_FindClassifications_When_QueryingUsingListCreatedValues() throws Exception {
|
||||
final DateTimeFormatterBuilder dateTimeFormatterBuilder =
|
||||
new DateTimeFormatterBuilder()
|
||||
.appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"))
|
||||
.appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"))
|
||||
.appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"));
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
final Instant now = Instant.now();
|
||||
Thread.sleep(10);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.type("TASK")
|
||||
.isValidInDomain(false)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<String> columnCreatedList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.listValues(CREATED, null);
|
||||
List<String> columnCreatedMasterList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.listValues(CREATED, null);
|
||||
List<String> columnCreatedAllList =
|
||||
Stream.concat(columnCreatedList.stream(), columnCreatedMasterList.stream())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
assertThat(columnCreatedAllList)
|
||||
.isNotEmpty()
|
||||
.allSatisfy(
|
||||
c ->
|
||||
assertThat(now)
|
||||
.isBefore(
|
||||
LocalDateTime.parse(c, dateTimeFormatterBuilder.toFormatter())
|
||||
.toInstant(ZoneOffset.UTC)));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,429 @@
|
|||
package acceptance.classification.query;
|
||||
|
||||
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_1;
|
||||
import static pro.taskana.common.api.BaseQuery.SortDirection.ASCENDING;
|
||||
import static pro.taskana.common.api.BaseQuery.SortDirection.DESCENDING;
|
||||
import static pro.taskana.testapi.DefaultTestEntities.defaultTestClassification;
|
||||
|
||||
import java.text.Collator;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.api.DynamicTest;
|
||||
import org.junit.jupiter.api.MethodOrderer;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestFactory;
|
||||
import org.junit.jupiter.api.TestMethodOrder;
|
||||
import org.junit.jupiter.api.function.ThrowingConsumer;
|
||||
|
||||
import pro.taskana.classification.api.ClassificationCustomField;
|
||||
import pro.taskana.classification.api.ClassificationService;
|
||||
import pro.taskana.classification.api.models.Classification;
|
||||
import pro.taskana.classification.api.models.ClassificationSummary;
|
||||
import pro.taskana.testapi.TaskanaInject;
|
||||
import pro.taskana.testapi.TaskanaIntegrationTest;
|
||||
import pro.taskana.testapi.security.WithAccessId;
|
||||
|
||||
/**
|
||||
* The QueryClassificationsWithSortingAccTest for all "query classification with sorting" scenarios.
|
||||
*
|
||||
* <p>Note: Instead of working with a clean database for each test, we create a scenario. In that
|
||||
* scenario we use {@linkplain ClassificationCustomField#CUSTOM_1} to filter out all the other
|
||||
* created {@linkplain Classification Classifications}. Therefore, all tests regarding {@linkplain
|
||||
* ClassificationCustomField ClassificationCustomFields} are executed first.
|
||||
*
|
||||
* <p>The alternative is to create a "big" scenario as a test setup. But that would result to the
|
||||
* same issues we have with the sql file.
|
||||
*/
|
||||
@TaskanaIntegrationTest
|
||||
@TestMethodOrder(value = MethodOrderer.OrderAnnotation.class)
|
||||
class ClassificationQuerySortingAccTest {
|
||||
|
||||
@TaskanaInject ClassificationService classificationService;
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@TestFactory
|
||||
@Order(1)
|
||||
Stream<DynamicTest> should_FindClassifications_When_QueryingForCustomAttributeIn() {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
|
||||
Iterator<ClassificationCustomField> customFieldIterator =
|
||||
Arrays.stream(ClassificationCustomField.values()).iterator();
|
||||
ThrowingConsumer<ClassificationCustomField> test =
|
||||
customField -> {
|
||||
ClassificationSummary classificationSummary =
|
||||
defaultTestClassification()
|
||||
.customAttribute(customField, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(customField, testIdentifier)
|
||||
.list();
|
||||
|
||||
ClassificationSummary masterClassificationSummary =
|
||||
classificationService
|
||||
.getClassification(classificationSummary.getKey(), "")
|
||||
.asSummary();
|
||||
assertThat(classificationSummaryList)
|
||||
.containsExactlyInAnyOrder(classificationSummary, masterClassificationSummary);
|
||||
};
|
||||
return DynamicTest.stream(
|
||||
customFieldIterator, c -> String.format("for %s", c.toString()), test);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByKeyAsc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByKey(ASCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getKey)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByParentKeyDesc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary parentClassificationSummary1 =
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary parentClassificationSummary2 =
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.parentKey(parentClassificationSummary1.getKey())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.parentKey(parentClassificationSummary2.getKey())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByParentKey(DESCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getParentKey)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByParentKeyAsc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary parentClassificationSummary1 =
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary parentClassificationSummary2 =
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.parentKey(parentClassificationSummary1.getKey())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.parentKey(parentClassificationSummary2.getKey())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByParentKey(ASCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getParentKey)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByParentIdDesc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
ClassificationSummary parentClassificationSummary1 =
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
ClassificationSummary parentClassificationSummary2 =
|
||||
defaultTestClassification().buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.parentId(parentClassificationSummary1.getId())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.parentId(parentClassificationSummary2.getId())
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByParentId(DESCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getParentId)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByCategoryDesc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.category("MANUAL")
|
||||
.type("TASK")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.category("EXTERNAL")
|
||||
.type("TASK")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByCategory(DESCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getCategory)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByDomainAsc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.domain("DOMAIN_A")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.domain("DOMAIN_B")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByDomain(ASCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getDomain)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByPriorityDesc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.priority(1)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.priority(99)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByPriority(DESCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.isSortedAccordingTo(
|
||||
Comparator.comparingInt(ClassificationSummary::getPriority).reversed());
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByNameAsc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.name("A")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.name("B")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByName(ASCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getName)
|
||||
.isSortedAccordingTo(Collator.getInstance(Locale.GERMANY));
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByServiceLevelDesc() throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.serviceLevel("P1D")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.serviceLevel("P99D")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByServiceLevel(DESCENDING)
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getServiceLevel)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void should_OrderClassifications_When_QueryingForOrderByApplicationEntryPointAsc()
|
||||
throws Exception {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.applicationEntryPoint("A")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(CUSTOM_1, testIdentifier)
|
||||
.applicationEntryPoint("B")
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, testIdentifier)
|
||||
.orderByApplicationEntryPoint(ASCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(ClassificationSummary::getApplicationEntryPoint)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@TestFactory
|
||||
Stream<DynamicTest> should_OrderClassifications_When_QueryingForOrderByCustomAttributesAsc() {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
Iterator<ClassificationCustomField> customFieldIterator =
|
||||
Arrays.stream(ClassificationCustomField.values()).iterator();
|
||||
ThrowingConsumer<ClassificationCustomField> test =
|
||||
customField -> {
|
||||
defaultTestClassification()
|
||||
.customAttribute(customField, "A" + testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(customField, "B" + testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(customField, "A" + testIdentifier, "B" + testIdentifier)
|
||||
.orderByCustomAttribute(customField, ASCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(c -> c.getCustomField(customField))
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
};
|
||||
return DynamicTest.stream(
|
||||
customFieldIterator, c -> String.format("for %s", c.toString()), test);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@TestFactory
|
||||
Stream<DynamicTest> should_OrderClassifications_When_QueryingForOrderByCustomAttributesDesc() {
|
||||
String testIdentifier = UUID.randomUUID().toString();
|
||||
Iterator<ClassificationCustomField> customFieldIterator =
|
||||
Arrays.stream(ClassificationCustomField.values()).iterator();
|
||||
ThrowingConsumer<ClassificationCustomField> test =
|
||||
customField -> {
|
||||
defaultTestClassification()
|
||||
.customAttribute(customField, "A" + testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
defaultTestClassification()
|
||||
.customAttribute(customField, "B" + testIdentifier)
|
||||
.buildAndStoreAsSummary(classificationService);
|
||||
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(customField, "A" + testIdentifier, "B" + testIdentifier)
|
||||
.orderByCustomAttribute(customField, DESCENDING)
|
||||
.list();
|
||||
|
||||
// Ensure that there are enough elements to compare
|
||||
assertThat(classificationSummaryList)
|
||||
.hasSize(4)
|
||||
.extracting(c -> c.getCustomField(customField))
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
};
|
||||
return DynamicTest.stream(
|
||||
customFieldIterator, c -> String.format("for %s", c.toString()), test);
|
||||
}
|
||||
}
|
|
@ -1,639 +0,0 @@
|
|||
package acceptance.classification.query;
|
||||
|
||||
import static java.lang.String.CASE_INSENSITIVE_ORDER;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_1;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_2;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_3;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_4;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_5;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_6;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_7;
|
||||
import static pro.taskana.classification.api.ClassificationCustomField.CUSTOM_8;
|
||||
import static pro.taskana.classification.api.ClassificationQueryColumnName.CREATED;
|
||||
import static pro.taskana.classification.api.ClassificationQueryColumnName.NAME;
|
||||
import static pro.taskana.classification.api.ClassificationQueryColumnName.TYPE;
|
||||
import static pro.taskana.classification.api.ClassificationQueryColumnName.VALID_IN_DOMAIN;
|
||||
import static pro.taskana.common.api.BaseQuery.SortDirection.ASCENDING;
|
||||
import static pro.taskana.common.api.BaseQuery.SortDirection.DESCENDING;
|
||||
import static pro.taskana.common.api.SharedConstants.MASTER_DOMAIN;
|
||||
|
||||
import acceptance.AbstractAccTest;
|
||||
import java.text.Collator;
|
||||
import java.time.Instant;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.stream.Stream;
|
||||
import org.assertj.core.api.Condition;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.DynamicTest;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.TestFactory;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.junit.jupiter.api.function.ThrowingConsumer;
|
||||
|
||||
import pro.taskana.classification.api.ClassificationCustomField;
|
||||
import pro.taskana.classification.api.ClassificationService;
|
||||
import pro.taskana.classification.api.models.ClassificationSummary;
|
||||
import pro.taskana.common.api.TimeInterval;
|
||||
import pro.taskana.common.test.security.JaasExtension;
|
||||
import pro.taskana.common.test.security.WithAccessId;
|
||||
|
||||
/** Acceptance test for all "get classification" scenarios. */
|
||||
@ExtendWith(JaasExtension.class)
|
||||
class QueryClassificationAccTest extends AbstractAccTest {
|
||||
|
||||
private static ClassificationService classificationService;
|
||||
|
||||
@BeforeAll
|
||||
static void setup() {
|
||||
classificationService = taskanaEngine.getClassificationService();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryClassificationValuesForColumnName() {
|
||||
List<String> columnValueList =
|
||||
classificationService.createClassificationQuery().listValues(NAME, null);
|
||||
assertThat(columnValueList).hasSize(16);
|
||||
|
||||
columnValueList = classificationService.createClassificationQuery().listValues(TYPE, null);
|
||||
assertThat(columnValueList).hasSize(2);
|
||||
|
||||
columnValueList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.domainIn(MASTER_DOMAIN)
|
||||
.listValues(TYPE, null);
|
||||
assertThat(columnValueList).hasSize(2);
|
||||
|
||||
columnValueList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.domainIn(MASTER_DOMAIN)
|
||||
.listValues(CREATED, null);
|
||||
assertThat(columnValueList).hasSize(1);
|
||||
|
||||
columnValueList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.domainIn(MASTER_DOMAIN)
|
||||
.validInDomainEquals(false)
|
||||
.listValues(VALID_IN_DOMAIN, null);
|
||||
assertThat(columnValueList).hasSize(1); // all are false in ""
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFindClassificationsByCategoryAndDomain() {
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.categoryIn("MANUAL")
|
||||
.domainIn("DOMAIN_A")
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList).hasSize(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetOneClassificationForMultipleDomains() {
|
||||
List<ClassificationSummary> classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn("L10000")
|
||||
.domainIn("DOMAIN_A", "DOMAIN_B", MASTER_DOMAIN)
|
||||
.list();
|
||||
|
||||
assertThat(classifications).hasSize(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetClassificationsForTypeAndParent() {
|
||||
List<ClassificationSummary> classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.typeIn("TASK", "DOCUMENT")
|
||||
.parentIdIn("")
|
||||
.list();
|
||||
|
||||
assertThat(classifications)
|
||||
.hasSize(30)
|
||||
.extracting(ClassificationSummary::getType)
|
||||
.containsOnly("TASK", "DOCUMENT")
|
||||
.areExactly(28, new Condition<>("TASK"::equals, "TASK"))
|
||||
.areExactly(2, new Condition<>("DOCUMENT"::equals, "DOCUMENT"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetClassificationsForKeyAndCategories() {
|
||||
List<ClassificationSummary> classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn("T2100", "L10000")
|
||||
.categoryIn("EXTERNAL", "MANUAL")
|
||||
.list();
|
||||
|
||||
assertThat(classifications)
|
||||
.hasSize(5)
|
||||
.extracting(ClassificationSummary::getCategory)
|
||||
.containsOnly("EXTERNAL", "MANUAL")
|
||||
.areExactly(2, new Condition<>("EXTERNAL"::equals, "EXTERNAL"))
|
||||
.areExactly(3, new Condition<>("MANUAL"::equals, "MANUAL"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetClassificationsWithParentId() {
|
||||
List<ClassificationSummary> classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn("A12", "A13")
|
||||
.categoryIn("EXTERNAL", "MANUAL")
|
||||
.parentIdIn("CLI:100000000000000000000000000000000014")
|
||||
.list();
|
||||
|
||||
assertThat(classifications).hasSize(1);
|
||||
|
||||
classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn("A12", "A13")
|
||||
.categoryIn("EXTERNAL", "MANUAL", "AUTOMATIC")
|
||||
.parentIdIn(
|
||||
"CLI:100000000000000000000000000000000014",
|
||||
"CLI:100000000000000000000000000000000010",
|
||||
"CLI:100000000000000000000000000000000011")
|
||||
.domainIn("DOMAIN_A")
|
||||
.list();
|
||||
assertThat(classifications).hasSize(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetClassificationsWithParentKey() {
|
||||
List<ClassificationSummary> classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn("A12", "A13")
|
||||
.categoryIn("EXTERNAL", "MANUAL")
|
||||
.parentKeyIn("L10000")
|
||||
.list();
|
||||
assertThat(classifications).hasSize(2);
|
||||
|
||||
classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.keyIn("A12", "A13")
|
||||
.categoryIn("EXTERNAL", "MANUAL", "AUTOMATIC")
|
||||
.parentKeyIn("L10000", "T2100", "T6310")
|
||||
.domainIn("DOMAIN_A")
|
||||
.list();
|
||||
assertThat(classifications).hasSize(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetClassificationsWithCustom1() throws Exception {
|
||||
List<ClassificationSummary> classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, "VNR,RVNR,KOLVNR", "VNR")
|
||||
.domainIn("DOMAIN_A")
|
||||
.list();
|
||||
assertThat(classifications).hasSize(14);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetClassificationsWithCustom1Like() throws Exception {
|
||||
List<ClassificationSummary> classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(CUSTOM_1, "%RVNR%")
|
||||
.domainIn("DOMAIN_A")
|
||||
.typeIn("TASK")
|
||||
.list();
|
||||
assertThat(classifications).hasSize(14);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetClassificationsWithParentAndCustom2() throws Exception {
|
||||
List<ClassificationSummary> classifications =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.parentIdIn("CLI:100000000000000000000000000000000004")
|
||||
.customAttributeIn(CUSTOM_2, "TEXT_1", "TEXT_2")
|
||||
.list();
|
||||
|
||||
assertThat(classifications).hasSize(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFindClassificationsByCreatedTimestamp() {
|
||||
List<ClassificationSummary> classificationSummaryList =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.domainIn("DOMAIN_A")
|
||||
.createdWithin(toDaysInterval())
|
||||
.list();
|
||||
|
||||
assertThat(classificationSummaryList).hasSize(18);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFindClassificationsByPriorityAndValidInDomain() {
|
||||
List<ClassificationSummary> list =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.validInDomainEquals(Boolean.TRUE)
|
||||
.priorityIn(1, 2, 3)
|
||||
.list();
|
||||
|
||||
assertThat(list).hasSize(16);
|
||||
}
|
||||
|
||||
@WithAccessId(user = "businessadmin")
|
||||
@Test
|
||||
void testFindClassificationByModifiedWithin() throws Exception {
|
||||
String clId = "CLI:200000000000000000000000000000000015";
|
||||
classificationService.updateClassification(classificationService.getClassification(clId));
|
||||
|
||||
List<ClassificationSummary> list =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.modifiedWithin(
|
||||
new TimeInterval(
|
||||
classificationService.getClassification(clId).getModified(), Instant.now()))
|
||||
.list();
|
||||
|
||||
assertThat(list).hasSize(1).first().extracting(ClassificationSummary::getId).isEqualTo(clId);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForNameLike() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().nameLike("Dynamik%").list();
|
||||
assertThat(results).hasSize(8);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForNameIn() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.nameIn("Widerruf", "OLD-Leistungsfall")
|
||||
.list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForDescriptionLike() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().descriptionLike("Widerruf%").list();
|
||||
assertThat(results).hasSize(9);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForServiceLevelIn() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().serviceLevelIn("P2D").list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForServiceLevelLike() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().serviceLevelLike("PT%").list();
|
||||
assertThat(results).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForApplicationEntryPointIn() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.applicationEntryPointIn("specialPoint", "point0815")
|
||||
.list();
|
||||
assertThat(results).hasSize(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForApplicationEntryPointLike() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.applicationEntryPointLike("point%")
|
||||
.list();
|
||||
assertThat(results).hasSize(3);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom1In() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_1, "VNR,RVNR,KOLVNR, ANR", "VNR")
|
||||
.list();
|
||||
assertThat(results).hasSize(17);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom2In() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_2, "CUSTOM2", "custom2")
|
||||
.list();
|
||||
assertThat(results).hasSize(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom3In() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_3, "Custom3", "custom3")
|
||||
.list();
|
||||
assertThat(results).hasSize(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom4In() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_4, "custom4")
|
||||
.list();
|
||||
assertThat(results).hasSize(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom5In() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_5, "custom5")
|
||||
.list();
|
||||
assertThat(results).hasSize(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom6In() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_6, "custom6")
|
||||
.list();
|
||||
assertThat(results).hasSize(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom7In() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_7, "custom7", "custom_7")
|
||||
.list();
|
||||
assertThat(results).hasSize(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom8In() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeIn(CUSTOM_8, "custom_8", "custom8")
|
||||
.list();
|
||||
assertThat(results).hasSize(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom2Like() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(CUSTOM_2, "cus%")
|
||||
.list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom3Like() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(CUSTOM_3, "cus%")
|
||||
.list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom4Like() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(CUSTOM_4, "cus%")
|
||||
.list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom5Like() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(CUSTOM_5, "cus%")
|
||||
.list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom6Like() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(CUSTOM_6, "cus%")
|
||||
.list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom7Like() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(CUSTOM_7, "cus%")
|
||||
.list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForCustom8Like() throws Exception {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.customAttributeLike(CUSTOM_8, "cus%")
|
||||
.list();
|
||||
assertThat(results).hasSize(6);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByKeyAsc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByKey(ASCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getKey)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByParentIdDesc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByParentId(DESCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getParentId)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByParentKeyDesc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByParentKey(DESCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getParentKey)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByCategoryDesc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByCategory(DESCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getCategory)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByDomainAsc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByDomain(ASCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getDomain)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByPriorityDesc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByPriority(DESCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.isSortedAccordingTo(
|
||||
Comparator.comparingInt(ClassificationSummary::getPriority).reversed());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByNameAsc_old() {
|
||||
ClassificationService classificationService = taskanaEngine.getClassificationService();
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByName(ASCENDING).list();
|
||||
assertThat(results.get(0).getName()).isEqualTo("Beratungsprotokoll");
|
||||
}
|
||||
|
||||
// This test checks the collation of the used databases H2, Postgres and DB2 11.1
|
||||
@Test
|
||||
void testQueryForOrderByNameAsc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByName(ASCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getName)
|
||||
.isSortedAccordingTo(Collator.getInstance(Locale.GERMANY));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByServiceLevelDesc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByServiceLevel(DESCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getServiceLevel)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByApplicationEntryPointAsc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.orderByApplicationEntryPoint(ASCENDING)
|
||||
.list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getApplicationEntryPoint)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testQueryForOrderByParentKeyAsc() {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService.createClassificationQuery().orderByParentKey(ASCENDING).list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(ClassificationSummary::getParentKey)
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
}
|
||||
|
||||
@TestFactory
|
||||
Stream<DynamicTest> should_SortQueryAsc_When_OrderingByCustomAttribute() {
|
||||
Iterator<ClassificationCustomField> iterator =
|
||||
Arrays.stream(ClassificationCustomField.values()).iterator();
|
||||
ThrowingConsumer<ClassificationCustomField> test =
|
||||
customField -> {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.orderByCustomAttribute(customField, ASCENDING)
|
||||
.list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(c -> c.getCustomField(customField))
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER);
|
||||
};
|
||||
return DynamicTest.stream(iterator, c -> "for " + c, test);
|
||||
}
|
||||
|
||||
@TestFactory
|
||||
Stream<DynamicTest> should_SortQueryDesc_When_OrderingByCustomAttribute() {
|
||||
Iterator<ClassificationCustomField> iterator =
|
||||
Arrays.stream(ClassificationCustomField.values()).iterator();
|
||||
ThrowingConsumer<ClassificationCustomField> test =
|
||||
customField -> {
|
||||
List<ClassificationSummary> results =
|
||||
classificationService
|
||||
.createClassificationQuery()
|
||||
.orderByCustomAttribute(customField, DESCENDING)
|
||||
.list();
|
||||
|
||||
assertThat(results)
|
||||
.hasSizeGreaterThan(2)
|
||||
.extracting(c -> c.getCustomField(customField))
|
||||
.isSortedAccordingTo(CASE_INSENSITIVE_ORDER.reversed());
|
||||
};
|
||||
return DynamicTest.stream(iterator, c -> "for " + c, test);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue