@fedify/testing
Version:
Testing utilities for Fedify applications
105 lines (75 loc) • 2.17 kB
Markdown
<!-- deno-fmt-ignore-file -->
@fedify/testing
===============
Testing utilities for Fedify applications.
This package provides mock implementations of the `Federation` and `Context`
interfaces to facilitate unit testing of federated applications built with
Fedify.
Installation
------------
~~~~ bash
deno add @fedify/testing
~~~~
~~~~ bash
npm install @fedify/testing
~~~~
~~~~ bash
pnpm add @fedify/testing
~~~~
~~~~ bash
yarn add @fedify/testing
~~~~
Usage
-----
### `MockFederation`
The `MockFederation` class provides a mock implementation of the `Federation`
interface for unit testing:
~~~~ typescript
import { MockFederation } from "@fedify/testing";
import { Create } from "@fedify/fedify/vocab";
// Create a mock federation
const federation = new MockFederation<{ userId: string }>();
// Set up inbox listeners
federation
.setInboxListeners("/users/{identifier}/inbox")
.on(Create, async (ctx, activity) => {
console.log("Received:", activity);
});
// Simulate receiving an activity
await federation.receiveActivity(createActivity);
// Check sent activities
const sent = federation.sentActivities;
console.log(sent[0].activity);
~~~~
### `MockContext`
The `MockContext` class provides a mock implementation of the `Context`
interface:
~~~~ typescript
import { MockContext } from "@fedify/testing";
// Create a mock context
const context = new MockContext({
url: new URL("https://example.com"),
data: { userId: "test-user" },
federation: mockFederation
});
// Send an activity
await context.sendActivity(
{ identifier: "alice" },
recipient,
activity
);
// Check sent activities
const sent = context.getSentActivities();
console.log(sent[0].activity);
~~~~
### Helper functions
The package also exports helper functions for creating various context types:
- `createContext()`: Creates a basic context
- `createRequestContext()`: Creates a request context
- `createInboxContext()`: Creates an inbox context
## Features
- Track sent activities with metadata
- Simulate activity reception
- Configure custom URI templates
- Test queue-based activity processing
- Mock document loaders and context loaders