- Remove unused @trpc/tanstack-react-query dependency - Document renderWithProviders tRPC provider omission (boundary constraint) - Implement deep merge in defineFactory (preserves nested sibling keys) - Document httpBatchLink<any> rationale in mock-trpc.ts - Align core-testing's own vitest.config with safety defaults (mockReset, unstubGlobals) - Add createMockTrpcClient usage example to AGENTS.md Reviewer: superpowers:code-reviewer (Task 1 of Plan 7). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
46 lines
1.8 KiB
Markdown
46 lines
1.8 KiB
Markdown
# @repo/core-testing
|
|
|
|
Shared testing utilities. Tag: `tooling`. May be depended on by any package as a devDependency.
|
|
|
|
## Subpath exports
|
|
|
|
- `@repo/core-testing/factory` — `defineFactory<T>(builder)` for test data factories
|
|
- `@repo/core-testing/contract` — `defineContractSuite<T>(name, suite)` for cross-impl contract tests
|
|
- `@repo/core-testing/react` — `renderWithProviders`, `createMockTrpcClient`
|
|
- `renderWithProviders` does NOT include a tRPC provider. Consumers needing tRPC should wire their own TRPCProvider (from their app's tRPC client setup) and use `createMockTrpcClient` as the client. This constraint exists because tooling packages cannot import `AppRouter` from `@repo/core-api`.
|
|
- `@repo/core-testing/payload` — `stubPayloadConfig`, `mockPayloadModule`
|
|
- `@repo/core-testing/setup/jsdom` — vitest setupFile (jest-dom + cleanup)
|
|
- `@repo/core-testing/setup/node` — vitest setupFile (no-op placeholder)
|
|
|
|
## Adding a factory
|
|
|
|
```typescript
|
|
import { defineFactory } from "@repo/core-testing/factory";
|
|
|
|
export const articleFactory = defineFactory<Article>(({ sequence }) => ({
|
|
id: `article-${sequence}`,
|
|
title: `Article ${sequence}`,
|
|
// stable defaults — overrides drive variation
|
|
}));
|
|
```
|
|
|
|
## Using createMockTrpcClient
|
|
|
|
For component tests that consume tRPC procedures, mock the responses by procedure path (dot-separated):
|
|
|
|
```typescript
|
|
import { createMockTrpcClient } from "@repo/core-testing/react";
|
|
import type { AppRouter } from "@repo/core-api"; // import in your app/feature, not in core-testing
|
|
|
|
const trpcClient = createMockTrpcClient<AppRouter>({
|
|
"blog.articleBySlug": { id: "1", title: "Hello", slug: "hello" },
|
|
"blog.listArticles": [],
|
|
});
|
|
```
|
|
|
|
Combine with your app's TRPCProvider for components that need a tRPC client in the render tree.
|
|
|
|
## Adding a contract suite
|
|
|
|
See `docs/guides/tdd-workflow.md` §"Contract suite usage".
|