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:
commit
4513d9d33f
5
.dev/liquibase.properties
Normal file
5
.dev/liquibase.properties
Normal 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
1
.dev/liquibase.sh
Normal file
@ -0,0 +1 @@
|
||||
liquibase generateChangeLog --changelog-file=changelog.yaml
|
||||
@ -46,5 +46,6 @@ public class CreateOrUpdateDossierRequest {
|
||||
|
||||
private String requestingUser;
|
||||
|
||||
private String dossierStatusId;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -36,5 +36,6 @@ public class Dossier {
|
||||
private OffsetDateTime dueDate;
|
||||
private OffsetDateTime archivedTime;
|
||||
private String dossierTemplateId;
|
||||
private String dossierStatusId;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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<>();
|
||||
}
|
||||
@ -87,4 +87,8 @@ public class DossierTemplateEntity {
|
||||
@Transient
|
||||
private DossierTemplateStatus dossierTemplateStatus;
|
||||
|
||||
@JsonIgnore
|
||||
@OneToMany(mappedBy = "dossierTemplate")
|
||||
private List<DossierStatusEntity> dossierStatusList = new ArrayList<>();
|
||||
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -1,10 +0,0 @@
|
||||
cassandra:
|
||||
keyspace-name: file_management_service
|
||||
migrations-location: 'classpath:cassandra/migrations/*.cql'
|
||||
|
||||
|
||||
spring:
|
||||
test:
|
||||
context:
|
||||
cache:
|
||||
maxSize: 60
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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'
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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 {
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user