RED-9499: increased id size of entity fo fit typeId length of a created entity
* catch too long names * added JUnit test
This commit is contained in:
parent
1c896f72e1
commit
6157154378
@ -178,6 +178,8 @@ public class ExternalControllerAdviceV2 {
|
|||||||
String message = Objects.requireNonNull(exception.getRootCause()).getMessage();
|
String message = Objects.requireNonNull(exception.getRootCause()).getMessage();
|
||||||
if (message.contains("uq_component_definition_technical_name_template")) {
|
if (message.contains("uq_component_definition_technical_name_template")) {
|
||||||
message = "A component with the same technical name already exists in the given dossier 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 {
|
} else {
|
||||||
message = "Database error occurred.";
|
message = "Database error occurred.";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -212,4 +212,6 @@ databaseChangeLog:
|
|||||||
- include:
|
- include:
|
||||||
file: db/changelog/tenant/129-add-component-table.yaml
|
file: db/changelog/tenant/129-add-component-table.yaml
|
||||||
- include:
|
- 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
|
||||||
@ -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
|
||||||
@ -1,25 +1,36 @@
|
|||||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
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.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
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.assertj.core.util.Lists;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.client.DictionaryClient;
|
||||||
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;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider;
|
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.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.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.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.DictionaryEntryType;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type;
|
|
||||||
|
import feign.FeignException;
|
||||||
|
|
||||||
public class TypeTest extends AbstractPersistenceServerServiceTest {
|
public class TypeTest extends AbstractPersistenceServerServiceTest {
|
||||||
|
|
||||||
@ -35,6 +46,9 @@ public class TypeTest extends AbstractPersistenceServerServiceTest {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private DictionaryClient dictionaryClient;
|
private DictionaryClient dictionaryClient;
|
||||||
|
|
||||||
|
// @Autowired
|
||||||
|
// private DossierService dossierService;
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testType() {
|
public void testType() {
|
||||||
@ -133,7 +147,9 @@ public class TypeTest extends AbstractPersistenceServerServiceTest {
|
|||||||
|
|
||||||
var types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true);
|
var types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true);
|
||||||
assertEquals(types.getTypes().size(), 2);
|
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());
|
dictionaryClient.deleteType(type2.getType(), dossierTemplate.getId());
|
||||||
types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true);
|
types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true);
|
||||||
@ -144,10 +160,44 @@ public class TypeTest extends AbstractPersistenceServerServiceTest {
|
|||||||
.findFirst()
|
.findFirst()
|
||||||
.get().getSoftDeletedTime());
|
.get().getSoftDeletedTime());
|
||||||
assertNotNull(types.getTypes()
|
assertNotNull(types.getTypes()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(t -> t.getType().equals(type2.getType()))
|
.filter(t -> t.getType().equals(type2.getType()))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.get().getSoftDeletedTime());
|
.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);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user