@gluonjs/test-utils


@gluonjs/test-utils / packages/test-utils/src / testPlugin

Function: testPlugin()

testPlugin<Options>(plugin, options): TestPluginUse

Type Parameters

Options

Options

Parameters

plugin

GluonAppPlugin<Options>

options

Options

Returns

TestPluginUse

Example

Pair a typed application plugin with the exact options that a fixture should pass during installation:

ts
import type { GluonPlugin } from '@gluonjs/core';
import { defineStore } from '@gluonjs/store';
import {
  createRouterFixture,
  createStoreFixture,
  testPlugin,
  type RouterFixture,
  type RouterFixtureOptions,
  type StoreFixture,
  type TestPluginUse,
} from '@gluonjs/test-utils';

const analytics: GluonPlugin<{ enabled: boolean }> = {
  install: (_app, options) => console.log(options.enabled),
};
const plugin: TestPluginUse = testPlugin(analytics, { enabled: true });

type Routes = { report: { params: { id: string } } };
const routerOptions = {
  initial: '/reports/41',
  routes: [{ path: '/reports/:id', name: 'report' }],
} satisfies RouterFixtureOptions<Routes>;
const routerFixture: RouterFixture<Routes> = createRouterFixture<Routes>(routerOptions);
await routerFixture.ready;
await routerFixture.router.push({ name: 'report', params: { id: '42' } });

const storeFixture: StoreFixture = createStoreFixture({
  initialState: { counter: { count: 4 } },
});
const counter = defineStore({ id: 'counter', state: () => ({ count: 0 }) });
console.log(storeFixture.manager.use(counter).count, plugin.options);
routerFixture.router.destroy();
storeFixture.manager.dispose();