@gluonjs/test-utils / packages/test-utils/src / RouterFixture
Interface: RouterFixture<Routes>
Type Parameters
Routes
Routes extends RouteNamedMap = RouteNamedMap
Properties
plugin
readonlyplugin:GluonAppPlugin<void>
ready
readonlyready:Promise<void>
router
readonlyrouter:Router<Routes>
Example
Use the typed Router, installable plugin, and readiness promise owned by an isolated routing fixture:
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();