diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java index 855b88b1f..9a263ddfc 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java @@ -3,8 +3,9 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; -import java.util.stream.Collectors; +import java.util.stream.IntStream; import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; @@ -19,7 +20,6 @@ import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPers import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.UpdateTypeValue; 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.Type; import feign.FeignException; @@ -100,6 +100,7 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { } } + @Test public void testAddEntriesWithStopWord2() { @@ -285,7 +286,6 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); - var type = CreateTypeValue.builder() .type("dossier_redaction") .label("Dossier Redactions") @@ -297,7 +297,7 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { .dossierTemplateId(dossierTemplate.getId()) .build(); - var createdType = dictionaryClient.addType(type,null); + var createdType = dictionaryClient.addType(type, null); var word1 = "Luke Skywalker"; var word2 = "Anakin Skywalker"; @@ -314,11 +314,12 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { var actualEntries = dictionary.getEntries(); assertThat(actualEntries.size()).isEqualTo(3); + assertThat(actualEntries).usingComparator(new ListContentWithoutOrderAndWithoutDuplicatesComparator<>()).isEqualTo(entries); - dictionaryClient.deleteType(createdType.getType(), createdType.getDossierTemplateId(),null); - assertThat(dictionaryClient.getAllTypes(createdType.getDossierTemplateId(),null,false).getTypes().size()).isEqualTo(0); + dictionaryClient.deleteType(createdType.getType(), createdType.getDossierTemplateId(), null); + assertThat(dictionaryClient.getAllTypes(createdType.getDossierTemplateId(), null, false).getTypes().size()).isEqualTo(0); - dictionaryClient.addType(type,null); + dictionaryClient.addType(type, null); dictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), null); @@ -374,4 +375,60 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { assertThat(dictionary.getEntries().size()).isEqualTo(5); } + + @Test + public void testCreateAndDeleteLargeDictionary() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + var type = CreateTypeValue.builder() + .type("dossier_redaction") + .label("Dossier Redactions") + .hexColor("#fcba03") + .rank(100) + .description("Something") + .hasDictionary(true) + .addToDictionaryAction(false) + .dossierTemplateId(dossierTemplate.getId()) + .build(); + + var createdType = dictionaryClient.addType(type, null); + + var entries = createDummyEntries(40_000); + + dictionaryClient.addEntry(createdType.getType(), createdType.getDossierTemplateId(), entries, false, null, DictionaryEntryType.ENTRY); + + var dictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), null); + + var actualEntries = dictionary.getEntries(); + assertThat(actualEntries.size()).isEqualTo(entries.size()); + assertThat(actualEntries).usingComparator(new ListContentWithoutOrderAndWithoutDuplicatesComparator<>()).isEqualTo(entries); + + dictionaryClient.deleteEntries(type.getType(), dossierTemplate.getDossierTemplateId(), entries, null, null); + + dictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), null); + + actualEntries = dictionary.getEntries(); + assertThat(actualEntries.size()).isEqualTo(0); + } + + + @SuppressWarnings("SameParameterValue") + private List createDummyEntries(int numberOfEntries) { + + return IntStream.range(0, numberOfEntries).mapToObj(i -> "someWord" + i).toList(); + } + + + private static final class ListContentWithoutOrderAndWithoutDuplicatesComparator implements Comparator> { + + @SuppressWarnings("SuspiciousMethodCalls") + @Override + public int compare(List l1, List l2) { + + return l1.containsAll(l2) ? 0 : -1; + } + + } + }