@classytic/arc-testkit
v0.3.0
Published
Boot a real @classytic/arc app around the module(s) under test on in-memory MongoDB — the ecosystem test harness. Thin Mongo-typed wrapper over @classytic/arc/testing (arc 2.22+). If your arc module boots green here, it composes into any arc host.
Readme
@classytic/arc-testkit
Boot a real
@classytic/arcapp around the module(s) under test, on a real (in-memory) database.
The ecosystem's contributor contract for the @classytic/arc-* module fleet: if your module boots green here, it composes into any arc host.
Install
npm i -D @classytic/arc-testkit @classytic/mongokit mongodb-memory-server@classytic/mongokit + mongodb-memory-server are optional peers — needed only for the default backend, and dynamically imported so they never enter a production bundle. Pass your own backend to skip them entirely.
Usage
import { bootModuleApp } from '@classytic/arc-testkit';
import { createAccountingModule } from '@classytic/arc-accounting';
const t = await bootModuleApp(({ connection }) => [
createAccountingModule({ connection, permissions }),
]);
const res = await t.app.inject({ method: 'GET', url: '/accounting/accounts' });
expect(res.statusCode).toBe(200);
await t.close();The module input is a factory receiving { connection, mongoUri } (or a plain module / array). It boots arc with preset: 'testing', auth: false — override via options.app.
Transactions
Modules that open multi-document transactions need a replica set:
const t = await bootModuleApp(({ connection }) => [createReservationModule({ connection, permissions })],
{ replset: true });Bring your own backend
The default backend is mongoMemoryBackend() from @classytic/mongokit/testkit. Override it to point at a shared server, a real Atlas cluster, or a different kit's backend — anything that satisfies the TestBackend shape (setup() → { ctx: { connection, uri }, teardown }):
import { mongoMemoryBackend } from '@classytic/mongokit/testkit';
const t = await bootModuleApp(mods, {
backend: mongoMemoryBackend({ uri: process.env.ATLAS_TEST_URI }), // real cluster
});API
| Export | |
| --- | --- |
| bootModuleApp(modules, options?) | boot arc around modules on a backend; returns { app, connection, mongoUri, close } |
| TestBackend | the backend seam — setup() → { ctx: { connection, uri }, teardown } |
| TestkitContext | what a module factory receives: { connection, mongoUri } |
| BootModuleAppOptions | { replset?, app?, backend? } |
License
MIT © Classytic
Trademark
MIT-licensed code. "Classytic"/"arc" names + logos are trademarks of Classytic LLC — see TRADEMARK.md.
