@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
Example
Pair a typed application plugin with the exact options that a fixture should pass during installation:
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();