@rayners/foundry-test-utils
Version:
Shared testing utilities and mocks for FoundryVTT modules
134 lines (133 loc) • 4.17 kB
TypeScript
/**
* 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;