fix(dashboard): null-safe name join in toActorDTO

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-19 21:21:20 +02:00
parent d19116fd05
commit 09a8081e35
2 changed files with 256 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
package org.raddatz.familienarchiv.dashboard;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.raddatz.familienarchiv.model.AppUser;
import org.raddatz.familienarchiv.model.Document;
import org.raddatz.familienarchiv.model.TranscriptionBlock;
import org.raddatz.familienarchiv.service.DocumentService;
import org.raddatz.familienarchiv.service.TranscriptionService;
import org.raddatz.familienarchiv.service.UserService;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class DashboardServiceTest {
@Mock AuditLogQueryService auditLogQueryService;
@Mock DocumentService documentService;
@Mock TranscriptionService transcriptionService;
@Mock UserService userService;
@InjectMocks DashboardService dashboardService;
// ─── toActorDTO (via getResume collaborators) ─────────────────────────────
@Test
void getResume_collaboratorName_isNullSafe_whenFirstNameIsNull() {
UUID userId = UUID.randomUUID();
UUID docId = UUID.randomUUID();
UUID collaboratorId = UUID.randomUUID();
Document doc = Document.builder()
.id(docId).title("Brief").originalFilename("brief.pdf")
.receivers(new HashSet<>())
.build();
TranscriptionBlock block = TranscriptionBlock.builder()
.id(UUID.randomUUID()).annotationId(UUID.randomUUID())
.documentId(docId).sortOrder(1).updatedBy(collaboratorId)
.build();
AppUser collaborator = AppUser.builder()
.id(collaboratorId).email("s@test.com").password("pw")
.firstName(null).lastName("Schmidt").color("#abc")
.build();
when(auditLogQueryService.findMostRecentDocumentForUser(userId)).thenReturn(Optional.of(docId));
when(documentService.getDocumentById(docId)).thenReturn(doc);
when(transcriptionService.listBlocks(docId)).thenReturn(List.of(block));
when(userService.getById(collaboratorId)).thenReturn(collaborator);
DashboardResumeDTO result = dashboardService.getResume(userId);
assertThat(result).isNotNull();
assertThat(result.collaborators()).hasSize(1);
assertThat(result.collaborators().get(0).name()).isEqualTo("Schmidt");
}
}