From 2e7ca928eee53c393cd852b431f928465ab2dc6a Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Thu, 21 Sep 2023 17:31:40 +0300 Subject: [PATCH] RED-7326 - UT --- .../integration/tests/LicenseReportTest.java | 111 ++++++++++++++---- 1 file changed, 87 insertions(+), 24 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java index 51177eb27..117a274f9 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java @@ -2,11 +2,10 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; +import java.time.Instant; import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; -import java.util.stream.Collectors; +import java.time.ZoneId; -import org.assertj.core.util.Lists; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -15,7 +14,10 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTem import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.model.license.LicenseReport; import com.iqser.red.service.persistence.service.v1.api.model.license.LicenseReportRequest; @@ -35,43 +37,104 @@ public class LicenseReportTest extends AbstractPersistenceServerServiceTest { @Autowired private DossierTesterAndProvider dossierTesterAndProvider; + @Autowired + private FileRepository fileRepository; + + @Autowired + private DossierRepository dossierRepository; + @Test public void testLicenseReport() { var template = dossierTemplateTesterAndProvider.provideTestTemplate(); - var dossier1 = dossierTesterAndProvider.provideTestDossier(template, "Dossier1"); + var lastYearDossier = dossierTesterAndProvider.provideTestDossier(template, "lastYearDossier"); + addFileOnDate(lastYearDossier, "2022-01-01T10:00:00Z"); + addFileOnDate(lastYearDossier, "2022-01-02T10:00:00Z"); - var file1 = fileTesterAndProvider.testAndProvideFile(dossier1, "test1.pdf"); - var file2 = fileTesterAndProvider.testAndProvideFile(dossier1, "test2.pdf"); + var januaryDossier = dossierTesterAndProvider.provideTestDossier(template, "januaryDossier"); + var januaryFile1 = addFileOnDate(januaryDossier, "2023-01-01T10:00:00Z"); + addFileOnDate(januaryDossier, "2023-01-02T10:00:00Z"); - var dossier2 = dossierTesterAndProvider.provideTestDossier(template, "Dossier2"); + var februaryDossier = dossierTesterAndProvider.provideTestDossier(template, "februaryDossier"); + addFileOnDate(februaryDossier, "2023-02-01T10:00:00Z"); + addFileOnDate(februaryDossier, "2023-02-02T10:00:00Z"); - var file3 = fileTesterAndProvider.testAndProvideFile(dossier2, "test3.pdf"); - var file4 = fileTesterAndProvider.testAndProvideFile(dossier2, "test4.pdf"); + var marchDossier = dossierTesterAndProvider.provideTestDossier(template, "marchDossier"); + addFileOnDate(marchDossier, "2023-03-01T10:00:00Z"); + addFileOnDate(marchDossier, "2023-03-02T10:00:00Z"); - var dossiers = Lists.newArrayList(dossier1, dossier2); - var files = Lists.newArrayList(file1, file2, file3, file4); + var aprilDossier = dossierTesterAndProvider.provideTestDossier(template, "aprilDossier"); + addFileOnDate(aprilDossier, "2023-04-01T10:00:00Z"); + addFileOnDate(aprilDossier, "2023-04-02T10:00:00Z"); - LicenseReportRequest request = new LicenseReportRequest(); - request.setDossierIds(dossiers.stream().map(Dossier::getId).collect(Collectors.toList())); + softDeleteFile(januaryFile1.getId(), "2023-02-01T10:00:00Z"); - var startDate = OffsetDateTime.now().minusHours(10).toInstant().truncatedTo(ChronoUnit.MILLIS); - request.setStartDate(startDate); + hardDeleteFile(januaryFile1.getId(), "2023-03-01T10:00:00Z"); - var endDate = OffsetDateTime.now().plusHours(10).toInstant().truncatedTo(ChronoUnit.MILLIS); - request.setEndDate(endDate); + archiveDossier(februaryDossier.getId(), "2023-05-01T10:00:00Z"); - String requestId = "123"; - request.setRequestId(requestId); + LicenseReport licenseReport = licenseReportClient.getLicenseReport(LicenseReportRequest.builder() + .startDate(Instant.parse("2023-01-01T10:00:00Z")) + .endDate(Instant.parse("2023-05-01T11:00:00Z")) + .build()); - LicenseReport licenseReport = licenseReportClient.getLicenseReport(request); + assertThat(licenseReport.getTotalFilesUploadedBytes()).isEqualTo(900L); + assertThat(licenseReport.getActiveFilesUploadedBytes()).isEqualTo(700L); + assertThat(licenseReport.getArchivedFilesUploadedBytes()).isEqualTo(200L); + assertThat(licenseReport.getTrashFilesUploadedBytes()).isEqualTo(0L); - assertThat(licenseReport.getNumberOfDossiers()).isEqualTo(dossiers.size()); - assertThat(licenseReport.getNumberOfAnalyzedFiles()).isEqualTo(files.size()); - assertThat(licenseReport.getStartDate()).isEqualTo(startDate); - assertThat(licenseReport.getEndDate()).isEqualTo(endDate); + assertThat(licenseReport.getMonthlyData().size()).isEqualTo(5); + assertThat(licenseReport.getMonthlyData().get(1).getTrashFilesUploadedBytes()).isEqualTo(100L); + assertThat(licenseReport.getMonthlyData().get(2).getTrashFilesUploadedBytes()).isEqualTo(0L); + } + + + private FileModel addFileOnDate(Dossier dossier, String date) { + + var file = fileTesterAndProvider.testAndProvideFile(dossier, date + ".pdf"); + setAdded(file.getId(), date); + return file; + } + + + private void setAdded(String fileId, String date) { + + fileRepository.findById(fileId).ifPresent((file) -> { + + file.setAdded(OffsetDateTime.ofInstant(Instant.parse(date), ZoneId.of("Z"))); + file.setFileSize(100L); + fileRepository.saveAndFlush(file); + + }); + } + + + private void archiveDossier(String dossierId, String date) { + + dossierRepository.findById(dossierId).ifPresent((dossier) -> { + dossier.setArchivedTime(OffsetDateTime.ofInstant(Instant.parse(date), ZoneId.of("Z"))); + dossierRepository.saveAndFlush(dossier); + }); + } + + + private void softDeleteFile(String fileId, String date) { + + fileRepository.findById(fileId).ifPresent((file) -> { + file.setDeleted(OffsetDateTime.ofInstant(Instant.parse(date), ZoneId.of("Z"))); + fileRepository.saveAndFlush(file); + }); + } + + + private void hardDeleteFile(String fileId, String date) { + + fileRepository.findById(fileId).ifPresent((file) -> { + file.setHardDeletedTime(OffsetDateTime.ofInstant(Instant.parse(date), ZoneId.of("Z"))); + fileRepository.saveAndFlush(file); + }); } }