mobx-wouter
Version:
<img src="assets/logo.png" align="right" height="156" alt="logo" />
58 lines (57 loc) • 2.26 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { act, render, screen } from '@testing-library/react';
import { describe, expect, test } from 'vitest';
import { createCounter } from 'yummies/complex/counter';
import { PageViewModelBaseMock } from '../page-view-model/page-view-model.base.test.js';
import { withPageViewModel, } from './with-page-view-model.js';
const createIdGenerator = (prefix) => {
const counter = createCounter();
return () => (prefix ?? '') + counter().toString();
};
describe('withPageViewModel', () => {
test('renders (required path param)', async () => {
class VM extends PageViewModelBaseMock {
mount() {
super.mount();
}
}
const View = ({ model }) => {
return _jsx("div", { "data-testid": 'view', children: `hello ${model.id}` });
};
const Component = withPageViewModel(VM, {
generateId: createIdGenerator(),
})(View);
await act(async () => render(_jsx(Component, { params: { foo: 'bar' } })));
expect(screen.getByText('hello VM_0')).toBeDefined();
});
test('renders (optional path param)', async () => {
class VM extends PageViewModelBaseMock {
mount() {
super.mount();
}
}
const View = ({ model }) => {
return _jsx("div", { "data-testid": 'view', children: `hello ${model.id}` });
};
const Component = withPageViewModel(VM, {
generateId: createIdGenerator(),
})(View);
await act(async () => render(_jsx(Component, {})));
expect(screen.getByText('hello VM_0')).toBeDefined();
});
test('renders (no path params)', async () => {
class VM extends PageViewModelBaseMock {
mount() {
super.mount();
}
}
const View = ({ model }) => {
return _jsx("div", { "data-testid": 'view', children: `hello ${model.id}` });
};
const Component = withPageViewModel(VM, {
generateId: createIdGenerator(),
})(View);
await act(async () => render(_jsx(Component, {})));
expect(screen.getByText('hello VM_0')).toBeDefined();
});
});