From d656f20a5dda199918fa0896a7699f0718a23e2e Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 6 Jun 2026 14:40:14 +0000 Subject: [PATCH] fix: resolve test compilation errors and update tests for PDF support - Add missing downloadFileBytes() override to FakeGoogleDriveApiClient - Fix BaseResumeContentResponse constructor call missing readOnly argument - Update PDF rejection tests to use unsupported MIME type (docx) since PDFs are now accepted as read-only resumes - Fix McpAuthIT setUp by deleting google_drive_connections before users to avoid FK constraint violation https://claude.ai/code/session_01WsXBePpMyKd57McmFAyyTQ --- .../integration/GoogleDriveControllerIT.java | 17 +++++++++++------ .../jobtracker/integration/mcp/McpAuthIT.java | 3 +++ .../jobtracker/unit/GoogleDriveServiceTest.java | 8 ++++---- .../unit/mcp/McpResumeContentResourcesTest.java | 2 +- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/test/java/com/jobtracker/integration/GoogleDriveControllerIT.java b/src/test/java/com/jobtracker/integration/GoogleDriveControllerIT.java index 4589f795..518c62e2 100644 --- a/src/test/java/com/jobtracker/integration/GoogleDriveControllerIT.java +++ b/src/test/java/com/jobtracker/integration/GoogleDriveControllerIT.java @@ -236,20 +236,20 @@ void addBaseResume_shouldPersistResumeAndReturn201() throws Exception { } @Test - void addBaseResume_shouldRejectNonGoogleDocsFile() throws Exception { + void addBaseResume_shouldRejectUnsupportedFileType() throws Exception { googleDriveConnectionRepository.save(buildConnection()); - googleDriveApiClient.fileMetadataById.put("pdf-file", + googleDriveApiClient.fileMetadataById.put("docx-file", new GoogleDriveApiClient.DriveFileMetadata( - "pdf-file", - "Resume.pdf", - "application/pdf", + "docx-file", + "Resume.docx", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", null )); mockMvc.perform(post("/api/v1/google-drive/base-resumes") .header("Authorization", "Bearer " + betaAccessToken) .contentType(MediaType.APPLICATION_JSON) - .content("{\"documentIdOrUrl\":\"pdf-file\"}")) + .content("{\"documentIdOrUrl\":\"docx-file\"}")) .andExpect(status().isBadRequest()); } @@ -671,5 +671,10 @@ public void replaceGoogleDocPlaceholders(String accessToken, String documentId, public DriveFileMetadata exportGoogleDocAsPdf(String accessToken, String documentId, String targetFolderId, String pdfName) { return new DriveFileMetadata("pdf-file", pdfName, "application/pdf", null); } + + @Override + public byte[] downloadFileBytes(String accessToken, String fileId) { + return new byte[0]; + } } } diff --git a/src/test/java/com/jobtracker/integration/mcp/McpAuthIT.java b/src/test/java/com/jobtracker/integration/mcp/McpAuthIT.java index 989f16c1..f091b9ee 100644 --- a/src/test/java/com/jobtracker/integration/mcp/McpAuthIT.java +++ b/src/test/java/com/jobtracker/integration/mcp/McpAuthIT.java @@ -4,6 +4,7 @@ import com.jobtracker.dto.auth.AuthResponse; import com.jobtracker.dto.auth.RegisterRequest; import com.jobtracker.integration.AbstractIntegrationTest; +import com.jobtracker.repository.GoogleDriveConnectionRepository; import com.jobtracker.repository.RefreshTokenRepository; import com.jobtracker.repository.UserRepository; import org.junit.jupiter.api.BeforeEach; @@ -48,11 +49,13 @@ class McpAuthIT extends AbstractIntegrationTest { @Autowired private ObjectMapper objectMapper; @Autowired private UserRepository userRepository; @Autowired private RefreshTokenRepository refreshTokenRepository; + @Autowired private GoogleDriveConnectionRepository googleDriveConnectionRepository; private String accessToken; @BeforeEach void setUp() throws Exception { + googleDriveConnectionRepository.deleteAll(); refreshTokenRepository.deleteAll(); userRepository.deleteAll(); diff --git a/src/test/java/com/jobtracker/unit/GoogleDriveServiceTest.java b/src/test/java/com/jobtracker/unit/GoogleDriveServiceTest.java index 0a2ae686..35b50463 100644 --- a/src/test/java/com/jobtracker/unit/GoogleDriveServiceTest.java +++ b/src/test/java/com/jobtracker/unit/GoogleDriveServiceTest.java @@ -143,20 +143,20 @@ void updateRootFolder_shouldPersistFolderMetadata() { } @Test - void addBaseResume_shouldRejectNonGoogleDocsFiles() { + void addBaseResume_shouldRejectUnsupportedFileTypes() { when(securityUtils.getCurrentUserId()).thenReturn(USER_ID); when(connectionRepository.findByUserId(USER_ID)).thenReturn(Optional.of(connection)); when(googleDriveApiClient.getFileMetadata("access-token", "not-a-doc")) .thenReturn(new GoogleDriveApiClient.DriveFileMetadata( "not-a-doc", - "Resume.pdf", - "application/pdf", + "Resume.docx", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", null )); assertThatThrownBy(() -> googleDriveService.addBaseResume(new GoogleDriveBaseResumeRequest("not-a-doc", null, false))) .isInstanceOf(BadRequestException.class) - .hasMessageContaining("Only Google Docs base resumes are supported"); + .hasMessageContaining("Only Google Docs documents and PDF files are supported"); } @Test diff --git a/src/test/java/com/jobtracker/unit/mcp/McpResumeContentResourcesTest.java b/src/test/java/com/jobtracker/unit/mcp/McpResumeContentResourcesTest.java index 405bc659..08b790a9 100644 --- a/src/test/java/com/jobtracker/unit/mcp/McpResumeContentResourcesTest.java +++ b/src/test/java/com/jobtracker/unit/mcp/McpResumeContentResourcesTest.java @@ -31,7 +31,7 @@ class McpResumeContentResourcesTest { @Test void baseResumeContent_readsRequestedResourceAndReturnsText() { UUID resumeId = UUID.randomUUID(); - BaseResumeContentResponse response = new BaseResumeContentResponse(resumeId, "Base CV", "EN", true, "base-text"); + BaseResumeContentResponse response = new BaseResumeContentResponse(resumeId, "Base CV", "EN", true, false, "base-text"); when(resumeGenerationService.getBaseResumeContent(resumeId)).thenReturn(response); String result = baseResumeContentResource.baseResumeContent(resumeId.toString());