mirror of
https://github.com/azaion/ui.git
synced 2026-06-21 11:01:11 +00:00
23746ec61d
Closes architecture baseline finding F4. Every component now exposes its Public API through `src/<component>/index.ts`; cross-component imports go through the barrel. `scripts/check-arch-imports.mjs` plus `STC-ARCH-01` in the static profile enforce the rule; tests in `tests/architecture_imports.test.ts` cover AC-4/AC-5 + 2 exemption cases. One F3-pending exemption (`classColors`) is documented in 5 places (barrel, consumer, script, doc, test) to avoid a circular import. Phase B cycle 1 batch 1 of 2 (epic AZ-447). Batch 2 is AZ-486 (endpoint builders) — blocked on this commit landing. Co-authored-by: Cursor <cursoragent@cursor.com>
40 lines
1.5 KiB
TypeScript
40 lines
1.5 KiB
TypeScript
import type { ReactElement, ReactNode } from 'react'
|
|
import { render, type RenderOptions, type RenderResult } from '@testing-library/react'
|
|
import { MemoryRouter } from 'react-router-dom'
|
|
import { I18nextProvider } from 'react-i18next'
|
|
import i18n from '../../src/i18n'
|
|
import { AuthProvider } from '../../src/auth'
|
|
|
|
export interface RenderWithProvidersOptions extends RenderOptions {
|
|
/** Initial route(s) for the in-memory router. Defaults to ['/']. */
|
|
initialEntries?: string[]
|
|
/** Initial entry index. Defaults to 0. */
|
|
initialIndex?: number
|
|
/** Skip wrapping in <AuthProvider>. Useful for tests that mock auth themselves. */
|
|
withoutAuth?: boolean
|
|
/** Skip wrapping in <I18nextProvider>. */
|
|
withoutI18n?: boolean
|
|
}
|
|
|
|
export function renderWithProviders(
|
|
ui: ReactElement,
|
|
{
|
|
initialEntries = ['/'],
|
|
initialIndex = 0,
|
|
withoutAuth,
|
|
withoutI18n,
|
|
...rtl
|
|
}: RenderWithProvidersOptions = {},
|
|
): RenderResult {
|
|
const Wrapper = ({ children }: { children: ReactNode }) => {
|
|
let tree = <MemoryRouter initialEntries={initialEntries} initialIndex={initialIndex}>{children}</MemoryRouter>
|
|
if (!withoutAuth) tree = <AuthProvider>{tree}</AuthProvider>
|
|
if (!withoutI18n) tree = <I18nextProvider i18n={i18n}>{tree}</I18nextProvider>
|
|
return tree
|
|
}
|
|
return render(ui, { wrapper: Wrapper, ...rtl })
|
|
}
|
|
|
|
export { screen, within, fireEvent, waitFor, act } from '@testing-library/react'
|
|
export { default as userEvent } from '@testing-library/user-event'
|