Pull request #209: Feature/RED-3240

Merge in RED/persistence-service from feature/RED-3240 to master

* commit 'f1181177d4a269300706a5cf42bf149ac6f315e9':
  fixed tests and cleanup on dossier status removal
  added integration-test for dossier status
  added integration-test for dossier status
  dossier status cleanup
  added code to prevent status association with wrong template
  liquibase convenience for docker
  Fixed changelog and tests
  RED-3240 - Dossier Status
This commit is contained in:
Timo Bejan 2022-01-31 10:01:14 +01:00
commit 4513d9d33f
23 changed files with 494 additions and 68 deletions

View File

@ -0,0 +1,5 @@
url=jdbc:postgresql://localhost:5432/redaction
username=redaction
password=redaction
driver=org.postgresql.Driver
outputChangeLogFile=changelog.yaml

1
.dev/liquibase.sh Normal file
View File

@ -0,0 +1 @@
liquibase generateChangeLog --changelog-file=changelog.yaml

View File

@ -46,5 +46,6 @@ public class CreateOrUpdateDossierRequest {
private String requestingUser;
private String dossierStatusId;
}

View File

@ -0,0 +1,21 @@
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class CreateOrUpdateDossierStatusRequest {
private String dossierStatusId;
private String name;
private String description;
private String dossierTemplateId;
}

View File

@ -36,5 +36,6 @@ public class Dossier {
private OffsetDateTime dueDate;
private OffsetDateTime archivedTime;
private String dossierTemplateId;
private String dossierStatusId;
}

View File

@ -0,0 +1,25 @@
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DossierStatusInfo {
@JsonProperty("dossierStatusId")
private String id;
private String name;
private String description;
private String dossierTemplateId;
}

View File

@ -0,0 +1,49 @@
package com.iqser.red.service.persistence.service.v1.api.resources;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
public interface DossierStatusResource {
String DOSSIER_STATUS_PATH = "/dossier-status";
String DOSSIER_TEMPLATE_ID = "dossierTemplateId";
String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}";
String DOSSIER_STATUS_ID = "dossierStatusId";
String DOSSIER_STATUS_ID_PATH_VARIABLE = "/{" + DOSSIER_STATUS_ID + "}";
String DOSSIER_STATUS_REPLACE_ID = "replaceDossierStatusId";
@ResponseBody
@ResponseStatus(HttpStatus.ACCEPTED)
@PostMapping(value = DOSSIER_STATUS_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
DossierStatusInfo createOrUpdateDossierStatus(@RequestBody CreateOrUpdateDossierStatusRequest dossierStatusRequest);
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
@GetMapping(value = DOSSIER_STATUS_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
List<DossierStatusInfo> getAllDossierStatus();
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
@GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
List<DossierStatusInfo> getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId);
@ResponseBody
@ResponseStatus(value = HttpStatus.OK)
@GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_STATUS_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
DossierStatusInfo getDossierStatus(@PathVariable(DOSSIER_STATUS_ID) String dossierStatusId);
@ResponseBody
@ResponseStatus(value = HttpStatus.NO_CONTENT)
@DeleteMapping(value = DOSSIER_STATUS_PATH + DOSSIER_STATUS_ID_PATH_VARIABLE)
void deleteDossierStatus(@PathVariable(DOSSIER_STATUS_ID) String dossierStatusId,
@RequestParam(value = DOSSIER_STATUS_REPLACE_ID, required = false) String replaceDossierStatusId);
}

View File

@ -98,4 +98,10 @@ public class DossierEntity {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "dossier")
private List<DossierAttributeEntity> dossierAttributes = new ArrayList<>();
@ManyToOne(fetch = FetchType.LAZY)
private DossierStatusEntity dossierStatus;
@Column(updatable = false, insertable = false, name = "dossier_status_id")
private String dossierStatusId;
}

View File

@ -0,0 +1,38 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.dossier;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "dossier_status")
public class DossierStatusEntity {
@Id
private String id;
@Column
private String name;
@Column
private String description;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "dossier_template_id")
private DossierTemplateEntity dossierTemplate;
@Column(updatable = false, insertable = false, name = "dossier_template_id")
private String dossierTemplateId;
@OneToMany(mappedBy = "dossierStatus")
private List<DossierEntity> dossiers = new ArrayList<>();
}

View File

