> ## Documentation Index
> Fetch the complete documentation index at: https://docs.latwoodtech.com/llms.txt
> Use this file to discover all available pages before exploring further.

# @adrper79-dot/testing

> Zero-dependency mock factories for all Factory Core packages.

# @adrper79-dot/testing

Mock factories and test fixtures for every Factory Core package. Zero runtime dependencies — install only in `devDependencies`.

## Installation

```bash theme={null}
npm install --save-dev @adrper79-dot/testing
```

## Mock factories

### `makeMockDb(overrides?)`

Returns an object matching the `Db` interface with `vi.fn()` stubs.

```typescript theme={null}
function makeMockDb(overrides?: Partial<Db>): Db;
```

### `makeMockLogger()`

Returns a `Logger` with all methods as `vi.fn()` stubs.

```typescript theme={null}
function makeMockLogger(): Logger;
```

### `makeMockTokenPayload(overrides?)`

Returns a valid `TokenPayload` fixture.

```typescript theme={null}
function makeMockTokenPayload(overrides?: Partial<TokenPayload>): TokenPayload;
// Defaults: sub='user-1', tenantId='tenant-1', role='member', not expired
```

### `makeMockLLMResult(overrides?)`

Returns a valid `LLMResult` fixture.

```typescript theme={null}
function makeMockLLMResult(overrides?: Partial<LLMResult>): LLMResult;
// Defaults: content='Mock response', provider='anthropic', tokens={input:10,output:20}
```

### `makeMockStripeEvent(type, overrides?)`

Returns a Stripe webhook event fixture.

```typescript theme={null}
function makeMockStripeEvent(
  type: 'customer.subscription.created' | 'customer.subscription.deleted' | string,
  overrides?: Record<string, unknown>,
): StripeEvent;
```

### `makeMockVoiceSession(overrides?)`

Returns a `VoiceSession`-compatible mock.

```typescript theme={null}
function makeMockVoiceSession(): MockVoiceSession;
```

## Example

```typescript theme={null}
import { makeMockDb, makeMockLogger } from '@adrper79-dot/testing';
import { describe, it, expect } from 'vitest';
import { getCustomerView } from '@adrper79-dot/crm';

describe('getCustomerView', () => {
  it('returns customer data', async () => {
    const db = makeMockDb();
    db.execute.mockResolvedValueOnce({ rows: [{ id: 'user-1', email: 'a@b.com' }] });

    const result = await getCustomerView(db, 'user-1');
    expect(result.id).toBe('user-1');
  });
});
```
