test(ocr): add failure path and DONE status assertions to SenderModelServiceTest
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -221,6 +221,36 @@ class SenderModelServiceTest {
|
||||
("/app/models/sender_" + personId + ".mlmodel").equals(m.getModelPath())
|
||||
&& Double.valueOf(0.08).equals(m.getCer())
|
||||
&& personId.equals(m.getPersonId())));
|
||||
verify(trainingRunRepository, atLeastOnce()).save(argThat(r ->
|
||||
r.getStatus() == TrainingStatus.DONE
|
||||
&& Double.valueOf(0.08).equals(r.getCer())
|
||||
&& r.getCompletedAt() != null));
|
||||
}
|
||||
|
||||
// ─── triggerSenderTraining — failure path ────────────────────────────────
|
||||
|
||||
@Test
|
||||
void triggerSenderTraining_marksRunFailed_whenOcrClientThrows() throws Exception {
|
||||
OcrTrainingRun runningRun = OcrTrainingRun.builder()
|
||||
.id(UUID.randomUUID()).status(TrainingStatus.RUNNING)
|
||||
.personId(personId).blockCount(10).documentCount(0)
|
||||
.modelName("sender_" + personId).build();
|
||||
when(trainingRunRepository.findFirstByPersonIdAndStatus(personId, TrainingStatus.RUNNING))
|
||||
.thenReturn(Optional.of(runningRun));
|
||||
when(trainingDataExportService.exportForSender(personId)).thenReturn(out -> {});
|
||||
when(ocrClient.trainSenderModel(any(), any()))
|
||||
.thenThrow(new RuntimeException("OCR service timeout"));
|
||||
when(trainingRunRepository.save(any())).thenAnswer(inv -> inv.getArgument(0));
|
||||
when(trainingRunRepository.findFirstByStatusOrderByCreatedAtAsc(TrainingStatus.QUEUED))
|
||||
.thenReturn(Optional.empty());
|
||||
|
||||
service.triggerSenderTraining(personId, 120);
|
||||
|
||||
verify(trainingRunRepository, atLeastOnce()).save(argThat(r ->
|
||||
r.getStatus() == TrainingStatus.FAILED
|
||||
&& r.getErrorMessage() != null
|
||||
&& r.getCompletedAt() != null));
|
||||
verify(senderModelRepository, never()).save(any());
|
||||
}
|
||||
|
||||
// ─── triggerSenderTraining — queue promotion ──────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user