@ -87,4 +87,8 @@ public class DossierTemplateEntity {
@Transient
private DossierTemplateStatus dossierTemplateStatus;
@JsonIgnore
@OneToMany(mappedBy = "dossierTemplate")
private List<DossierStatusEntity> dossierStatusList = new ArrayList<>();
}

View File

@ -34,6 +34,7 @@ public class DossierPersistenceService {
private final FileRepository fileRepository;
private final DossierTemplateRepository dossierTemplateRepository;
private final ReportTemplateRepository reportTemplateRepository;
private final DossierStatusPersistenceService dossierStatusPersistenceService;
public DossierEntity insert(CreateOrUpdateDossierRequest createOrUpdateDossierRequest) {
@ -48,6 +49,7 @@ public class DossierPersistenceService {
var reportTemplates = reportTemplateRepository.findAllById(createOrUpdateDossierRequest.getReportTemplateIds());
reportTemplates.forEach(r -> r.getDossiers().add(dossier));
dossier.setReportTemplates(reportTemplates);
this.handleDossierStatus(createOrUpdateDossierRequest, dossier);
return dossierRepository.save(dossier);
@ -71,10 +73,24 @@ public class DossierPersistenceService {
}
});
dossier.setReportTemplates(reportTemplates);
this.handleDossierStatus(createOrUpdateDossierRequest, dossier);
});
}
private void handleDossierStatus(CreateOrUpdateDossierRequest createOrUpdateDossierRequest, DossierEntity dossier) {
if (createOrUpdateDossierRequest.getDossierStatusId() != null) {
var dossierStatus = dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId());
if (dossierStatus.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) {
dossier.setDossierStatus(dossierStatus);
} else {
throw new BadRequestException("Invalid Dossier Status");
}
} else {
dossier.setDossierStatus(null);
}
}
public DossierEntity getAndValidateDossier(String dossierId) {
// check whether the dossierId exists and is not deleted

View File

@ -0,0 +1,82 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@Service
@RequiredArgsConstructor
public class DossierStatusPersistenceService {
public static final String DOSSIER_STATUS_NOT_FOUND_MESSAGE = "Dossier Status with Id %s not found.";
private final DossierStatusRepository dossierStatusRepository;
private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
@Transactional
public DossierStatusEntity createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest createOrUpdateDossierStatusRequest) {
if (createOrUpdateDossierStatusRequest.getDossierStatusId() != null) { //update
Optional<DossierStatusEntity> dossierStatus = dossierStatusRepository.findById(createOrUpdateDossierStatusRequest.getDossierStatusId());
if (dossierStatus.isPresent()) {
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus.get());
return dossierStatus.get();
} else {
throw new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, createOrUpdateDossierStatusRequest.getDossierStatusId()));
}
} else {
DossierStatusEntity dossierStatus = new DossierStatusEntity();
dossierStatus.setId(UUID.randomUUID().toString());
BeanUtils.copyProperties(createOrUpdateDossierStatusRequest, dossierStatus);
var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(createOrUpdateDossierStatusRequest.getDossierTemplateId());
var loadedDossierStatus = dossierStatusRepository.save(dossierStatus);
loadedDossierStatus.setDossierTemplate(dossierTemplate);
return loadedDossierStatus;
}
}
public List<DossierStatusEntity> getAllDossierStatus() {
return dossierStatusRepository.findAll();
}
public List<DossierStatusEntity> getAllDossierStatusForTemplate(String dossierTemplateId) {
return dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId);
}
public DossierStatusEntity getDossierStatus(String dossierStatusId) {
return dossierStatusRepository.findById(dossierStatusId).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, dossierStatusId)));
}
@Transactional
public void deleteDossierStatus(String dossierStatusId, String replaceDossierStatusId) {
dossierStatusRepository.findById(dossierStatusId).ifPresent(toDeleteDossierStatus -> {
DossierStatusEntity replaceDossierStatusEntity = null;
if (replaceDossierStatusId != null) {
replaceDossierStatusEntity = dossierStatusRepository.findById(replaceDossierStatusId).orElseThrow(() -> new NotFoundException("Dossier Status not found: " + replaceDossierStatusId));
}
if (replaceDossierStatusEntity != null && !replaceDossierStatusEntity.getDossierTemplateId().equals(toDeleteDossierStatus.getDossierTemplateId())) {
throw new BadRequestException("Cannot replace with dossier status from different template");
}
for (var dossier : toDeleteDossierStatus.getDossiers()) {
dossier.setDossierStatus(replaceDossierStatusEntity);
}
});
dossierStatusRepository.deleteById(dossierStatusId);
}
}

