Merge branch 'RED-9499' into 'master'

RED-9499: increased id size of entity fo fit typeId length of a created entity

Closes RED-9499

See merge request redactmanager/persistence-service!576
This commit is contained in:
Ali Oezyetimoglu 2024-07-04 09:46:07 +02:00
commit 62852d48df
4 changed files with 67 additions and 7 deletions

View File

@ -178,6 +178,8 @@ public class ExternalControllerAdviceV2 {
String message = Objects.requireNonNull(exception.getRootCause()).getMessage();
if (message.contains("uq_component_definition_technical_name_template")) {
message = "A component with the same technical name already exists in the given dossier template.";
} else if (message.contains("value too long for type character varying")) {
message = "Value is too long. Please use a shorter value.";
} else {
message = "Database error occurred.";
}

View File

@ -212,4 +212,6 @@ databaseChangeLog:
- include:
file: db/changelog/tenant/129-add-component-table.yaml
- include:
file: db/changelog/tenant/130-add-primary-key-constraint-download-status-reports.yaml
file: db/changelog/tenant/130-add-primary-key-constraint-download-status-reports.yaml
- include:
file: db/changelog/tenant/131-changed-max-size-for-id-in-entity.yaml

View File

@ -0,0 +1,9 @@
databaseChangeLog:
- changeSet:
id: changed-max-size-for-id-in-entity
author: ali
changes:
- modifyDataType:
columnName: id
newDataType: VARCHAR(512)
tableName: entity

View File

@ -1,25 +1,36 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
import java.util.Set;
import org.assertj.core.util.Lists;
import org.junit.jupiter.api.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
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.TypeProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.service.DossierService;
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.configuration.Colors;
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;
public class TypeTest extends AbstractPersistenceServerServiceTest {
@ -133,7 +144,9 @@ public class TypeTest extends AbstractPersistenceServerServiceTest {
var types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true);
assertEquals(types.getTypes().size(), 2);
assertTrue(types.getTypes().stream().allMatch(typeValue -> typeValue.getSoftDeletedTime() == null));
assertTrue(types.getTypes()
.stream()
.allMatch(typeValue -> typeValue.getSoftDeletedTime() == null));
dictionaryClient.deleteType(type2.getType(), dossierTemplate.getId());
types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true);
@ -144,10 +157,44 @@ public class TypeTest extends AbstractPersistenceServerServiceTest {
.findFirst()
.get().getSoftDeletedTime());
assertNotNull(types.getTypes()
.stream()
.filter(t -> t.getType().equals(type2.getType()))
.findFirst()
.get().getSoftDeletedTime());
.stream()
.filter(t -> t.getType().equals(type2.getType()))
.findFirst()
.get().getSoftDeletedTime());
}
@Test
public void testAddTypeWithLongName() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
var type = new CreateTypeValue();
type.setAddToDictionaryAction(false);
type.setAutoHideSkipped(false);
type.setCaseInsensitive(false);
type.setDossierDictionaryOnly(false);
type.setDossierTemplateId(dossierTemplate.getId());
type.setHasDictionary(false);
type.setHexColor("#dddddd");
type.setHint(false);
String label = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdf";
type.setLabel(label);
type.setRank(-4);
type.setRecommendation(false);
type.setRecommendationHexColor("#aaaaaa");
type.setSkippedHexColor("#aaaaaa");
String typeName = "lorem_ipsum_dolor_sit_amet_consectetuer_adipiscing_elit_aenean_commodo_ligula_eget_dolor_aenean_massa_cum_sociis_natoque_penatibus_et_magnis_dis_parturient_montes_nascetur_ridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdfridiculussdf";
type.setType(typeName);
String typeId = toTypeId(typeName, dossierTemplate.getId(), dossier.getId());
assertTrue(label.length() > 255 || typeId.length() > 512);
assertThatThrownBy(() -> dictionaryClient.addType(type)).hasMessageContaining("Value is too long.").isInstanceOf(FeignException.class);
}
}