RED-4598 -

- when updating the dossier check first if watermark id has changed before validating the
- update tests
This commit is contained in:
devplant 2022-07-13 13:50:10 +03:00
parent 6e77da5d64
commit 3c9cf65086
2 changed files with 44 additions and 17 deletions

View File

@ -46,7 +46,7 @@ public class DossierPersistenceService {
public DossierEntity insert(CreateOrUpdateDossierRequest createOrUpdateDossierRequest) {
DossierEntity dossier = new DossierEntity();
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier);
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier, "watermarkId", "previewWatermarkId");
dossier.setId(UUID.randomUUID().toString());
dossier.setDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
@ -66,7 +66,7 @@ public class DossierPersistenceService {
public void update(String dossierId, CreateOrUpdateDossierRequest createOrUpdateDossierRequest) {
dossierRepository.findById(dossierId).ifPresent(dossier -> {
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier);
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier, "watermarkId", "previewWatermarkId");
dossier.setDossierTemplate(dossierTemplateRepository.getOne(createOrUpdateDossierRequest.getDossierTemplateId()));
dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
@ -99,27 +99,33 @@ public class DossierPersistenceService {
private void handleWatermark(CreateOrUpdateDossierRequest createOrUpdateDossierRequest, DossierEntity dossier) {
if (createOrUpdateDossierRequest.getWatermarkId() != null) {
var watermarkEntity = watermarkService.getWatermark(createOrUpdateDossierRequest.getWatermarkId());
if (watermarkEntity.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) {
if (!watermarkEntity.isEnabled()) {
throw new BadRequestException("Watermark configuration is disabled");
if (!createOrUpdateDossierRequest.getWatermarkId().equals(dossier.getWatermarkId())) {
var watermarkEntity = watermarkService.getWatermark(createOrUpdateDossierRequest.getWatermarkId());
if (watermarkEntity.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) {
if (!watermarkEntity.isEnabled()) {
throw new BadRequestException("Watermark configuration is disabled");
}
dossier.setWatermarkId(createOrUpdateDossierRequest.getWatermarkId());
dossier.setWatermark(watermarkEntity);
} else {
throw new BadRequestException("Invalid watermark id - dossierTemplate id does not match");
}
dossier.setWatermark(watermarkEntity);
} else {
throw new BadRequestException("Invalid watermark id - dossierTemplate id does not match");
}
} else {
dossier.setWatermark(null);
}
if (createOrUpdateDossierRequest.getPreviewWatermarkId() != null) {
var previewWatermarkEntity = watermarkService.getWatermark(createOrUpdateDossierRequest.getPreviewWatermarkId());
if (previewWatermarkEntity.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) {
if (!previewWatermarkEntity.isEnabled()) {
throw new BadRequestException("Preview watermark configuration is disabled");
if (!createOrUpdateDossierRequest.getPreviewWatermarkId().equals(dossier.getPreviewWatermarkId())) {
var previewWatermarkEntity = watermarkService.getWatermark(createOrUpdateDossierRequest.getPreviewWatermarkId());
if (previewWatermarkEntity.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) {
if (!previewWatermarkEntity.isEnabled()) {
throw new BadRequestException("Preview watermark configuration is disabled");
}
dossier.setPreviewWatermarkId(createOrUpdateDossierRequest.getPreviewWatermarkId());
dossier.setPreviewWatermark(previewWatermarkEntity);
} else {
throw new BadRequestException("Invalid preview watermark id - dossierTemplate id does not match");
}
dossier.setPreviewWatermark(previewWatermarkEntity);
} else {
throw new BadRequestException("Invalid preview watermark id - dossierTemplate id does not match");
}
} else {
dossier.setPreviewWatermark(null);

View File

@ -77,7 +77,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
var changes = dossierClient.changesSince(JSONPrimitive.of(start));
assertThat(changes).isNotEmpty();
// update
// update with a disabled preview watermark
CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest();
cru.setDossierTemplateId(dossier.getId());
cru.setWatermarkId(watermarkConfig.getId());
@ -102,14 +102,35 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
}
cru.setPreviewWatermarkId(watermarkConfig.getId());
// update the watermark preview to an enabled one
var updated = dossierClient.updateDossier(cru, dossier.getId());
assertThat(updated.getDossierName()).isEqualTo("Dossier 1 Update");
assertThat(updated.getWatermarkId()).isNull();
assertThat(updated.getPreviewWatermarkId()).isEqualTo(watermarkConfig.getId());
assertThat(updated.getDossierStatusId()).isEqualTo(loadedDossierStatus.getId());
assertThat(watermarkClient.isWatermarkUsed(watermarkConfig.getId())).isEqualTo(JSONPrimitive.of(true));
// disable the watermark used
watermarkConfig.setEnabled(false);
watermarkClient.createOrUpdateWatermark(watermarkConfig);
// update dossier description, while the watermark used was disabled
cru.setDescription("new description");
updated = dossierClient.updateDossier(cru, dossier.getId());
assertThat(updated.getDescription()).isEqualTo(cru.getDescription());
assertThat(updated.getPreviewWatermarkId()).isEqualTo(watermarkConfig.getId());
assertThat(updated.getWatermarkId()).isNull();
cru.setPreviewWatermarkId(watermarkConfigDisabled.getId());
//try to update the dossier with a different disabled watermark
try {
dossierClient.updateDossier(cru, dossier.getId());
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(400);
}
// put dossier status to null
cru.setPreviewWatermarkId(watermarkConfig.getId());
cru.setDossierStatusId(null);
updated = dossierClient.updateDossier(cru, dossier.getId());
assertThat(updated.getDossierStatusId()).isNull();