import { render, screen } from '@testing-library/react';
import { describe, it, expect, vi, beforeEach } from 'vitest';

import React from 'react';

import Edit from './Edit';

vi.mock('@inertiajs/react', async () => {
  const actual = await vi.importActual('@inertiajs/react');
  return { ...actual, Head: ({ title }: { title: string }) => <title>{title}</title> };
});

vi.mock('sonner', () => ({
  toast: {
    success: vi.fn(),
    error: vi.fn(),
  },
}));

vi.mock('@/Layouts/DashboardLayout', () => ({
  default: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,
}));

vi.mock('./Partials/UpdateProfileInformationForm', () => ({
  default: () => <div data-testid="update-profile-form" />,
}));
vi.mock('./Partials/UpdatePasswordForm', () => ({
  default: () => <div data-testid="update-password-form" />,
}));
vi.mock('./Partials/DeleteUserForm', () => ({
  default: () => <div data-testid="delete-user-form" />,
}));
vi.mock('@/hooks/useTimezone', () => ({
  useTimezone: () => ({ timezone: 'UTC', setTimezone: vi.fn(), isSaving: false }),
}));

describe('Profile/Edit', () => {
  beforeEach(() => {
    vi.clearAllMocks();
  });

  it('renders the Danger Zone with delete account form', () => {
    render(<Edit mustVerifyEmail={false} />);
    expect(screen.getByText('Danger Zone')).toBeInTheDocument();
    expect(screen.getByTestId('delete-user-form')).toBeInTheDocument();
  });
});
