RED-7326 - UT

This commit is contained in:
Andrei Isvoran 2023-09-21 17:31:40 +03:00
parent 2ef28d8ecb
commit 2e7ca928ee

View File

@ -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);
});
}
}