- Introduced async demo functionality in the README, allowing for asynchronous data preparation before rendering components. - Updated WccDashboard, WccProperties, and WccSidebar to support Promise-based template factories. - Implemented resolveTemplateFactory to handle both synchronous and asynchronous template results. - Added tests for resolveTemplateFactory to ensure correct behavior for both sync and async templates. - Updated pnpm workspace configuration.
23 lines
829 B
TypeScript
23 lines
829 B
TypeScript
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
|
import { resolveTemplateFactory } from '../ts_web/elements/wcctools.helpers.js';
|
|
import { html } from 'lit';
|
|
|
|
const waitFor = (durationMs: number) => new Promise(resolve => setTimeout(resolve, durationMs));
|
|
|
|
tap.test('resolveTemplateFactory returns sync TemplateResult', async () => {
|
|
const template = html`<p>sync demo</p>`;
|
|
const resolvedTemplate = await resolveTemplateFactory(() => template);
|
|
expect(resolvedTemplate).toEqual(template);
|
|
});
|
|
|
|
tap.test('resolveTemplateFactory awaits async TemplateResult', async () => {
|
|
const template = html`<p>async demo</p>`;
|
|
const resolvedTemplate = await resolveTemplateFactory(async () => {
|
|
await waitFor(5);
|
|
return template;
|
|
});
|
|
expect(resolvedTemplate).toEqual(template);
|
|
});
|
|
|
|
export default tap.start();
|