Files
Oleksandr Bezdieniezhnykh 23746ec61d [AZ-485] Add Public API barrels + STC-ARCH-01 (F4 close)
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>
2026-05-11 10:33:30 +03:00

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'