From 5d46504c1df785d2cc3fa786ce75f87f83a26baa Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 29 May 2026 09:26:18 +0700 Subject: [PATCH] 690529:0926 ADR-030-230 context aware #03 --- .../ai/processors/ai-batch.processor.spec.ts | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/backend/src/modules/ai/processors/ai-batch.processor.spec.ts b/backend/src/modules/ai/processors/ai-batch.processor.spec.ts index 6b2a0922..5ec8150a 100644 --- a/backend/src/modules/ai/processors/ai-batch.processor.spec.ts +++ b/backend/src/modules/ai/processors/ai-batch.processor.spec.ts @@ -6,6 +6,7 @@ // - 2026-05-22: เพิ่ม Mock dependencies (ProjectRepository, AiAuditLogRepository, TagsService, MigrationService) เพื่อแก้ปัญหา Nest resolve dependency ใน unit test และปรับโครงสร้างฟังก์ชันไม่มีบรรทัดว่าง (Zero Blank Lines) ตามกฎเหล็ก // - 2026-05-27: เพิ่ม Mock สำหรับ getActive และ resolveContext ของ AiPromptsService เพื่อรองรับ Context-Aware Prompt (T017) // - 2026-05-28: เพิ่ม test สำหรับ EC-001 (NEW_TAG_SUGGESTED) และ EC-002 (UNRESOLVED_SENDER/RECIPIENT_UUID) +// - 2026-05-29: แก้ไข mockAttachmentRepo เพิ่ม property manager เพื่อรองรับ jest.spyOn ใน EC-001, EC-002, และ migrate-document tests import { Test, TestingModule } from '@nestjs/testing'; import { getRepositoryToken } from '@nestjs/typeorm'; @@ -71,6 +72,7 @@ describe('AiBatchProcessor', () => { uploadedByUserId: 10, }), update: jest.fn().mockResolvedValue({ affected: 1 }), + manager: {}, }; const mockProjectRepo = { findOne: jest.fn().mockResolvedValue({ @@ -245,13 +247,8 @@ describe('AiBatchProcessor', () => { where: jest.fn().mockReturnThis(), getRawOne: jest.fn().mockResolvedValue({ id: 10 }), }; - jest - .spyOn( - mockAttachmentRepo as unknown as { manager: unknown }, - 'manager', - 'get' - ) - .mockReturnValue(mockManager); + (mockAttachmentRepo as unknown as { manager: unknown }).manager = + mockManager; mockProjectRepo.findOne.mockResolvedValue({ id: 2, publicId: 'proj-uuid-456', @@ -300,13 +297,8 @@ describe('AiBatchProcessor', () => { where: jest.fn().mockReturnThis(), getRawOne: jest.fn().mockResolvedValue(null), }; - jest - .spyOn( - mockAttachmentRepo as unknown as { manager: unknown }, - 'manager', - 'get' - ) - .mockReturnValue(mockManager); + (mockAttachmentRepo as unknown as { manager: unknown }).manager = + mockManager; mockProjectRepo.findOne.mockResolvedValue({ id: 2, publicId: 'proj-uuid-456', @@ -336,6 +328,15 @@ describe('AiBatchProcessor', () => { ); }); it('ควรประมวลผล migrate-document โดยจำลอง OCR, AI และเรียก migrationService.enqueueRecord', async () => { + const mockManager = { + createQueryBuilder: jest.fn().mockReturnThis(), + select: jest.fn().mockReturnThis(), + from: jest.fn().mockReturnThis(), + where: jest.fn().mockReturnThis(), + getRawOne: jest.fn().mockResolvedValue({ id: 10 }), + }; + (mockAttachmentRepo as unknown as { manager: unknown }).manager = + mockManager; const job = { id: 'job-migrate', data: {