feat: 新增饮食记录模块,含增删改查及营养汇总功能
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
import { DietAnalysisService } from './diet-analysis.service';
|
||||
import { UsersService } from '../../users/users.service';
|
||||
import { DietRecordsService } from '../../diet-records/diet-records.service';
|
||||
|
||||
describe('DietAnalysisService - Text Analysis', () => {
|
||||
let service: DietAnalysisService;
|
||||
let mockUsersService: Partial<UsersService>;
|
||||
let mockDietRecordsService: Partial<DietRecordsService>;
|
||||
let mockConfigService: Partial<ConfigService>;
|
||||
|
||||
beforeEach(async () => {
|
||||
// Mock services
|
||||
mockUsersService = {
|
||||
mockDietRecordsService = {
|
||||
addDietRecord: jest.fn().mockResolvedValue({}),
|
||||
getDietHistory: jest.fn().mockResolvedValue({ total: 0, records: [] }),
|
||||
getRecentNutritionSummary: jest.fn().mockResolvedValue({
|
||||
@@ -41,7 +41,7 @@ describe('DietAnalysisService - Text Analysis', () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [
|
||||
DietAnalysisService,
|
||||
{ provide: UsersService, useValue: mockUsersService },
|
||||
{ provide: DietRecordsService, useValue: mockDietRecordsService },
|
||||
{ provide: ConfigService, useValue: mockConfigService },
|
||||
],
|
||||
}).compile();
|
||||
@@ -57,7 +57,7 @@ describe('DietAnalysisService - Text Analysis', () => {
|
||||
it('should build a proper prompt for text analysis', () => {
|
||||
// 通过反射访问私有方法进行测试
|
||||
const prompt = (service as any).buildTextDietAnalysisPrompt('breakfast');
|
||||
|
||||
|
||||
expect(prompt).toContain('作为专业营养分析师');
|
||||
expect(prompt).toContain('breakfast');
|
||||
expect(prompt).toContain('shouldRecord');
|
||||
@@ -130,12 +130,12 @@ describe('DietAnalysisService - Text Analysis', () => {
|
||||
};
|
||||
|
||||
const result = await service.processDietRecord('test-user-id', mockAnalysisResult);
|
||||
|
||||
|
||||
expect(result).toBeDefined();
|
||||
expect(result?.foodName).toBe('燕麦粥');
|
||||
expect(result?.source).toBe('manual'); // 文本记录应该是manual源
|
||||
expect(result?.imageUrl).toBeUndefined();
|
||||
expect(mockUsersService.addDietRecord).toHaveBeenCalledWith('test-user-id', expect.objectContaining({
|
||||
expect(mockDietRecordsService.addDietRecord).toHaveBeenCalledWith('test-user-id', expect.objectContaining({
|
||||
foodName: '燕麦粥',
|
||||
source: 'manual'
|
||||
}));
|
||||
@@ -164,7 +164,7 @@ describe('DietAnalysisService - Text Analysis', () => {
|
||||
};
|
||||
|
||||
const result = await service.processDietRecord('test-user-id', mockAnalysisResult, 'https://example.com/image.jpg');
|
||||
|
||||
|
||||
expect(result).toBeDefined();
|
||||
expect(result?.foodName).toBe('鸡胸肉沙拉');
|
||||
expect(result?.source).toBe('vision'); // 有图片URL应该是vision源
|
||||
|
||||
Reference in New Issue
Block a user