import { describe, it, expect, vi, beforeEach } from 'vitest';
import { apiClient } from '../../src/services/api-client';
import * as NutritionTargetsService from '../../src/services/nutrition-targets';

vi.mock('../../src/services/api-client', () => ({
  apiClient: {
    get: vi.fn(),
    post: vi.fn(),
  },
}));

describe('nutrition-targets service', () => {
  beforeEach(() => {
    vi.clearAllMocks();
  });

  it('getActiveNutritionTarget', async () => {
    await NutritionTargetsService.getActiveNutritionTarget('hh1');
    expect(apiClient.get).toHaveBeenCalledWith('/households/hh1/nutrition-targets');
  });

  it('getNutritionTargetHistory', async () => {
    await NutritionTargetsService.getNutritionTargetHistory('hh1');
    expect(apiClient.get).toHaveBeenCalledWith('/households/hh1/nutrition-targets/history');
  });

  it('setNutritionTarget', async () => {
    const data = { calories: 2000 } as any;
    await NutritionTargetsService.setNutritionTarget('hh1', data);
    expect(apiClient.post).toHaveBeenCalledWith('/households/hh1/nutrition-targets', data);
  });

  it('calculateTargetPreset', async () => {
    await NutritionTargetsService.calculateTargetPreset('hh1', 2500, 'gain');
    expect(apiClient.post).toHaveBeenCalledWith('/households/hh1/nutrition-targets/presets', { calories: 2500, strategy: 'gain' });
  });
});
