Merge branch 'RED-10415' into 'release/2.589.x'
RED-10415: Error when deleting entities from Templates without dossiers See merge request redactmanager/persistence-service!878
This commit is contained in:
commit
a4a0521619
@ -262,7 +262,7 @@ public class DictionaryService {
|
|||||||
@PreAuthorize("hasAuthority('" + DELETE_DOSSIER_DICTIONARY_TYPE + "')")
|
@PreAuthorize("hasAuthority('" + DELETE_DOSSIER_DICTIONARY_TYPE + "')")
|
||||||
public void deleteDossierType(String type, String dossierTemplateId, String dossierId) {
|
public void deleteDossierType(String type, String dossierTemplateId, String dossierId) {
|
||||||
|
|
||||||
accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId);
|
accessControlService.checkAccessPermissionsToDossier(dossierId);
|
||||||
accessControlService.verifyUserIsMemberOrApprover(dossierId);
|
accessControlService.verifyUserIsMemberOrApprover(dossierId);
|
||||||
deleteType(toTypeId(type, dossierTemplateId, dossierId));
|
deleteType(toTypeId(type, dossierTemplateId, dossierId));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import org.springframework.beans.BeanUtils;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.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.client.DossierTemplateClient;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
|
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.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.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.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.TypeValue;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.UpdateTypeValue;
|
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.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.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.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.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.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType;
|
||||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||||
|
|
||||||
@ -60,6 +64,9 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private DossierTemplateClient dossierTemplateClient;
|
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> 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");
|
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());
|
.build());
|
||||||
assertThat(returnedtype1.isDossierDictionaryOnly()).isTrue();
|
assertThat(returnedtype1.isDossierDictionaryOnly()).isTrue();
|
||||||
|
|
||||||
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), null, false)
|
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), null, false).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(1);
|
.collect(Collectors.toList()).size()).isEqualTo(1);
|
||||||
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getId(), false)
|
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getId(), false).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(2);
|
.collect(Collectors.toList()).size()).isEqualTo(2);
|
||||||
var dictionary = dictionaryClient.getDictionaryForType(returnedtype1.getType(), dossier.getDossierTemplateId(), dossier2.getId());
|
var dictionary = dictionaryClient.getDictionaryForType(returnedtype1.getType(), dossier.getDossierTemplateId(), dossier2.getId());
|
||||||
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier2.getId(), false)
|
assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier2.getId(), false).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(2);
|
.collect(Collectors.toList()).size()).isEqualTo(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -461,9 +468,10 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
|
|||||||
assertThat(actualEntries).usingComparator(new ListContentWithoutOrderAndWithoutDuplicatesComparator<>()).isEqualTo(entries);
|
assertThat(actualEntries).usingComparator(new ListContentWithoutOrderAndWithoutDuplicatesComparator<>()).isEqualTo(entries);
|
||||||
|
|
||||||
dictionaryClient.deleteType(createdType.getType(), createdType.getDossierTemplateId());
|
dictionaryClient.deleteType(createdType.getType(), createdType.getDossierTemplateId());
|
||||||
assertThat(dictionaryClient.getAllTypes(createdType.getDossierTemplateId(), null, false)
|
assertThat(dictionaryClient.getAllTypes(createdType.getDossierTemplateId(), null, false).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList()).size()).isEqualTo(0);
|
.filter(t -> !t.isSystemManaged())
|
||||||
|
.collect(Collectors.toList()).size()).isEqualTo(0);
|
||||||
|
|
||||||
dictionaryClient.addType(type);
|
dictionaryClient.addType(type);
|
||||||
|
|
||||||
@ -1019,20 +1027,20 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
|
|||||||
.build());
|
.build());
|
||||||
assertThat(dtType.getRank()).isEqualTo(100);
|
assertThat(dtType.getRank()).isEqualTo(100);
|
||||||
assertThat(dtType.isDossierDictionaryOnly()).isFalse();
|
assertThat(dtType.isDossierDictionaryOnly()).isFalse();
|
||||||
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true)
|
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(1);
|
.collect(Collectors.toList()).size()).isEqualTo(1);
|
||||||
|
|
||||||
dictionaryClient.deleteType(dtType.getType(), dtType.getDossierTemplateId());
|
dictionaryClient.deleteType(dtType.getType(), dtType.getDossierTemplateId());
|
||||||
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false)
|
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(0);
|
.collect(Collectors.toList()).size()).isEqualTo(0);
|
||||||
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true)
|
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(1);
|
.collect(Collectors.toList()).size()).isEqualTo(1);
|
||||||
|
|
||||||
var dtType2 = dictionaryClient.addType(CreateTypeValue.builder()
|
var dtType2 = dictionaryClient.addType(CreateTypeValue.builder()
|
||||||
.type("test2")
|
.type("test2")
|
||||||
@ -1046,24 +1054,24 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
|
|||||||
.dossierTemplateId(dossierTemplate.getId())
|
.dossierTemplateId(dossierTemplate.getId())
|
||||||
.dossierDictionaryOnly(false)
|
.dossierDictionaryOnly(false)
|
||||||
.build());
|
.build());
|
||||||
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false)
|
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(1);
|
.collect(Collectors.toList()).size()).isEqualTo(1);
|
||||||
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true)
|
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(2);
|
.collect(Collectors.toList()).size()).isEqualTo(2);
|
||||||
|
|
||||||
assertThat(dtType2.getRank()).isEqualTo(dtType.getRank());
|
assertThat(dtType2.getRank()).isEqualTo(dtType.getRank());
|
||||||
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false)
|
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(2);
|
.collect(Collectors.toList()).size()).isEqualTo(2);
|
||||||
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), true)
|
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), true).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(3);
|
.collect(Collectors.toList()).size()).isEqualTo(3);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1096,14 +1104,16 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
|
|||||||
.dossierDictionaryOnly(false)
|
.dossierDictionaryOnly(false)
|
||||||
.build());
|
.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);
|
assertThat(types.size()).isEqualTo(1);
|
||||||
|
|
||||||
String dictionaryEntry = "entry1";
|
String dictionaryEntry = "entry1";
|
||||||
dictionaryManagementService.addEntries(dtType.getTypeId(), List.of(dictionaryEntry), false, false, DictionaryEntryType.ENTRY, true);
|
dictionaryManagementService.addEntries(dtType.getTypeId(), List.of(dictionaryEntry), false, false, DictionaryEntryType.ENTRY, true);
|
||||||
var dictionaryEntries = dictionaryManagementService.getAllEntriesInDossierTemplate(dtType.getTypeId(), dictionaryEntry, DictionaryEntryType.ENTRY);
|
var dictionaryEntries = dictionaryManagementService.getAllEntriesInDossierTemplate(dtType.getTypeId(), dictionaryEntry, DictionaryEntryType.ENTRY);
|
||||||
|
|
||||||
|
|
||||||
assertThat(types.get(0).isHasDictionary()).isFalse();
|
assertThat(types.get(0).isHasDictionary()).isFalse();
|
||||||
assertThat(dictionaryEntries.get(0).getValue()).isEqualTo(dictionaryEntry);
|
assertThat(dictionaryEntries.get(0).getValue()).isEqualTo(dictionaryEntry);
|
||||||
}
|
}
|
||||||
@ -1130,10 +1140,10 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
|
|||||||
.build());
|
.build());
|
||||||
assertThat(dtType.getRank()).isEqualTo(100);
|
assertThat(dtType.getRank()).isEqualTo(100);
|
||||||
assertThat(dtType.isDossierDictionaryOnly()).isFalse();
|
assertThat(dtType.isDossierDictionaryOnly()).isFalse();
|
||||||
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true)
|
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes()
|
||||||
.getTypes()
|
.stream()
|
||||||
.stream().filter(t -> !t.isSystemManaged()).collect(Collectors.toList())
|
.filter(t -> !t.isSystemManaged())
|
||||||
.size()).isEqualTo(1);
|
.collect(Collectors.toList()).size()).isEqualTo(1);
|
||||||
|
|
||||||
assertThatThrownBy(() -> dictionaryManagementService.addEntries(dtType.getTypeId(),
|
assertThatThrownBy(() -> dictionaryManagementService.addEntries(dtType.getTypeId(),
|
||||||
List.of("entry1", "entry2"),
|
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>> {
|
private static final class ListContentWithoutOrderAndWithoutDuplicatesComparator<T> implements Comparator<List<? extends T>> {
|
||||||
|
|
||||||
@SuppressWarnings("SuspiciousMethodCalls")
|
@SuppressWarnings("SuspiciousMethodCalls")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user