import { App } from '@inertiajs/react';
import type { Page } from '@inertiajs/core';
import { renderToString } from 'react-dom/server';
import type { ReactNode } from 'react';
import { expect, test } from 'vitest';
import PreviewLayout from '@/layouts/preview-layout';
import Preview from '@/pages/preview';
import { previewPaths } from '@/lib/preview-navigation';
import { TooltipProvider } from '@/components/ui/tooltip';
const page = {
component: 'preview/index',
url: '/proposta/principal',
version: 'regression',
props: {
errors: {},
name: 'SGC',
canRequest: false,
auth: { user: null },
organizationAccess: {},
payablesAvailable: false,
sidebarOpen: true,
initialScreen: 'overview',
},
clearHistory: false,
encryptHistory: false,
} satisfies Page;
test('Inertia default preview layout renders the child page instead of its shared props', () => {
function Screen() {
return Conteúdo da página de demonstração;
}
const html = renderToString(
PreviewLayout}
/>,
);
expect(html).toContain('Conteúdo da página de demonstração');
expect(html).toContain('Dados fictícios');
expect(html).toContain('sgc-main');
});
test('the former default layout reproduces the reported props object crash', () => {
const formerLayout = (props: ReactNode) => (
{props}
);
function Screen() {
return Conteúdo;
}
expect(() =>
renderToString(
formerLayout}
/>,
),
).toThrow(/Objects are not valid as a React child.*initialScreen/);
});
test.each(Object.entries(previewPaths))(
'preview screen %s renders through the real Inertia adapter',
(screen, url) => {
const html = renderToString(
PreviewLayout}
/>
,
);
expect(html).toContain('Dados fictícios');
expect(html).toContain('sgc-main');
},
);