|
|
|
|
@@ -63,7 +63,8 @@ describe('FlyerAiProcessor', () => {
|
|
|
|
|
};
|
|
|
|
|
vi.mocked(mockAiService.extractCoreDataFromFlyerImage).mockResolvedValue(mockAiResponse);
|
|
|
|
|
|
|
|
|
|
const result = await service.extractAndValidateData([], jobData, logger);
|
|
|
|
|
const imagePaths = [{ path: 'page1.jpg', mimetype: 'image/jpeg' }];
|
|
|
|
|
const result = await service.extractAndValidateData(imagePaths, jobData, logger);
|
|
|
|
|
|
|
|
|
|
expect(mockAiService.extractCoreDataFromFlyerImage).toHaveBeenCalledTimes(1);
|
|
|
|
|
expect(mockPersonalizationRepo.getAllMasterItems).toHaveBeenCalledTimes(1);
|
|
|
|
|
@@ -83,7 +84,8 @@ describe('FlyerAiProcessor', () => {
|
|
|
|
|
};
|
|
|
|
|
vi.mocked(mockAiService.extractCoreDataFromFlyerImage).mockResolvedValue(invalidResponse as any);
|
|
|
|
|
|
|
|
|
|
await expect(service.extractAndValidateData([], jobData, logger)).rejects.toThrow(
|
|
|
|
|
const imagePaths = [{ path: 'page1.jpg', mimetype: 'image/jpeg' }];
|
|
|
|
|
await expect(service.extractAndValidateData(imagePaths, jobData, logger)).rejects.toThrow(
|
|
|
|
|
AiDataValidationError,
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
@@ -101,7 +103,8 @@ describe('FlyerAiProcessor', () => {
|
|
|
|
|
vi.mocked(mockAiService.extractCoreDataFromFlyerImage).mockResolvedValue(mockAiResponse as any);
|
|
|
|
|
const { logger } = await import('./logger.server');
|
|
|
|
|
|
|
|
|
|
const result = await service.extractAndValidateData([], jobData, logger);
|
|
|
|
|
const imagePaths = [{ path: 'page1.jpg', mimetype: 'image/jpeg' }];
|
|
|
|
|
const result = await service.extractAndValidateData(imagePaths, jobData, logger);
|
|
|
|
|
|
|
|
|
|
// It should not throw, but return the data and log a warning.
|
|
|
|
|
expect(result.data).toEqual(mockAiResponse);
|
|
|
|
|
@@ -122,7 +125,8 @@ describe('FlyerAiProcessor', () => {
|
|
|
|
|
vi.mocked(mockAiService.extractCoreDataFromFlyerImage).mockResolvedValue(mockAiResponse);
|
|
|
|
|
const { logger } = await import('./logger.server');
|
|
|
|
|
|
|
|
|
|
const result = await service.extractAndValidateData([], jobData, logger);
|
|
|
|
|
const imagePaths = [{ path: 'page1.jpg', mimetype: 'image/jpeg' }];
|
|
|
|
|
const result = await service.extractAndValidateData(imagePaths, jobData, logger);
|
|
|
|
|
expect(result.data).toEqual(mockAiResponse);
|
|
|
|
|
expect(result.needsReview).toBe(true);
|
|
|
|
|
expect(logger.warn).toHaveBeenCalledWith(expect.any(Object), expect.stringContaining('contains no items. The flyer will be saved with an item_count of 0. Flagging for review.'));
|
|
|
|
|
|