piral-core
Version:
The core library for creating a Piral instance.
78 lines (74 loc) • 1.74 kB
text/typescript
/**
* @vitest-environment jsdom
*/
import create from 'zustand';
import { describe, it, expect, vitest } from 'vitest';
import { createListener } from 'piral-base';
import { registerExtension, registerPage, unregisterExtension, unregisterPage } from './components';
import { createActions } from '../state';
vitest.mock('../../app.codegen', () => ({
createNavigation: vitest.fn((publicPath) => ({
publicPath,
})),
publicPath: '/',
}));
describe('Components Actions Module', () => {
it('registerExtension and unregisterExtension', () => {
const state: any = create(() => ({
foo: 5,
registry: {
foo: 5,
extensions: {},
},
}));
const ctx = createActions(state, createListener({}));
registerExtension(ctx, 'foo', 10 as any);
expect(state.getState()).toEqual({
foo: 5,
registry: {
foo: 5,
extensions: {
foo: [10],
},
},
});
unregisterExtension(ctx, 'foo', undefined);
expect(state.getState()).toEqual({
foo: 5,
registry: {
foo: 5,
extensions: {
foo: [],
},
},
});
});
it('registerPage and unregisterPage', () => {
const state: any = create(() => ({
foo: 5,
registry: {
foo: 5,
pages: {},
},
}));
const ctx = createActions(state, createListener({}));
registerPage(ctx, 'foo', 10 as any);
expect(state.getState()).toEqual({
foo: 5,
registry: {
foo: 5,
pages: {
foo: 10,
},
},
});
unregisterPage(ctx, 'foo');
expect(state.getState()).toEqual({
foo: 5,
registry: {
foo: 5,
pages: {},
},
});
});
});