Add initial batch of Dialog tests
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
type HandlerType = (event?: CustomEvent) => any;
|
||||
interface ComponentProps {
|
||||
onChange?: HandlerType;
|
||||
onClose?: HandlerType;
|
||||
onFocus?: HandlerType;
|
||||
}
|
||||
type SingleComponent = [SvelteComponent, ComponentProps, TestRendererProps];
|
||||
export type TestRendererProps =
|
||||
@@ -9,22 +11,30 @@
|
||||
| string
|
||||
| SingleComponent
|
||||
| SingleComponent[];
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import type { SvelteComponent } from "svelte";
|
||||
|
||||
function isSingleComponent(
|
||||
props: SingleComponent | SingleComponent[]
|
||||
): props is SingleComponent {
|
||||
return Array.isArray(props) && !Array.isArray(props[0]);
|
||||
}
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import type { SvelteComponent } from "svelte";
|
||||
|
||||
export let allProps: TestRendererProps;
|
||||
|
||||
let spreadProps = {};
|
||||
let onChange: HandlerType = () => {};
|
||||
let onClose: HandlerType = () => {};
|
||||
let onFocus: HandlerType = () => {};
|
||||
if (allProps && typeof allProps !== "string" && isSingleComponent(allProps)) {
|
||||
if (allProps[1].onChange) {
|
||||
onChange = allProps[1].onChange;
|
||||
}
|
||||
({
|
||||
onChange = onChange,
|
||||
onClose = onClose,
|
||||
onFocus = onFocus,
|
||||
...spreadProps
|
||||
} = allProps[1] || {});
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -36,7 +46,13 @@
|
||||
<svelte:self allProps={childProps} />
|
||||
{/each}
|
||||
{:else}
|
||||
<svelte:component this={allProps[0]} {...allProps[1]} on:change={onChange}>
|
||||
<svelte:component
|
||||
this={allProps[0]}
|
||||
{...spreadProps}
|
||||
on:change={onChange}
|
||||
on:close={onClose}
|
||||
on:focus={onFocus}
|
||||
>
|
||||
<svelte:self allProps={allProps[2]} />
|
||||
</svelte:component>
|
||||
{/if}
|
||||
|
||||
17
src/lib/test-utils/suppress-console-logs.ts
Normal file
17
src/lib/test-utils/suppress-console-logs.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
type FunctionPropertyNames<T> = {
|
||||
[K in keyof T]: T[K] extends (...args: any[]) => any ? K : never
|
||||
}[keyof T] &
|
||||
string
|
||||
|
||||
export function suppressConsoleLogs<T extends unknown[]>(
|
||||
cb: (...args: T) => unknown,
|
||||
type: FunctionPropertyNames<typeof global.console> = 'error'
|
||||
) {
|
||||
return (...args: T) => {
|
||||
let spy = jest.spyOn(global.console, type).mockImplementation(jest.fn())
|
||||
|
||||
return new Promise<unknown>((resolve, reject) => {
|
||||
Promise.resolve(cb(...args)).then(resolve, reject)
|
||||
}).finally(() => spy.mockRestore())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user