View File

@ -0,0 +1,13 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface DossierStatusRepository extends JpaRepository<DossierStatusEntity, String> {
@Query("select s from DossierStatusEntity s where s.dossierTemplateId = :dossierTemplateId")
List<DossierStatusEntity> getAllDossierStatusForDossierTemplate(String dossierTemplateId);
}

View File

@ -1,10 +0,0 @@
cassandra:
keyspace-name: file_management_service
migrations-location: 'classpath:cassandra/migrations/*.cql'
spring:
test:
context:
cache:
maxSize: 60

View File

@ -0,0 +1,51 @@
package com.iqser.red.service.peristence.v1.server.controller;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierStatusPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
import com.iqser.red.service.persistence.service.v1.api.resources.DossierStatusResource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
@Slf4j
@RestController
@RequiredArgsConstructor
public class DossierStatusController implements DossierStatusResource {
private final DossierStatusPersistenceService dossierStatusPersistenceService;
@Override
public DossierStatusInfo createOrUpdateDossierStatus(CreateOrUpdateDossierStatusRequest dossierStatusRequest) {
return convert(dossierStatusPersistenceService.createOrUpdateDossierStatus(dossierStatusRequest), DossierStatusInfo.class);
}
@Override
public List<DossierStatusInfo> getAllDossierStatus() {
return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class);
}
@Override
public List<DossierStatusInfo> getAllDossierStatusForTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) {
return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class);
}
@Override
public DossierStatusInfo getDossierStatus(@PathVariable(DOSSIER_STATUS_ID) String dossierStatusId) {
return convert(dossierStatusPersistenceService.getDossierStatus(dossierStatusId), DossierStatusInfo.class);
}
@Override
public void deleteDossierStatus(String dossierStatusId, @RequestParam(value = DOSSIER_STATUS_REPLACE_ID, required = false) String replaceDossierStatusId) {
dossierStatusPersistenceService.deleteDossierStatus(dossierStatusId,replaceDossierStatusId);
}
}

View File

@ -52,11 +52,6 @@ management:
metrics.export.prometheus.enabled: ${monitoring.enabled:false}
cassandra:
keyspace-name: file_management_service
migrations-location: 'classpath:cassandra/migrations/*.cql'
storage:
signer-type: 'AWSS3V4SignerType'
bucket-name: 'redaction'

View File

@ -0,0 +1,64 @@
databaseChangeLog:
- changeSet:
id: 1643616110560-1
author: corina (generated)
changes:
- createTable:
columns:
- column:
constraints:
nullable: false
primaryKey: true
primaryKeyName: dossier_status_pkey
name: id
type: VARCHAR(255)
- column:
name: description
type: VARCHAR(255)
- column:
name: dossier_template_id
type: VARCHAR(255)
- column:
name: name
type: VARCHAR(255)
tableName: dossier_status
- changeSet:
id: 1643616110560-4
author: corina (generated)
changes:
- addColumn:
columns:
- column:
name: dossier_status_id
type: VARCHAR(255)
tableName: dossier
- changeSet:
id: 1643616110560-2
author: corina (generated)
changes:
- addForeignKeyConstraint:
baseColumnNames: dossier_template_id
baseTableName: dossier_status
constraintName: fk6ao9oeuqkx147xofcjt17c1vx
deferrable: false
initiallyDeferred: false
onDelete: NO ACTION
onUpdate: NO ACTION
referencedColumnNames: id
referencedTableName: dossier_template
validate: true
- changeSet:
id: 1643616110560-3
author: corina (generated)
changes:
- addForeignKeyConstraint:
baseColumnNames: dossier_status_id
baseTableName: dossier
constraintName: fknssxyrv28hjvshbrvb4wm9hbn
deferrable: false
initiallyDeferred: false
onDelete: NO ACTION
onUpdate: NO ACTION
referencedColumnNames: id
referencedTableName: dossier_status
validate: true

View File

@ -11,3 +11,5 @@ databaseChangeLog:
file: db/changelog/5-imported-annotation.changelog.yaml
- include:
file: db/changelog/6-excluded-from-automatic-analysis-file-column.changelog.yaml
- include:
file: db/changelog/7-dossier-status-table.changelog.yaml

View File

