test(ocr): verify triggerSenderTraining upserts SenderModel with correct path and cer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-17 20:13:21 +02:00
committed by marcel
parent 3ecda655c5
commit 4f86011ffb

View File

@@ -196,6 +196,33 @@ class SenderModelServiceTest {
r.getStatus() == TrainingStatus.RUNNING && personId.equals(r.getPersonId())));
}
// ─── triggerSenderTraining — happy path ──────────────────────────────────
@Test
void triggerSenderTraining_savesModelRecord_onSuccess() 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()))
.thenReturn(new OcrClient.TrainingResult(0.08, 0.92, 0.08, 5));
when(senderModelRepository.findByPersonId(personId)).thenReturn(Optional.empty());
when(senderModelRepository.save(any())).thenAnswer(inv -> inv.getArgument(0));
when(trainingRunRepository.save(any())).thenAnswer(inv -> inv.getArgument(0));
when(trainingRunRepository.findFirstByStatusOrderByCreatedAtAsc(TrainingStatus.QUEUED))
.thenReturn(Optional.empty());
service.triggerSenderTraining(personId, 120);
verify(senderModelRepository).save(argThat(m ->
("/app/models/sender_" + personId + ".mlmodel").equals(m.getModelPath())
&& Double.valueOf(0.08).equals(m.getCer())
&& personId.equals(m.getPersonId())));
}
// ─── triggerSenderTraining — queue promotion ──────────────────────────────
@Test