UNPKG

houser-js-utils

Version:

A comprehensive collection of TypeScript utility functions for common development tasks including array manipulation, string processing, date handling, random number generation, validation, and much more.

1 lines 8.51 kB
{"version":3,"file":"TestUtils.mjs","sources":["../src/TestUtils.ts"],"sourcesContent":["/**\n * @module TestUtils\n * @description A collection of utility functions for testing, mocking, and test data generation.\n * @example\n * ```typescript\n * import { TestUtils } from 'houser-js-utils';\n *\n * // Generate test data\n * const testUser = TestUtils.createTestDataGenerator({ name: 'John', age: 30 });\n *\n * // Create mock function\n * const mockFn = TestUtils.createMock();\n *\n * // Wait for async operations\n * await TestUtils.waitFor(() => element.isVisible());\n * ```\n */\n\nexport const TestUtils = {\n /**\n * Creates a test animation event\n * @param type - Event type\n * @param options - Event options\n * @returns Test animation event\n */\n createTestAnimationEvent(\n type: string,\n options: AnimationEventInit = {}\n ): AnimationEvent {\n return new AnimationEvent(type, options);\n },\n\n /**\n * Creates a test clipboard event\n * @param type - Event type\n * @param options - Event options\n * @returns Test clipboard event\n */\n createTestClipboardEvent(\n type: string,\n options: ClipboardEventInit = {}\n ): ClipboardEvent {\n return new ClipboardEvent(type, options);\n },\n\n /**\n * Creates a test data array generator\n * @param template - Template object\n * @returns Function that generates an array of test data\n */\n createTestDataArrayGenerator<T extends object>(template: T) {\n return (count: number, overrides: Partial<T> = {}): T[] => {\n return Array.from({ length: count }, () => ({\n ...template,\n ...overrides,\n }));\n };\n },\n\n /**\n * Creates a test data generator\n * @param template - Template object\n * @returns Function that generates test data\n */\n createTestDataGenerator<T extends object>(template: T) {\n return (overrides: Partial<T> = {}): T => ({\n ...template,\n ...overrides,\n });\n },\n\n /**\n * Creates a test drag event\n * @param type - Event type\n * @param options - Event options\n * @returns Test drag event\n */\n createTestDragEvent(type: string, options: DragEventInit = {}): DragEvent {\n return new DragEvent(type, options);\n },\n\n /**\n * Creates a test event\n * @param type - Event type\n * @param options - Event options\n * @returns Test event\n */\n createTestEvent(type: string, options: EventInit = {}): Event {\n return new Event(type, options);\n },\n\n /**\n * Creates a test focus event\n * @param type - Event type\n * @param options - Event options\n * @returns Test focus event\n */\n createTestFocusEvent(type: string, options: FocusEventInit = {}): FocusEvent {\n return new FocusEvent(type, options);\n },\n\n /**\n * Creates a test input event\n * @param type - Event type\n * @param options - Event options\n * @returns Test input event\n */\n createTestInputEvent(type: string, options: InputEventInit = {}): InputEvent {\n return new InputEvent(type, options);\n },\n\n /**\n * Creates a test keyboard event\n * @param type - Event type\n * @param options - Event options\n * @returns Test keyboard event\n */\n createTestKeyboardEvent(\n type: string,\n options: KeyboardEventInit = {}\n ): KeyboardEvent {\n return new KeyboardEvent(type, options);\n },\n\n /**\n * Creates a test mouse event\n * @param type - Event type\n * @param options - Event options\n * @returns Test mouse event\n */\n createTestMouseEvent(type: string, options: MouseEventInit = {}): MouseEvent {\n return new MouseEvent(type, options);\n },\n\n /**\n * Creates a test touch event\n * @param type - Event type\n * @param options - Event options\n * @returns Test touch event\n */\n createTestTouchEvent(type: string, options: TouchEventInit = {}): TouchEvent {\n return new TouchEvent(type, options);\n },\n\n /**\n * Creates a test transition event\n * @param type - Event type\n * @param options - Event options\n * @returns Test transition event\n */\n createTestTransitionEvent(\n type: string,\n options: TransitionEventInit = {}\n ): TransitionEvent {\n return new TransitionEvent(type, options);\n },\n\n /**\n * Creates a mock error promise\n * @param error - Error to reject with\n * @param delay - Delay in milliseconds\n * @returns Mock error promise\n */\n createMockErrorPromise(error: Error, delay = 0): Promise<never> {\n return new Promise((_, reject) => setTimeout(() => reject(error), delay));\n },\n\n /**\n * Creates a mock function\n * @param implementation - Optional implementation function\n * @returns Mock function\n */\n createMock<T extends (...args: any[]) => any>(implementation?: T): T {\n return implementation || ((() => {}) as T);\n },\n\n /**\n * Creates a mock object\n * @param template - Template object to mock\n * @returns Mock object\n */\n createMockObject<T extends object>(template: T): T {\n return template;\n },\n\n /**\n * Creates a mock promise\n * @param value - Value to resolve with\n * @param delay - Delay in milliseconds\n * @returns Mock promise\n */\n createMockPromise<T>(value: T, delay = 0): Promise<T> {\n return new Promise((resolve) => setTimeout(() => resolve(value), delay));\n },\n\n /**\n * Waits for a number of milliseconds\n * @param ms - Milliseconds to wait\n * @returns Promise that resolves after the delay\n */\n async wait(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n },\n\n /**\n * Waits for a condition to be true\n * @param condition - Function that returns a boolean\n * @param timeout - Timeout in milliseconds\n * @param interval - Check interval in milliseconds\n * @returns Promise that resolves when condition is true\n */\n async waitFor(\n condition: () => boolean,\n timeout = 5000,\n interval = 100\n ): Promise<void> {\n const start = Date.now();\n while (Date.now() - start < timeout) {\n if (condition()) {\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n throw new Error(\"Timeout waiting for condition\");\n },\n};\n"],"names":[],"mappings":"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"}