RED-9063 - Error 409 when requesting deleted types

- add a check before creating dossier level types on the fly if the dossier template type is not deleted
- add unit test

Signed-off-by: Corina Olariu <corina.olariu.ext@knecon.com>
This commit is contained in:
Corina Olariu 2024-04-25 15:43:18 +03:00
parent 7acc0889b7
commit 033493aaee
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) {