UNPKG

@rayners/foundry-test-utils

Version:

Shared testing utilities and mocks for FoundryVTT modules

134 lines (133 loc) 4.17 kB
/** * Comprehensive Foundry VTT Mock Setup * * This file provides a complete mock environment for Foundry VTT testing. * It can be shared between multiple projects that need Foundry mocks. * * Usage: * ```typescript * import './foundry-mocks'; * // Or import specific parts: * import { setupFoundryMocks, mockFoundryDocuments } from './foundry-mocks'; * ``` */ import { vi } from 'vitest'; export interface MockScene { id: string; name: string; width: number; height: number; regions: Map<string, MockRegion>; getFlag: ReturnType<typeof vi.fn>; setFlag: ReturnType<typeof vi.fn>; unsetFlag: ReturnType<typeof vi.fn>; createEmbeddedDocuments: ReturnType<typeof vi.fn>; deleteEmbeddedDocuments: ReturnType<typeof vi.fn>; grid: { units: string; type: number; }; } export interface MockRegion { id: string; name: string; shapes: any[]; flags: Record<string, any>; getFlag: ReturnType<typeof vi.fn>; setFlag: ReturnType<typeof vi.fn>; unsetFlag: ReturnType<typeof vi.fn>; update: ReturnType<typeof vi.fn>; delete: ReturnType<typeof vi.fn>; testPoint: ReturnType<typeof vi.fn>; } export interface MockActor { id: string; name: string; type: string; uuid: string; system: any; items: MockItem[]; flags: Record<string, any>; getFlag: ReturnType<typeof vi.fn>; setFlag: ReturnType<typeof vi.fn>; unsetFlag: ReturnType<typeof vi.fn>; update: ReturnType<typeof vi.fn>; delete: ReturnType<typeof vi.fn>; } export interface MockItem { id: string; name: string; type: string; system: any; flags: Record<string, any>; } export interface MockUser { id: string; isGM: boolean; getFlag: ReturnType<typeof vi.fn>; setFlag: ReturnType<typeof vi.fn>; unsetFlag: ReturnType<typeof vi.fn>; } export interface MockRollTable { id: string; name: string; folder: string | null; results: any[]; flags: Record<string, any>; roll: ReturnType<typeof vi.fn>; getFlag: ReturnType<typeof vi.fn>; setFlag: ReturnType<typeof vi.fn>; } export interface MockFolder { id: string; name: string; type: string; color: string; description: string; } export declare function createMockScene(options?: Partial<MockScene>): MockScene; export declare function createMockRegion(options?: Partial<MockRegion>): MockRegion; export declare function createMockActor(options?: Partial<MockActor>): MockActor; export declare function createMockUser(options?: Partial<MockUser>): MockUser; export declare function createMockRollTable(options?: Partial<MockRollTable>): MockRollTable; export declare function createMockFolder(options?: Partial<MockFolder>): MockFolder; export declare class MockActorClass { static create(data: any): Promise<MockActor>; static createDocuments(data: any[]): Promise<MockActor[]>; } export declare class MockRollTableClass { static create(data: any): Promise<MockRollTable>; static createDocuments(data: any[]): Promise<MockRollTable[]>; } export declare class MockFolderClass { static create(data: any): Promise<MockFolder>; static createDocuments(data: any[]): Promise<MockFolder[]>; } export declare class MockDialogClass { constructor(options?: any); options: any; static confirm(options?: any): Promise<boolean>; static prompt(options?: any): Promise<any>; render(force?: boolean): void; close(): void; } export declare function setupFoundryGlobals(): void; export declare function setupFoundryDocuments(): void; export declare function setupFoundryGame(options?: { systemId?: string; user?: Partial<MockUser>; scenes?: MockScene[]; }): void; export declare function setupFoundryUI(): void; export declare function setupFoundryCanvas(scene?: MockScene): void; export declare function setupFoundryConfig(): void; /** * Set up a complete Foundry VTT mock environment */ export declare function setupFoundryMocks(options?: { systemId?: string; user?: Partial<MockUser>; scenes?: MockScene[]; includeCanvas?: boolean; includeRegions?: boolean; }): void;