@ -0,0 +1,8 @@
package com.iqser.red.service.peristence.v1.server.integration.client;
import com.iqser.red.service.persistence.service.v1.api.resources.DossierStatusResource;
import org.springframework.cloud.openfeign.FeignClient;
@FeignClient(name = "DossierStatusClient", url = "http://localhost:${server.port}")
public interface DossierStatusClient extends DossierStatusResource {
}

View File

@ -6,7 +6,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Do
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
import org.assertj.core.api.AssertionsForClassTypes;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -29,36 +29,18 @@ public class DossierTesterAndProvider {
return provideTestDossier(testTemplate, "Dossier1");
}
public Dossier provideTestDossier(String testTemplateId, String dossierName) {
CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest();
cru.setDownloadFileTypes(Sets.newHashSet(DownloadFileType.ORIGINAL));
cru.setDossierName(dossierName);
cru.setDescription(dossierName);
cru.setWatermarkEnabled(true);
cru.setMemberIds(Sets.newHashSet("1"));
cru.setOwnerId("1");
cru.setApproverIds(Sets.newHashSet("1"));
cru.setRequestingUser("1");
cru.setDueDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
cru.setDossierTemplateId(testTemplateId);
cru.setReportTemplateIds(List.of("reportTemplate1", "reportTemplate2"));
Dossier result = dossierClient.addDossier(cru);
assertThat(result.getDossierName()).isEqualTo(dossierName);
Dossier loadedDossier = dossierClient.getDossierById(result.getId(),false, false);
assertThat(loadedDossier).isEqualTo(result);
return loadedDossier;
public Dossier provideTestDossier(DossierTemplate testTemplate, String dossierName) {
return provideTestDossier(testTemplate, dossierName, null);
}
public Dossier provideTestDossier(DossierTemplate testTemplate, String dossierName) {
public Dossier provideTestDossier(DossierTemplate testTemplate, String dossierName, DossierStatusInfo dossierStatus) {
CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest();
cru.setDownloadFileTypes(Sets.newHashSet(DownloadFileType.ORIGINAL));
cru.setDossierName(dossierName);
cru.setDescription(dossierName);
if (dossierStatus != null) {
cru.setDossierStatusId(dossierStatus.getId());
}
cru.setWatermarkEnabled(true);
cru.setMemberIds(Sets.newHashSet("1"));
cru.setOwnerId("1");
@ -72,13 +54,14 @@ public class DossierTesterAndProvider {
assertThat(result.getDossierName()).isEqualTo(dossierName);
Dossier loadedDossier = dossierClient.getDossierById(result.getId(),false, false);
Dossier loadedDossier = dossierClient.getDossierById(result.getId(), false, false);
assertThat(loadedDossier).isEqualTo(result);
return loadedDossier;
}
public Dossier provideTestDossier() {
var testTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
@ -86,11 +69,11 @@ public class DossierTesterAndProvider {
return provideTestDossier(testTemplate, "Dossier1");
}
public Dossier provideTestDossier(String filename) {
public Dossier provideTestDossier(String dossierName) {
var testTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
return provideTestDossier(testTemplate, filename);
return provideTestDossier(testTemplate, dossierName);
}
}

View File

@ -0,0 +1,64 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient;
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.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import static org.assertj.core.api.Assertions.assertThat;
public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
@Autowired
private DossierStatusClient dossierStatusClient;
@Autowired
private DossierClient dossierClient;
@Autowired
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
@Autowired
private DossierTesterAndProvider dossierTesterAndProvider;
@Test
public void testDossierStatus() {
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var allDossierStatus = dossierStatusClient.getAllDossierStatus();
assertThat(allDossierStatus.size()).isZero();
CreateOrUpdateDossierStatusRequest crudsr = new CreateOrUpdateDossierStatusRequest();
crudsr.setName("name1");
crudsr.setDescription("description1");
crudsr.setDossierTemplateId(dossierTemplate.getId());
var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
assertThat(loadedDossierStatus).isNotNull();
allDossierStatus = dossierStatusClient.getAllDossierStatus();
assertThat(allDossierStatus.size()).isEqualTo(1);
var testDossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "1", allDossierStatus.iterator().next());
assertThat(testDossier.getDossierStatusId()).isEqualTo(allDossierStatus.iterator().next().getId());
// update
CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest();
BeanUtils.copyProperties(testDossier, cru);
cru.setDossierTemplateId(testDossier.getDossierTemplateId());
cru.setDossierStatusId(null);
var updated = dossierClient.updateDossier(cru, testDossier.getId());
assertThat(updated.getDossierStatusId()).isNull();
}
}

View File

@ -1,34 +1,36 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import com.google.common.collect.Sets;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
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.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplate;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
import feign.FeignException;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.Set;
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import com.google.common.collect.Sets;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplate;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
import feign.FeignException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
public class DossierTest extends AbstractPersistenceServerServiceTest {
@Autowired
private DossierTesterAndProvider dossierTesterAndProvider;
@Autowired
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
@Autowired
private DossierClient dossierClient;
@ -62,7 +64,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(updated.isWatermarkPreviewEnabled()).isEqualTo(true);
var loadedTemplate = dossierClient.getDossierById(updated.getId(),false, false);
var loadedTemplate = dossierClient.getDossierById(updated.getId(), false, false);
assertThat(loadedTemplate).isEqualTo(updated);
@ -99,9 +101,11 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
@Test
public void testArchiveDossier() {
var template = dossierTemplateTesterAndProvider.provideTestTemplate();
// Arrange
var dossier1 = dossierTesterAndProvider.provideTestDossier("dossier1");
var dossier2 = dossierTesterAndProvider.provideTestDossier(dossier1.getDossierTemplateId(), "dossier2");
var dossier1 = dossierTesterAndProvider.provideTestDossier(template, "dossier1");
var dossier2 = dossierTesterAndProvider.provideTestDossier(template, "dossier2");
// Act & Assert 1
assertThat(dossierClient.getAllDossiers(false, false)).hasSize(2);
@ -224,7 +228,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(updated.getReportTemplateIds().size()).isEqualTo(1);
assertThat(updated.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId());
var loadedTemplate = dossierClient.getDossierById(dossier.getId(),false, false);
var loadedTemplate = dossierClient.getDossierById(dossier.getId(), false, false);
assertThat(loadedTemplate).isEqualTo(updated);
assertThat(loadedTemplate.getReportTemplateIds().size()).isEqualTo(1);
@ -248,7 +252,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(updated.getReportTemplateIds().size()).isEqualTo(2);
assertThat(updated.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId(), availableTemplates.get(1).getTemplateId());
loadedTemplate = dossierClient.getDossierById(dossier.getId(),false, false);
loadedTemplate = dossierClient.getDossierById(dossier.getId(), false, false);
assertThat(loadedTemplate).isEqualTo(updated);
assertThat(loadedTemplate.getReportTemplateIds().size()).isEqualTo(2);
@ -268,7 +272,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(updated.getReportTemplateIds().size()).isEqualTo(2);
assertThat(updated.getReportTemplateIds()).contains(availableTemplates.get(1).getTemplateId(), availableTemplates.get(2).getTemplateId());
loadedTemplate = dossierClient.getDossierById(dossier.getId(),false, false);
loadedTemplate = dossierClient.getDossierById(dossier.getId(), false, false);
assertThat(loadedTemplate).isEqualTo(updated);
assertThat(loadedTemplate.getReportTemplateIds().size()).isEqualTo(2);
@ -288,7 +292,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(updated.getReportTemplateIds().size()).isEqualTo(1);
assertThat(updated.getReportTemplateIds()).contains(availableTemplates.get(0).getTemplateId());
loadedTemplate = dossierClient.getDossierById(dossier.getId(),false, false);
loadedTemplate = dossierClient.getDossierById(dossier.getId(), false, false);
assertThat(loadedTemplate).isEqualTo(updated);
assertThat(loadedTemplate.getReportTemplateIds().size()).isEqualTo(1);

View File

@ -108,6 +108,8 @@ public abstract class AbstractPersistenceServerServiceTest {
private DossierAttributeConfigRepository dossierAttributeConfigRepository;
@Autowired
private NotificationPreferencesRepository notificationPreferencesRepository;
@Autowired
private DossierStatusRepository dossierStatusRepository;
@Before
public void setupOptimize() {
@ -167,6 +169,7 @@ public abstract class AbstractPersistenceServerServiceTest {
smtpRepository.deleteAll();
fileRepository.deleteAll();
dossierRepository.deleteAll();
dossierStatusRepository.deleteAll();
dossierTemplateRepository.deleteAll();
notificationPreferencesRepository.deleteAll();
}