import React, { isValidElement } from 'react' import { describe, expect, it, vi } from 'vitest' vi.mock('@/components/PublicHeader', () => ({ default: function MockAdminHeader() { return React.createElement('admin-header') } })) vi.mock('@/components/PublicFooter', () => ({ default: function MockAdminFooter() { return React.createElement('admin-footer') } })) import PublicShell from './PublicShell' type WithChildren = { children?: React.ReactNode } function childTypes(node: React.ReactElement): string[] { return React.Children.toArray(node.props.children).filter(isValidElement).map((child) => { const type = child.type as any if (typeof type === 'string') return type return type.displayName ?? type.name ?? 'anonymous' }) } describe('admin PublicShell', () => { it('always renders the admin public chrome around children', () => { const shell = PublicShell({ children: React.createElement('section', { id: 'login' }) }) expect(childTypes(shell)).toEqual(['MockAdminHeader', 'div', 'MockAdminFooter']) }) it('uses a flex column root so footer placement stays stable', () => { const shell = PublicShell({ children: React.createElement('section') }) expect(shell.props.className).toContain('flex') expect(shell.props.className).toContain('min-h-screen') expect(shell.props.className).toContain('flex-col') }) })