Pull request #216: RED-3240 - Dossier Status

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

* commit 'f493166bcc2143e184e2995262c4606789558080':
  RED-3240 - Dossier Status
This commit is contained in:
Corina Olariu 2022-02-04 10:07:42 +01:00 committed by Timo Bejan
commit 4622d5f858
3 changed files with 64 additions and 13 deletions

View File

@ -50,10 +50,8 @@ public class DossierStatusPersistenceService {
}
}
public List<DossierStatusInfo> getAllDossierStatusForTemplate(String dossierTemplateId) {
var x = dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId);
return x;
return dossierStatusRepository.getAllDossierStatusForDossierTemplate(dossierTemplateId);
}
public DossierStatusInfo getDossierStatusInfo(String dossierStatusId) {
@ -75,7 +73,7 @@ public class DossierStatusPersistenceService {
DossierStatusEntity replaceDossierStatusEntity = null;
if (replaceDossierStatusId != null) {
replaceDossierStatusEntity = dossierStatusRepository.findById(replaceDossierStatusId).orElseThrow(() -> new NotFoundException("Dossier Status not found: " + replaceDossierStatusId));
replaceDossierStatusEntity = dossierStatusRepository.findById(replaceDossierStatusId).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_STATUS_NOT_FOUND_MESSAGE, replaceDossierStatusId)));
}
if (replaceDossierStatusEntity != null && !replaceDossierStatusEntity.getDossierTemplateId().equals(toDeleteDossierStatus.getDossierTemplateId())) {
@ -89,7 +87,7 @@ public class DossierStatusPersistenceService {
dossierStatusRepository.deleteById(dossierStatusId);
}
public void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) {
private void validateDossierTemplateNameIsUnique(String dossierStatusName, String dossierTemplateId, String dossierStatusId) {
getAllDossierStatusForTemplate(dossierTemplateId).forEach(existing -> {
if (existing.getName().equals(dossierStatusName) && !existing.getId().equals(dossierStatusId)) {
throw new ConflictException("DossierStatus name must be unique within the same dossier template");

View File

@ -15,6 +15,6 @@ public interface DossierStatusRepository extends JpaRepository<DossierStatusEnti
List<DossierStatusInfo> getAllDossierStatusForDossierTemplate(String dossierTemplateId);
@Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo(s.id, s.name," +
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.id = :dossierStatusId")
"s.description, s.color, s.dossierTemplateId, count(d)) from DossierStatusEntity s left outer join s.dossiers d where s.id = :dossierStatusId group by s")
Optional<DossierStatusInfo> findProjectionById(String dossierStatusId);
}

View File

@ -5,8 +5,11 @@ import com.iqser.red.service.peristence.v1.server.integration.client.DossierStat
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.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
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 feign.FeignException;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -35,6 +38,7 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
assertThat(allDossierStatus.size()).isZero();
// Create
CreateOrUpdateDossierStatusRequest crudsr = new CreateOrUpdateDossierStatusRequest();
crudsr.setName("name1");
crudsr.setDescription("description1");
@ -42,34 +46,83 @@ public class DossierStatusTest extends AbstractPersistenceServerServiceTest {
var loadedDossierStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
assertThat(loadedDossierStatus).isNotNull();
assertThat(loadedDossierStatus.getDossierCount()).isNull();
// update
crudsr.setDossierStatusId(loadedDossierStatus.getId());
crudsr.setDescription("New Description");
var updatedStatus = dossierStatusClient.createOrUpdateDossierStatus(crudsr);
assertThat(updatedStatus).isNotNull();
assertThat(updatedStatus.getDescription()).isEqualTo(crudsr.getDescription());
assertThat(updatedStatus.getDossierCount()).isNull();
// get all for template id
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
assertThat(allDossierStatus.size()).isEqualTo(1);
assertThat(allDossierStatus.get(0).getDossierCount()).isZero();
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);
updatedStatus = dossierStatusClient.getDossierStatus(loadedDossierStatus.getId());
assertThat(updatedStatus.getDossierCount()).isEqualTo(1);
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
assertThat(allDossierStatus.size()).isEqualTo(1);
assertThat(allDossierStatus.iterator().next().getDossierCount()).isEqualTo(1);
// update dossier with dossier status null
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();
updatedStatus = dossierStatusClient.getDossierStatus(loadedDossierStatus.getId());
assertThat(updatedStatus.getDossierCount()).isZero();
// Create
CreateOrUpdateDossierStatusRequest crudsr2 = new CreateOrUpdateDossierStatusRequest();
crudsr2.setName("name2");
crudsr2.setDescription("description2");
crudsr2.setDossierTemplateId(dossierTemplate.getId());
// create second dossier status
var loadedDossierStatus2 = dossierStatusClient.createOrUpdateDossierStatus(crudsr2);
assertThat(loadedDossierStatus2).isNotNull();
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
assertThat(allDossierStatus.size()).isEqualTo(2);
//delete first status with itself
try {
dossierStatusClient.deleteDossierStatus(loadedDossierStatus.getId(),loadedDossierStatus.getId());
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(400);
}
//delete with unknown status
try {
dossierStatusClient.deleteDossierStatus(loadedDossierStatus.getId(), "unknown");
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(404);
}
// update dossier with dossier status
CreateOrUpdateDossierRequest cru2 = new CreateOrUpdateDossierRequest();
BeanUtils.copyProperties(testDossier, cru2);
cru2.setDossierTemplateId(testDossier.getDossierTemplateId());
cru2.setDossierStatusId(loadedDossierStatus.getId());
updated = dossierClient.updateDossier(cru2, testDossier.getId());
assertThat(updated.getDossierStatusId()).isNotNull();
//delete and replace
dossierStatusClient.deleteDossierStatus(loadedDossierStatus.getId(), loadedDossierStatus2.getId());
allDossierStatus = dossierStatusClient.getAllDossierStatusForTemplate(dossierTemplate.getId());
assertThat(allDossierStatus.size()).isEqualTo(1);
assertThat(allDossierStatus.get(0).getDossierCount()).isEqualTo(1);
// check dossier has the new dossier status
updated = dossierClient.getDossierById(updated.getId(), false, false);
assertThat(updated.getDossierStatusId()).isEqualTo(loadedDossierStatus2.getId());
}
}