RED-9063 - Error 409 when requesting deleted types #470

Merged
corina.olariu.ext1 merged 1 commits from RED-9063 into master 2024-04-26 12:37:02 +02:00
2 changed files with 56 additions and 5 deletions

View File

@ -294,11 +294,13 @@ public class DictionaryManagementService {
checkDossierMatchesDossierTemplate(dossierId, dossierTemplateId);
// type not found, it should be created based on the info from the dossier template type
var dossierTemplateType = dictionaryPersistenceService.getType(getDosssierTemplateTypeIdFromTypeId(typeId), includeDeleted);
Type dossierDictionaryType = MagicConverter.convert(dossierTemplateType, Type.class);
dossierDictionaryType.setVersion(0);
dossierDictionaryType.setDossierId(dossierId);
var returnedType = this.addType(dossierDictionaryType);
log.info("Type added: " + returnedType.toString());
if (!dossierTemplateType.isDeleted()) { //create dossier types if dossier template type is not deleted
Type dossierDictionaryType = MagicConverter.convert(dossierTemplateType, Type.class);
dossierDictionaryType.setVersion(0);
dossierDictionaryType.setDossierId(dossierId);
var returnedType = this.addType(dossierDictionaryType);
log.info("Type added: " + returnedType.toString());
}
}
}
}

View File

@ -851,6 +851,55 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
}
@Test
public void testCreateDossierOnTheFlyForDTTypeDeleted() {
var dossier = dossierTesterAndProvider.provideTestDossier();
var dossierTemplate = dossierTemplateClient.getDossierTemplate(dossier.getDossierTemplateId());
var dtType = dictionaryClient.addType(CreateTypeValue.builder()
.type("test1")
.label("test1")
.hexColor("#fcba03")
.rank(100)
.hint(false)
.caseInsensitive(false)
.recommendation(false)
.addToDictionaryAction(true)
.dossierTemplateId(dossierTemplate.getId())
.dossierDictionaryOnly(false)
.build());
assertThat(dtType.getRank()).isEqualTo(100);
assertThat(dtType.isDossierDictionaryOnly()).isFalse();
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes().size()).isEqualTo(1);
dictionaryClient.deleteType(dtType.getType(), dtType.getDossierTemplateId());
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false).getTypes().size()).isEqualTo(0);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes().size()).isEqualTo(1);
var dtType2 = dictionaryClient.addType(CreateTypeValue.builder()
.type("test2")
.label("test2")
.hexColor("#fcba03")
.rank(100)
.hint(false)
.caseInsensitive(false)
.recommendation(false)
.addToDictionaryAction(true)
.dossierTemplateId(dossierTemplate.getId())
.dossierDictionaryOnly(false)
.build());
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, false).getTypes().size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true).getTypes().size()).isEqualTo(2);
assertThat(dtType2.getRank()).isEqualTo(dtType.getRank());
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), false).getTypes().size()).isEqualTo(2);
assertThat(dictionaryClient.getAllTypes(dossierTemplate.getId(), dossier.getId(), true).getTypes().size()).isEqualTo(3);
}
@SuppressWarnings("SameParameterValue")
private List<String> createDummyEntries(int numberOfEntries) {