test: add tests for states

This commit is contained in:
2026-02-08 01:47:36 +05:00
parent d151d70b0c
commit 3cce3c2abc
10 changed files with 1113 additions and 143 deletions
-79
View File
@@ -1,79 +0,0 @@
import { vi } from "vitest";
// Extend global type
declare global {
var testUtils: {
createMockFile: (name?: string, size?: number, type?: string) => File;
createMockPanel: (overrides?: any) => any;
waitFor: (ms: number) => Promise<void>;
};
}
// Mock localStorage for testing
const localStorageMock = {
getItem: vi.fn(),
setItem: vi.fn(),
removeItem: vi.fn(),
clear: vi.fn(),
length: 0,
key: vi.fn(),
};
Object.defineProperty(window, "localStorage", {
value: localStorageMock,
});
// Mock crypto for testing
Object.defineProperty(window, "crypto", {
value: {
randomUUID: () => "test-uuid-12345",
},
});
// Mock FileReader for image upload testing
Object.defineProperty(window, "FileReader", {
value: vi.fn(() => ({
readAsDataURL: vi.fn(),
onload: null,
onerror: null,
result: "data:image/jpeg;base64,/9j/4AAQSkZJRg==",
})),
});
// Global test utilities
global.testUtils = {
createMockFile: (name = "test.jpg", size = 1024, type = "image/jpeg") => {
const blob = new Blob([new ArrayBuffer(size)], { type });
return new File([blob], name, { type });
},
createMockPanel: (overrides = {}) => ({
id: "test-panel-id",
backgroundImage: "/backgrounds/b1.jpg",
text: {
id: "test-text-id",
text: "Test Panel",
fontSize: 18,
fontFamily: "Arial",
color: "#ffffff",
textAlign: "center" as const,
paddingX: 10,
verticalOffset: 0,
},
height: 100,
createdAt: new Date("2024-01-01"),
updatedAt: new Date("2024-01-01"),
...overrides,
}),
waitFor: (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)),
};
// Export cleanup function for use in individual test files
export function cleanupMocks() {
vi.clearAllMocks();
localStorageMock.getItem.mockClear();
localStorageMock.setItem.mockClear();
localStorageMock.removeItem.mockClear();
localStorageMock.clear.mockClear();
}