/* @vitest-environment jsdom */
import { fireEvent, render, screen, within } from '@testing-library/react';
import { expect, test, vi } from 'vitest';
import { PlatformAuthModalShell } from './PlatformAuthModalShell';
test('renders auth modal shell with platform theme and auth card chrome', () => {
const onClose = vi.fn();
const { container } = render(
登录表单
,
);
const dialog = screen.getByRole('dialog', { name: '账号入口' });
expect(container.querySelector('[role="dialog"]')).toBeNull();
expect(document.body.contains(dialog)).toBe(true);
expect(dialog.parentElement?.className).toContain('platform-theme--light');
expect(dialog.className).toContain('platform-modal-shell');
expect(dialog.className).toContain('platform-auth-card');
expect(dialog.className).toContain('!max-w-md');
expect(within(dialog).getByText('登录表单')).toBeTruthy();
const backdrop = dialog.parentElement as HTMLElement;
fireEvent.pointerDown(within(dialog).getByText('登录表单'));
fireEvent.pointerUp(backdrop);
fireEvent.click(backdrop);
expect(onClose).not.toHaveBeenCalled();
fireEvent.pointerDown(backdrop);
fireEvent.pointerUp(backdrop);
fireEvent.click(backdrop);
expect(onClose).toHaveBeenCalledTimes(1);
});
test('keeps escape disabled for auth flows', () => {
const onClose = vi.fn();
render(
邀请码表单
,
);
fireEvent.keyDown(window, { key: 'Escape' });
expect(onClose).not.toHaveBeenCalled();
expect(screen.getByRole('button', { name: '取消填写邀请码' })).toBeTruthy();
});
test('allows account shell callers to own overlay spacing and panel size', () => {
render(
账号内容
,
);
const dialog = screen.getByRole('dialog', { name: '账号信息' });
const overlay = dialog.parentElement as HTMLElement;
expect(overlay.className).toContain('platform-theme--light');
expect(overlay.className).not.toContain('!px-3');
expect(overlay.style.paddingTop).toBe('12px');
expect(dialog.className).toContain('!max-w-3xl');
expect(dialog.className).not.toContain('platform-auth-card');
expect(within(dialog).queryByRole('button', { name: '关闭账号弹窗' })).toBeNull();
});