RED-10415: Error when deleting entities from Templates without dossiers

This commit is contained in:
maverickstuder 2024-11-19 15:35:28 +01:00
parent 70d55ac6c3
commit 215afe0834
2 changed files with 111 additions and 50 deletions

View File

@ -268,7 +268,7 @@ public class DictionaryService {
@PreAuthorize("hasAuthority('" + DELETE_DOSSIER_DICTIONARY_TYPE + "')")
public void deleteDossierType(String type, String dossierTemplateId, String dossierId) {
accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId);
accessControlService.checkAccessPermissionsToDossier(dossierId);
accessControlService.verifyUserIsMemberOrApprover(dossierId);
deleteType(toTypeId(type, dossierTemplateId, dossierId));
}

View File

@ -20,6 +20,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
@ -29,12 +30,15 @@ import com.iqser.red.service.persistence.management.v1.processor.service.Diction
import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryService;
import com.iqser.red.service.persistence.service.v1.api.external.model.UpdateEntries;
import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.TypeResponse;
import com.iqser.red.service.persistence.service.v1.api.shared.model.TypeValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.UpdateTypeValue;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dictionary.Dictionary;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dictionary.DictionaryDifference;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dictionary.DictionaryDifferencePerType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dictionary.DictionaryDifferenceResponse;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
import com.knecon.fforesight.tenantcommons.TenantContext;
@ -60,6 +64,9 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
@Autowired
private DossierTemplateClient dossierTemplateClient;
@Autowired
private DossierClient dossierClient;
private final List<String> testList1 = List.of("William c. Spare", "Charalampos", "Carina Wilson", "PATRICIA A. SHEEHY", "William C. Spare", "carlsen", "Patricia A. Sheehy");
private final List<String> testList2 = List.of("William C. Spare", "Charalampos", "Carina Wilson", "Patricia A. Sheehy", "William c. Spare", "carlsen", "PATRICIA A. SHEEHY");
@ -409,19 +416,19 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
.build());
assertThat(returnedtype1.isDossierDictionaryOnly()).isTrue();
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), null, false)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getId(), false)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(2);
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), null, false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getId(), false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(2);
var dictionary = dictionaryClient.getDictionaryForType(returnedtype1.getType(), dossier.getDossierTemplateId(), dossier2.getId());
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier2.getId(), false)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(2);
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier2.getId(), false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(2);
}
@ -461,9 +468,10 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
assertThat(actualEntries).usingComparator(new ListContentWithoutOrderAndWithoutDuplicatesComparator<>()).isEqualTo(entries);
dictionaryClient.deleteType(createdType.getType(), createdType.getDossierTemplateId());
assertThat(dictionaryClient.getAllTypes(createdType.getDossierTemplateId(), null, false)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList()).size()).isEqualTo(0);
assertThat(dictionaryClient.getAllTypes(createdType.getDossierTemplateId(), null, false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(0);
dictionaryClient.addType(type);
@ -1019,20 +1027,20 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
.build());
assertThat(dtType.getRank()).isEqualTo(100);
assertThat(dtType.isDossierDictionaryOnly()).isFalse();
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(1);
dictionaryClient.deleteType(dtType.getType(), dtType.getDossierTemplateId());
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(0);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(0);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(1);
var dtType2 = dictionaryClient.addType(CreateTypeValue.builder()
.type("test2")
@ -1046,24 +1054,24 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
.dossierTemplateId(dossierTemplate.getId())
.dossierDictionaryOnly(false)
.build());
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(2);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(2);
assertThat(dtType2.getRank()).isEqualTo(dtType.getRank());
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(2);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), true)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(3);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(2);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), true).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(3);
}
@ -1096,14 +1104,16 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
.dossierDictionaryOnly(false)
.build());
List<TypeValue> types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes().stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList());
List<TypeValue> types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList());
assertThat(types.size()).isEqualTo(1);
String dictionaryEntry = "entry1";
dictionaryManagementService.addEntries(dtType.getTypeId(), List.of(dictionaryEntry), false, false, DictionaryEntryType.ENTRY, true);
var dictionaryEntries = dictionaryManagementService.getAllEntriesInDossierTemplate(dtType.getTypeId(), dictionaryEntry, DictionaryEntryType.ENTRY);
assertThat(types.get(0).isHasDictionary()).isFalse();
assertThat(dictionaryEntries.get(0).getValue()).isEqualTo(dictionaryEntry);
}
@ -1130,10 +1140,10 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
.build());
assertThat(dtType.getRank()).isEqualTo(100);
assertThat(dtType.isDossierDictionaryOnly()).isFalse();
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true)
.getTypes()
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
.size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.collect(Collectors.toList()).size()).isEqualTo(1);
assertThatThrownBy(() -> dictionaryManagementService.addEntries(dtType.getTypeId(),
List.of("entry1", "entry2"),
@ -1144,6 +1154,57 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
}
@Test
void testDeleteDossierThenDeleteType() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "TestDossier");
CreateTypeValue createTypeValue = CreateTypeValue.builder()
.type("test_type")
.label("Test Type")
.hexColor("#fcba03")
.rank(100)
.hint(false)
.caseInsensitive(false)
.recommendation(false)
.addToDictionaryAction(true)
.dossierTemplateId(dossierTemplate.getId())
.dossierDictionaryOnly(false)
.build();
var type = dictionaryClient.addType(createTypeValue);
List<TypeValue> customTypes = dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.toList();
assertEquals(2, customTypes.size());
dossierClient.deleteDossier(dossier.getId());
dictionaryClient.deleteType(type.getType(), type.getDossierTemplateId());
var types = dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.toList();
assertThat(types).isEmpty();
dictionaryClient.addType(createTypeValue);
customTypes = dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false).getTypes()
.stream()
.filter(t -> !t.isSystemManaged())
.toList();
assertEquals(2, customTypes.size());
}
private static final class ListContentWithoutOrderAndWithoutDuplicatesComparator<T> implements Comparator<List<? extends T>> {
@SuppressWarnings("SuspiciousMethodCalls")