Skip to content

Commit 10a9ecf

Browse files
committed
make docs less verbose
1 parent 6228d1a commit 10a9ecf

File tree

1 file changed

+5
-125
lines changed

1 file changed

+5
-125
lines changed

docs/mocks.md

Lines changed: 5 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -45,154 +45,34 @@ export const mockedGetRegistryV01Servers = AutoAPIMock<GetRegistryV01ServersResp
4545

4646
### Overriding in Tests
4747

48-
Use `.override()` to customize responses for specific tests:
48+
Use `.override()` for type-safe response modifications, or `.overrideHandler()` for full control (errors, network failures):
4949

5050
```typescript
5151
import { HttpResponse } from "msw";
5252
import { mockedGetRegistryV01Servers } from "@mocks/fixtures/registry_v0_1_servers/get";
5353

54-
describe("ServerList", () => {
55-
it("shows empty state when no servers", async () => {
56-
// Override to return empty list for this test only (type-safe)
57-
mockedGetRegistryV01Servers.override(() => ({
58-
servers: [],
59-
metadata: { count: 0 },
60-
}));
61-
62-
render(<ServerList />);
63-
expect(screen.getByText("No servers available")).toBeVisible();
64-
});
65-
66-
it("shows error state on API failure", async () => {
67-
// Use overrideHandler for error responses
68-
mockedGetRegistryV01Servers.overrideHandler(() =>
69-
HttpResponse.json({ error: "Server error" }, { status: 500 })
70-
);
71-
72-
render(<ServerList />);
73-
expect(screen.getByText("Failed to load servers")).toBeVisible();
74-
});
75-
76-
it("shows servers from default fixture", async () => {
77-
// No override - uses default fixture data
78-
render(<ServerList />);
79-
expect(screen.getByText("AWS Nova Canvas")).toBeVisible();
80-
});
81-
});
82-
```
83-
84-
### API Reference
85-
86-
```typescript
87-
interface AutoAPIMockInstance<T> {
88-
// The default fixture data
89-
defaultValue: T;
90-
91-
// Override the response data (type-safe, preferred)
92-
override(fn: (data: T, info: ResponseResolverInfo) => T): this;
93-
94-
// Override the full handler (for errors, network failures, invalid data)
95-
overrideHandler(fn: (data: T, info: ResponseResolverInfo) => Response): this;
96-
97-
// Define a reusable named scenario
98-
scenario(name: string, fn: (instance: AutoAPIMockInstance<T>) => AutoAPIMockInstance<T>): this;
99-
100-
// Activate a named scenario for the current test
101-
activateScenario(name: string): this;
102-
103-
// Reset to default behavior (called automatically before each test)
104-
reset(): this;
105-
106-
// MSW handler to use in handler registration. Respects overrides and scenarios.
107-
generatedHandler: HttpResponseResolver;
108-
}
109-
```
110-
111-
### Choosing Between `override` and `overrideHandler`
112-
113-
Use **`override`** (type-safe, preferred) when you just want to change the response data:
114-
115-
```typescript
116-
// Simple - just return the data you want
54+
// Type-safe data override
11755
mockedGetRegistryV01Servers.override(() => ({
11856
servers: [],
11957
metadata: { count: 0 },
12058
}));
12159

122-
// With default data modifications
60+
// Modify default data
12361
mockedGetRegistryV01Servers.override((data) => ({
12462
...data,
12563
servers: data.servers?.slice(0, 3),
12664
}));
127-
```
128-
129-
Use **`overrideHandler`** (full control) when you need:
130-
- Custom HTTP status codes (errors)
131-
- Non-JSON responses
132-
- Network errors
133-
- Invalid/malformed data for edge case testing
13465

135-
```typescript
136-
// Return error status
66+
// Error responses (use overrideHandler)
13767
mockedGetRegistryV01Servers.overrideHandler(() =>
13868
HttpResponse.json({ error: "Server error" }, { status: 500 })
13969
);
14070

14171
// Network error
14272
mockedGetRegistryV01Servers.overrideHandler(() => HttpResponse.error());
143-
144-
// Testing invalid data shapes
145-
mockedGetRegistryV01Servers.overrideHandler(() =>
146-
HttpResponse.json({ servers: [{ server: null }] })
147-
);
14873
```
14974

150-
### Automatic Reset
151-
152-
Overrides are automatically reset before each test via `beforeEach()` in `src/mocks/test.setup.ts`. You don't need to manually reset mocks between tests.
153-
154-
### Using Default Data in Overrides
155-
156-
Access the default fixture data to make partial modifications:
157-
158-
```typescript
159-
// With override (type-safe, preferred)
160-
mockedGetRegistryV01Servers.override((data) => ({
161-
...data,
162-
servers: data.servers?.slice(0, 1),
163-
}));
164-
165-
// With overrideHandler (when you need the Response wrapper)
166-
mockedGetRegistryV01Servers.overrideHandler((data) =>
167-
HttpResponse.json({
168-
...data,
169-
servers: data.servers?.slice(0, 1),
170-
})
171-
);
172-
```
173-
174-
### Accessing Request Info
175-
176-
Both methods receive request info as the second parameter:
177-
178-
```typescript
179-
// With override (type-safe)
180-
mockedGetRegistryV01Servers.override((data, info) => {
181-
const cursor = new URL(info.request.url).searchParams.get("cursor");
182-
return cursor === "page2"
183-
? { servers: [], metadata: { count: 0 } }
184-
: data;
185-
});
186-
187-
// With overrideHandler (when you need different status codes based on request)
188-
mockedGetRegistryV01Servers.overrideHandler((data, info) => {
189-
const authHeader = info.request.headers.get("Authorization");
190-
if (!authHeader) {
191-
return HttpResponse.json({ error: "Unauthorized" }, { status: 401 });
192-
}
193-
return HttpResponse.json(data);
194-
});
195-
```
75+
Overrides are automatically reset before each test via `beforeEach()` in `src/mocks/test.setup.ts`.
19676

19777
### Reusable Scenarios
19878

0 commit comments

Comments
 (0)