diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierRequest.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierRequest.java index 621292a7c..34c405e21 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierRequest.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierRequest.java @@ -46,5 +46,6 @@ public class CreateOrUpdateDossierRequest { private String requestingUser; + private String dossierStatusId; } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierStatusRequest.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierStatusRequest.java new file mode 100644 index 000000000..9b5518410 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/CreateOrUpdateDossierStatusRequest.java @@ -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; +} diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/Dossier.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/Dossier.java index 437900d0f..f0524deaf 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/Dossier.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/Dossier.java @@ -36,5 +36,6 @@ public class Dossier { private OffsetDateTime dueDate; private OffsetDateTime archivedTime; private String dossierTemplateId; + private String dossierStatusId; } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java new file mode 100644 index 000000000..14110b1c2 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatusInfo.java @@ -0,0 +1,26 @@ +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; +// private DossierTemplate dossierTemplate; +// private List dossierList = new ArrayList<>(); +} diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierStatusResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierStatusResource.java new file mode 100644 index 000000000..02aa9e1a6 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierStatusResource.java @@ -0,0 +1,46 @@ +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 + "}"; + + @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 getAllDossierStatus(); + + @ResponseBody + @ResponseStatus(value = HttpStatus.OK) + @GetMapping(value = DOSSIER_STATUS_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) + List 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); + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java index 2b7103299..6b5c50971 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierEntity.java @@ -98,4 +98,11 @@ public class DossierEntity { @OneToMany(cascade = CascadeType.ALL, mappedBy = "dossier") private List dossierAttributes = new ArrayList<>(); + @JsonIgnore + @ManyToOne(fetch = FetchType.LAZY) + private DossierStatusEntity dossierStatus; + + @Column(updatable = false, insertable = false, name = "dossier_status_id") + private String dossierStatusId; + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java new file mode 100644 index 000000000..9193f23b7 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierStatusEntity.java @@ -0,0 +1,41 @@ +package com.iqser.red.service.persistence.management.v1.processor.entity.dossier; + +import com.fasterxml.jackson.annotation.JsonIgnore; +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; + // un dossierTemplate, ( dossierTemplate are o lista de DossierStatus -> one to many ) + @JsonIgnore + @ManyToOne(fetch = FetchType.LAZY) + private DossierTemplateEntity dossierTemplate; + + @Column(updatable = false, insertable = false, name = "dossier_template_id") + private String dossierTemplateId; + +//// si o lista de dossiers care sunt in acest status ( 0..n) +// @JsonIgnore +// @OneToMany(mappedBy = "dossierStatus") +// private List dossiers = new ArrayList<>(); +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierTemplateEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierTemplateEntity.java index a993094a4..c9398f5e6 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierTemplateEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/DossierTemplateEntity.java @@ -87,4 +87,8 @@ public class DossierTemplateEntity { @Transient private DossierTemplateStatus dossierTemplateStatus; + @JsonIgnore + @OneToMany(mappedBy = "dossierTemplate") + private List dossierStatusList = new ArrayList<>(); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java index f0e8ccf3c..a1e8b52d5 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java @@ -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) { @@ -45,6 +46,10 @@ public class DossierPersistenceService { dossier.setDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossier.setDossierTemplate(dossierTemplateRepository.getOne(createOrUpdateDossierRequest.getDossierTemplateId())); + if(createOrUpdateDossierRequest.getDossierStatusId() != null) { + //TODO: make other verifications that the dossierStatus matches the dossierTemplateId? + dossier.setDossierStatus(dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId())); + } var reportTemplates = reportTemplateRepository.findAllById(createOrUpdateDossierRequest.getReportTemplateIds()); reportTemplates.forEach(r -> r.getDossiers().add(dossier)); dossier.setReportTemplates(reportTemplates); @@ -71,6 +76,9 @@ public class DossierPersistenceService { } }); dossier.setReportTemplates(reportTemplates); + if (createOrUpdateDossierRequest.getDossierStatusId() != null) { + dossier.setDossierStatus(dossierStatusPersistenceService.getDossierStatus(createOrUpdateDossierRequest.getDossierStatusId())); + } }); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java new file mode 100644 index 000000000..03141bd71 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java @@ -0,0 +1,63 @@ +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.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 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 getAllDossierStatus() { + return dossierStatusRepository.findAll(); + } + + public List 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))); + } + + public void deleteDossierStatus(String dossierStatusId) { + dossierStatusRepository.deleteById(dossierStatusId); + } +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierStatusRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierStatusRepository.java new file mode 100644 index 000000000..a992eced4 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierStatusRepository.java @@ -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 { + + @Query("select s from DossierStatusEntity s where s.dossierTemplateId = :dossierTemplateId") + List getAllDossierStatusForDossierTemplate(String dossierTemplateId); +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierStatusController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierStatusController.java new file mode 100644 index 000000000..3dc5fea2d --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierStatusController.java @@ -0,0 +1,48 @@ +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.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 getAllDossierStatus() { + + return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class); + } + + @Override + public List getAllDossierStatusForTemplate(String dossierTemplateId) { + return convert(dossierStatusPersistenceService.getAllDossierStatus(), DossierStatusInfo.class); + } + + @Override + public DossierStatusInfo getDossierStatus(String dossierStatusId) { + + return convert(dossierStatusPersistenceService.getDossierStatus(dossierStatusId), DossierStatusInfo.class); + } + + @Override + public void deleteDossierStatus(String dossierStatusId) { + dossierStatusPersistenceService.deleteDossierStatus(dossierStatusId); + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/5-dossier-status-table.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/5-dossier-status-table.changelog.yaml new file mode 100644 index 000000000..6b31a05be --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/5-dossier-status-table.changelog.yaml @@ -0,0 +1,64 @@ +databaseChangeLog: + - changeSet: + id: dossier-status-1 + author: generated + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + primaryKeyName: dossier_status_pkey + name: id + type: VARCHAR(255) + - column: + name: name + type: VARCHAR(255) + - column: + name: descriptiom + type: VARCHAR(255) + - column: + name: dossier_template_id + type: VARCHAR(255) + tableName: dossier_status + - changeSet: + id: dossier-status-2 + author: + changes: + - addColumn: + columns: + - column: + name: dossier_status_id + type: VARCHAR(255) + tableName: dossier + - changeSet: + id: dossier-status-3 + author: generated + changes: + - addForeignKeyConstraint: + baseColumnNames: dossier_template_id + baseTableName: dossier_status + constraintName: dossier_status_dossier_template_id + deferrable: false + initiallyDeferred: false + onDelete: NO ACTION + onUpdate: NO ACTION + referencedColumnNames: id + referencedTableName: dossier_template + validate: true + - changeSet: + id: dossier-status-4 + author: generated + changes: + - addForeignKeyConstraint: + baseColumnNames: dossier_status_id + baseTableName: dossier + constraintName: dossier_dossier_status + deferrable: false + initiallyDeferred: false + onDelete: NO ACTION + onUpdate: NO ACTION + referencedColumnNames: id + referencedTableName: dossier_status + validate: true \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index c8f2287f7..8004c2773 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -7,3 +7,5 @@ databaseChangeLog: file: db/changelog/3-added-annotation-modification-date.changelog.yaml - include: file: db/changelog/4-archived-dossier.changelog.yaml + - include: + file: db/changelog/5-dossier-status-table.changelog.yaml diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java new file mode 100644 index 000000000..f49fb0189 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierStatusClient.java @@ -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 { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java new file mode 100644 index 000000000..43e593a42 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatusTest.java @@ -0,0 +1,40 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +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.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; +import org.junit.Test; +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 DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Test + public void testDossierStatus() { + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + var allDossierStatus = dossierStatusClient.getAllDossierStatus(); + + assertThat(allDossierStatus.size()).isZero(); + + CreateOrUpdateDossierStatusRequest cru = new CreateOrUpdateDossierStatusRequest(); + cru.setName("name1"); + cru.setDescription("description1"); + cru.setDossierTemplateId(dossierTemplate.getId()); + + var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(cru); + assertThat(loadedDossierStatus).isNotNull(); + + allDossierStatus = dossierStatusClient.getAllDossierStatus(); + assertThat(allDossierStatus.size()).isEqualTo(1); + } + +}