Closes #2339 - sort classificationCategoriesByType according to type order (#2340)

This commit is contained in:
SebastianRoseneck 2023-12-05 11:11:16 +01:00 committed by GitHub
parent 78c8db25b9
commit 87e0ddff25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 6 deletions

View File

@ -507,7 +507,7 @@ class TaskanaConfigurationTest {
// user configuration // user configuration
.addAdditionalUserInfo(true) .addAdditionalUserInfo(true)
.minimalPermissionsToAssignDomains(Set.of(WorkbasketPermission.CUSTOM_2)) .minimalPermissionsToAssignDomains(Set.of(WorkbasketPermission.CUSTOM_2))
//database configuration // database configuration
.useSpecificDb2Taskquery(false) .useSpecificDb2Taskquery(false)
.build(); .build();
@ -1044,6 +1044,24 @@ class TaskanaConfigurationTest {
Map.entry("TYPE_A", List.of("A", "B")), Map.entry("TYPE_B", List.of("C", "D")))); Map.entry("TYPE_A", List.of("A", "B")), Map.entry("TYPE_B", List.of("C", "D"))));
} }
@Test
void should_OrderClassificationCategoriesByTypeOrder() {
TaskanaConfiguration configuration =
new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
.classificationTypes(List.of("type_a", "type_c", "type_b"))
.classificationCategoriesByType(
Map.ofEntries(
Map.entry("type_a", Collections.emptyList()),
Map.entry("type_b", Collections.emptyList()),
Map.entry("type_c", Collections.emptyList())))
.build();
List<String> expectedKeysOrder = Arrays.asList("TYPE_A", "TYPE_C", "TYPE_B");
List<String> actualKeysOrder =
new ArrayList<>(configuration.getClassificationCategoriesByType().keySet());
assertThat(actualKeysOrder).containsExactlyElementsOf(expectedKeysOrder);
}
@Test @Test
void should_FillAllTaskanaRoles_When_RoleMapIsIncomplete() { void should_FillAllTaskanaRoles_When_RoleMapIsIncomplete() {
TaskanaConfiguration configuration = TaskanaConfiguration configuration =

View File

@ -16,9 +16,11 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -153,10 +155,14 @@ public class TaskanaConfiguration {
// classification configuration // classification configuration
this.classificationTypes = Collections.unmodifiableList(builder.classificationTypes); this.classificationTypes = Collections.unmodifiableList(builder.classificationTypes);
this.classificationCategoriesByType = this.classificationCategoriesByType =
builder.classificationCategoriesByType.entrySet().stream() Collections.unmodifiableMap(
.collect( builder.classificationCategoriesByType.entrySet().stream()
Collectors.toUnmodifiableMap( .collect(
Entry::getKey, e -> Collections.unmodifiableList(e.getValue()))); Collectors.toMap(
Map.Entry::getKey,
e -> Collections.unmodifiableList(e.getValue()),
(oldValue, newValue) -> oldValue,
LinkedHashMap::new)));
// working time configuration // working time configuration
this.useWorkingTimeCalculation = builder.useWorkingTimeCalculation; this.useWorkingTimeCalculation = builder.useWorkingTimeCalculation;
this.workingTimeSchedule = this.workingTimeSchedule =
@ -1360,7 +1366,13 @@ public class TaskanaConfiguration {
e.getValue().stream() e.getValue().stream()
.map(String::toUpperCase) .map(String::toUpperCase)
.collect(Collectors.toList()))) .collect(Collectors.toList())))
.collect(Collectors.toMap(Entry::getKey, Entry::getValue)); .sorted(Comparator.comparingInt(e -> classificationTypes.indexOf(e.getKey())))
.collect(
Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue,
LinkedHashMap::new));
roleMap = roleMap =
Arrays.stream(TaskanaRole.values()) Arrays.stream(TaskanaRole.values())
.map(role -> Pair.of(role, roleMap.getOrDefault(role, Set.of()))) .map(role -> Pair.of(role, roleMap.getOrDefault(role, Set.of())))