import { describe, it, expect, vi, beforeEach } from 'vitest';
import { assignUserDepartment } from '@/features/admin/services/departmentMembershipService';
import { api } from '@/shared/utils/api';

vi.mock('@/shared/utils/api', () => ({
  api: {
    post: vi.fn(),
    get: vi.fn(),
    patch: vi.fn(),
    delete: vi.fn(),
  },
}));

describe('departmentMembershipService', () => {
  beforeEach(() => {
    vi.clearAllMocks();
  });

  it('add user to department mutation posts expected payload', async () => {
    vi.mocked(api.post).mockResolvedValue({
      data: {
        id: 'm1',
        department_id: 'd1',
        user_id: 'u1',
        role: 'agent',
        role_in_department: 'agent',
        is_manager: false,
        is_department_head: false,
        is_primary: true,
        joined_at: null,
      },
    });

    await assignUserDepartment('u1', {
      department_id: 'd1',
      is_primary: true,
    });

    expect(api.post).toHaveBeenCalledWith('/users/u1/departments', {
      department_id: 'd1',
      is_primary: true,
    });
  });
});
