|
|
@@ -3,7 +3,6 @@ package cn.yunzhixue.ability.center.examsprint.application.report;
|
|
|
import cn.yunzhixue.ability.center.examsprint.contracts.report.AchievementExamSprintReportPayload;
|
|
|
import cn.yunzhixue.ability.center.examsprint.contracts.report.CreateExamSprintReportWithUrlResponse;
|
|
|
import cn.yunzhixue.ability.center.examsprint.contracts.report.ExamSprintReportDetailResponse;
|
|
|
-import cn.yunzhixue.ability.center.examsprint.contracts.report.ExamSprintReportGenerationStatus;
|
|
|
import cn.yunzhixue.ability.center.examsprint.contracts.report.ExamSprintReportType;
|
|
|
import cn.yunzhixue.ability.center.examsprint.contracts.report.OutlookExamSprintReportPayload;
|
|
|
import cn.yunzhixue.ability.center.examsprint.domain.report.ExamSprintReport;
|
|
|
@@ -11,6 +10,7 @@ import cn.yunzhixue.ability.center.examsprint.domain.report.ExamSprintReportPdfG
|
|
|
import cn.yunzhixue.ability.center.examsprint.domain.report.ExamSprintReportRenderer;
|
|
|
import cn.yunzhixue.ability.center.examsprint.domain.report.ExamSprintReportRepository;
|
|
|
import cn.yunzhixue.ability.center.examsprint.domain.report.ExamSprintReportStorage;
|
|
|
+import cn.yunzhixue.ability.center.examsprint.domain.report.ReportGenerationStatus;
|
|
|
import cn.yunzhixue.ability.center.kernel.BusinessException;
|
|
|
import cn.yunzhixue.ability.center.kernel.ErrorCode;
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
@@ -77,7 +77,7 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
assertThat(response.reportId()).isNotBlank();
|
|
|
ExamSprintReport saved = repository.findById(response.reportId()).orElseThrow();
|
|
|
assertThat(saved.reportType()).isEqualTo(ExamSprintReportType.OUTLOOK);
|
|
|
- assertThat(saved.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.PENDING);
|
|
|
+ assertThat(saved.generationStatus()).isEqualTo(ReportGenerationStatus.PENDING);
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -91,7 +91,7 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
assertThat(response.reportId()).isNotBlank();
|
|
|
ExamSprintReport saved = repository.findById(response.reportId()).orElseThrow();
|
|
|
assertThat(saved.reportType()).isEqualTo(ExamSprintReportType.ACHIEVEMENT);
|
|
|
- assertThat(saved.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.PENDING);
|
|
|
+ assertThat(saved.generationStatus()).isEqualTo(ReportGenerationStatus.PENDING);
|
|
|
assertThat(saved.payload().path("reportTitle").asText()).isEqualTo("高考英语临考突击学习成果报告");
|
|
|
}
|
|
|
|
|
|
@@ -110,10 +110,11 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
|
|
|
assertThat(response.reportId()).isNotBlank();
|
|
|
assertThat(response.reportType()).isEqualTo(ExamSprintReportType.OUTLOOK);
|
|
|
- assertThat(response.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
+ assertThat(response.generationStatus())
|
|
|
+ .isEqualTo(cn.yunzhixue.ability.center.examsprint.contracts.report.ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
assertThat(response.downloadUrl()).isEqualTo("/api/exam-sprint/reports/" + response.reportId() + "/download");
|
|
|
ExamSprintReport saved = repository.findById(response.reportId()).orElseThrow();
|
|
|
- assertThat(saved.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
+ assertThat(saved.generationStatus()).isEqualTo(ReportGenerationStatus.SUCCESS);
|
|
|
assertThat(saved.storageObjectKey()).isEqualTo("exam-sprint-outlook-report-" + response.reportId() + ".pdf");
|
|
|
assertThat(storage.generatedKeys).containsExactly(saved.storageObjectKey());
|
|
|
}
|
|
|
@@ -133,10 +134,11 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
|
|
|
assertThat(response.reportId()).isNotBlank();
|
|
|
assertThat(response.reportType()).isEqualTo(ExamSprintReportType.ACHIEVEMENT);
|
|
|
- assertThat(response.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
+ assertThat(response.generationStatus())
|
|
|
+ .isEqualTo(cn.yunzhixue.ability.center.examsprint.contracts.report.ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
assertThat(response.downloadUrl()).isEqualTo("/api/exam-sprint/reports/" + response.reportId() + "/download");
|
|
|
ExamSprintReport saved = repository.findById(response.reportId()).orElseThrow();
|
|
|
- assertThat(saved.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
+ assertThat(saved.generationStatus()).isEqualTo(ReportGenerationStatus.SUCCESS);
|
|
|
assertThat(saved.storageObjectKey()).isEqualTo("exam-sprint-achievement-report-" + response.reportId() + ".pdf");
|
|
|
assertThat(storage.generatedKeys).containsExactly(saved.storageObjectKey());
|
|
|
}
|
|
|
@@ -187,7 +189,7 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
assertThat(repository.storage.values())
|
|
|
.singleElement()
|
|
|
.extracting(ExamSprintReport::generationStatus)
|
|
|
- .isEqualTo(ExamSprintReportGenerationStatus.FAILED);
|
|
|
+ .isEqualTo(ReportGenerationStatus.FAILED);
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -238,13 +240,14 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
var response = service.createOutlookReport(validOutlookPayload());
|
|
|
|
|
|
assertThat(response.reportId()).isNotBlank();
|
|
|
- assertThat(response.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.FAILED);
|
|
|
+ assertThat(response.generationStatus())
|
|
|
+ .isEqualTo(cn.yunzhixue.ability.center.examsprint.contracts.report.ExamSprintReportGenerationStatus.FAILED);
|
|
|
ExamSprintReport saved = repository.findById(response.reportId()).orElseThrow();
|
|
|
- assertThat(saved.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.FAILED);
|
|
|
+ assertThat(saved.generationStatus()).isEqualTo(ReportGenerationStatus.FAILED);
|
|
|
assertThat(saved.failureReason()).isEqualTo("report_generation_dispatch_failed");
|
|
|
assertThat(saved.failureReason()).doesNotContain("task-executor-7");
|
|
|
assertThat(saved.failureReason()).doesNotContain("dispatcher unavailable");
|
|
|
- assertThat(repository.countByStatus(ExamSprintReportGenerationStatus.PENDING)).isZero();
|
|
|
+ assertThat(repository.countByStatus(ReportGenerationStatus.PENDING)).isZero();
|
|
|
assertThat(output.getAll())
|
|
|
.contains("exam_sprint_report_submitted")
|
|
|
.contains("reportType=OUTLOOK")
|
|
|
@@ -289,7 +292,8 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
|
|
|
var response = service.getReport("report-success");
|
|
|
|
|
|
- assertThat(response.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
+ assertThat(response.generationStatus())
|
|
|
+ .isEqualTo(cn.yunzhixue.ability.center.examsprint.contracts.report.ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
assertThat(response.downloadUrl()).isEqualTo("/api/exam-sprint/reports/report-success/download");
|
|
|
assertThat(storage.generatedKeys)
|
|
|
.containsExactly("exam-sprint-achievement-report-report-success.pdf");
|
|
|
@@ -321,7 +325,8 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
|
|
|
var response = service.getReport("report-query-url-failure");
|
|
|
|
|
|
- assertThat(response.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
+ assertThat(response.generationStatus())
|
|
|
+ .isEqualTo(cn.yunzhixue.ability.center.examsprint.contracts.report.ExamSprintReportGenerationStatus.SUCCESS);
|
|
|
assertThat(response.downloadUrl()).isNull();
|
|
|
assertThat(output.getAll())
|
|
|
.contains("exam_sprint_report_download_url_generation_failed")
|
|
|
@@ -428,7 +433,7 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
|
|
|
ExamSprintReport saved = repository.findById("report-expired-at-boundary").orElseThrow();
|
|
|
assertThat(saved.isExpiredAt(FIXED_CLOCK.instant())).isTrue();
|
|
|
- assertThat(saved.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.EXPIRED);
|
|
|
+ assertThat(saved.generationStatus()).isEqualTo(ReportGenerationStatus.EXPIRED);
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
@@ -462,7 +467,7 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
ExamSprintReport successfulDeleteReport = repository.findById("report-delete-succeeds").orElseThrow();
|
|
|
assertThat(failedDeleteReport.storageObjectKey())
|
|
|
.isEqualTo("first.pdf");
|
|
|
- assertThat(successfulDeleteReport.generationStatus()).isEqualTo(ExamSprintReportGenerationStatus.EXPIRED);
|
|
|
+ assertThat(successfulDeleteReport.generationStatus()).isEqualTo(ReportGenerationStatus.EXPIRED);
|
|
|
assertThat(successfulDeleteReport.storageObjectKey()).isNull();
|
|
|
assertThat(storage.deletedKeys)
|
|
|
.contains("first.pdf")
|
|
|
@@ -708,7 +713,7 @@ class ExamSprintReportApplicationServiceTest {
|
|
|
return storage.values().stream().filter(report -> report.isExpiredAt(instant)).toList();
|
|
|
}
|
|
|
|
|
|
- long countByStatus(ExamSprintReportGenerationStatus status) {
|
|
|
+ long countByStatus(ReportGenerationStatus status) {
|
|
|
return storage.values().stream().filter(report -> report.generationStatus() == status).count();
|
|
|
}
|
|
|
}
|