Class: FakeLemmyV1Instance
Defined in: src/testing/lemmyv1/index.ts:219
FakeInstance for Lemmy v1 whose default routes are derived, per request, from the semantic seed store — tests describe what exists, not which endpoint returns it:
const alex = fake.seed.person({ name: "alex" });
fake.seed.post({ name: "Hello **world**", creator: alex });
fake.seed.loggedInAs(alex);Derived: site, post list/detail, comment list, community, person (+ person content), account, unread counts, notifications, modlog. Use mock() for error injection or endpoints outside this set, and calls() / waitForCall() to assert on outgoing requests. Wire-level builders stay available on build.
Extends
Constructors
Constructor
new FakeLemmyV1Instance(__namedParameters?): FakeLemmyV1Instance;Defined in: src/testing/lemmyv1/index.ts:240
Parameters
| Parameter | Type |
|---|---|
__namedParameters | FakeLemmyV1InstanceOptions |
Returns
FakeLemmyV1Instance
Overrides
Properties
| Property | Modifier | Type | Description | Inherited from | Defined in |
|---|---|---|---|---|---|
host | readonly | string | - | FakeInstance.host | src/testing/FakeInstance.ts:149 |
origin | readonly | string | - | FakeInstance.origin | src/testing/FakeInstance.ts:151 |
software | readonly | object | - | FakeInstance.software | src/testing/FakeInstance.ts:153 |
software.name | public | string | - | - | src/wellknown.ts:19 |
software.version | public | string | - | - | src/wellknown.ts:20 |
fetch | readonly | { (input, init?): Promise<Response>; (input, init?): Promise<Response>; } | fetch-compatible adapter. Prefer clientOptions() when constructing a ThreadiverseClient; use this directly to install a global fetch mock. Unrouted requests and { abort } responses throw TypeError, like a real network failure. | FakeInstance.fetch | src/testing/FakeInstance.ts:218 |
build | readonly | object | Wire-format builders bound to this instance's host | - | src/testing/lemmyv1/index.ts:221 |
build.commentNotification | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:513 |
build.commentView | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:514 |
build.community | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:515 |
build.communityResponse | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:516 |
build.communityView | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:517 |
build.getSiteResponse | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:518 |
build.localUser | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:519 |
build.modlogView | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:520 |
build.myUserInfo | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:521 |
build.pagedResponse | public | <T>(items, nextPage) => object | - | - | src/testing/lemmyv1/builders.ts:522 |
build.person | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:523 |
build.personResponse | public | (subject) => object | - | - | src/testing/lemmyv1/builders.ts:524 |
build.post | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:525 |
build.postResponse | public | (view) => object | - | - | src/testing/lemmyv1/builders.ts:526 |
build.postView | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:527 |
build.privateMessageNotification | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:528 |
build.privateMessageView | public | (over) => object | - | - | src/testing/lemmyv1/builders.ts:529 |
callsTo | readonly | <Operation>(operation) => PayloadOf<object[Operation]>[] | Canonical payloads of the requests an operation received | - | src/testing/lemmyv1/index.ts:224 |
on | readonly | object | Override an operation's response (canonical { error } supported) | - | src/testing/lemmyv1/index.ts:227 |
on.createComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:53 |
on.createPost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:57 |
on.createPrivateMessage | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:58 |
on.deleteComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:62 |
on.deletePost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:66 |
on.editComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:67 |
on.editPost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:68 |
on.followCommunity | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:69 |
on.getComments | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:73 |
on.getCommunity | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:87 |
on.getModlog | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:93 |
on.getNotifications | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:94 |
on.getPersonDetails | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:105 |
on.getPost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:111 |
on.getPosts | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:117 |
on.getRandomCommunity | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:131 |
on.getSite | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:132 |
on.getSiteMetadata | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:133 |
on.getUnreadCount | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:139 |
on.likeComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:140 |
on.likePost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:144 |
on.listPersonContent | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:145 |
on.login | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:151 |
on.markAllAsRead | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:152 |
on.markNotificationAsRead | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:155 |
on.markPostAsRead | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:160 |
on.resolveObject | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:164 |
on.saveComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:170 |
on.savePost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:174 |
on.search | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:175 |
once | readonly | object | Override an operation's next response only, then fall back | - | src/testing/lemmyv1/index.ts:230 |
once.createComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:53 |
once.createPost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:57 |
once.createPrivateMessage | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:58 |
once.deleteComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:62 |
once.deletePost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:66 |
once.editComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:67 |
once.editPost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:68 |
once.followCommunity | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:69 |
once.getComments | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:73 |
once.getCommunity | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:87 |
once.getModlog | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:93 |
once.getNotifications | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:94 |
once.getPersonDetails | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:105 |
once.getPost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:111 |
once.getPosts | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:117 |
once.getRandomCommunity | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:131 |
once.getSite | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:132 |
once.getSiteMetadata | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:133 |
once.getUnreadCount | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:139 |
once.likeComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:140 |
once.likePost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:144 |
once.listPersonContent | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:145 |
once.login | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:151 |
once.markAllAsRead | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:152 |
once.markNotificationAsRead | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:155 |
once.markPostAsRead | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:160 |
once.resolveObject | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:164 |
once.saveComment | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:170 |
once.savePost | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:174 |
once.search | public | (responder) => void | - | - | src/testing/lemmyv1/index.ts:175 |
seed | readonly | SeedStore | Semantic content store the default routes are derived from | - | src/testing/lemmyv1/index.ts:233 |
waitForPayload | readonly | <Operation>(operation, predicate?, options?) => Promise<PayloadOf<object[Operation]>> | Wait for an operation's next request; resolves its canonical payload | - | src/testing/lemmyv1/index.ts:236 |
Methods
calls()
calls(matcher): RecordedCall[];Defined in: src/testing/FakeInstance.ts:189
All recorded requests matching "METHOD /path" (query ignored).
Parameters
| Parameter | Type |
|---|---|
matcher | | `POST /${string}` | `DELETE /${string}` | `GET /${string}` | `PUT /${string}` |
Returns
Inherited from
clientOptions()
clientOptions(): ThreadiverseClientOptions;Defined in: src/testing/FakeInstance.ts:205
Options for a ThreadiverseClient scoped to this fake: routes fetch through the instance and isolates software discovery from the process-global cache (so multiple fakes for the same host — e.g. different versions across tests — can't contaminate each other).
const client = new ThreadiverseClient(fake.origin, fake.clientOptions());Returns
Inherited from
handle()
handle(request): Promise<FakeResponse | undefined>;Defined in: src/testing/FakeInstance.ts:252
Resolve a request against the route table.
Returns undefined for requests to other origins (callers decide whether to pass those through). Unmocked same-origin requests are answered with a loud 404 instead of escaping to the real network.
Parameters
| Parameter | Type |
|---|---|
request | FakeRequest |
Returns
Promise<FakeResponse | undefined>
Inherited from
install()
install(page): Promise<void>;Defined in: src/testing/FakeInstance.ts:290
Install onto a Playwright page. Routes all traffic for this instance's origin; other origins are untouched.
Parameters
| Parameter | Type |
|---|---|
page | PageLike |
Returns
Promise<void>
Inherited from
mock()
mock(matcher, responder): void;Defined in: src/testing/FakeInstance.ts:317
Set (or replace) the response for an endpoint. Last call wins.
Parameters
| Parameter | Type |
|---|---|
matcher | | `POST /${string}` | `DELETE /${string}` | `GET /${string}` | `PUT /${string}` |
responder | Responder |
Returns
void
Inherited from
mockOnce()
mockOnce(matcher, responder): void;Defined in: src/testing/FakeInstance.ts:322
Respond once for an endpoint, then fall back to the standing mock.
Parameters
| Parameter | Type |
|---|---|
matcher | | `POST /${string}` | `DELETE /${string}` | `GET /${string}` | `PUT /${string}` |
responder | Responder |
Returns
void
Inherited from
waitForCall()
waitForCall(
matcher,
predicate?,
__namedParameters?): Promise<RecordedCall>;Defined in: src/testing/FakeInstance.ts:333
Wait until a matching request is recorded, then return the latest. Resolution is push-based (no polling), so pending waiters settle the moment the request lands — only the timeout path needs real timers.
Parameters
| Parameter | Type |
|---|---|
matcher | | `POST /${string}` | `DELETE /${string}` | `GET /${string}` | `PUT /${string}` |
predicate | (call) => boolean |
__namedParameters | { timeoutMs?: number; } |
__namedParameters.timeoutMs? | number |
Returns
Promise<RecordedCall>
Inherited from
buildOperationApi()
protected buildOperationApi<Ops>(operations, renderError): OperationApi<Ops>;Defined in: src/testing/FakeInstance.ts:368
Build the operation-level API (on/once/callsTo/waitForPayload) from a provider's operation definitions plus its error wire renderer.
Type Parameters
| Type Parameter |
|---|
Ops extends Record<string, OperationDef<unknown>> |
Parameters
| Parameter | Type |
|---|---|
operations | Ops |
renderError | (error) => FakeResponse |
Returns
OperationApi<Ops>
