Files
jhonny-editor/bm/premiere-pro-mcp-main/tests/tools/sequence-preset-coverage.test.ts
T
João Henrique b541f502ba feat: initial commit - Jhonny Editor
- Adicionado estrutura completa do projeto
- Configurado MCP server para Premiere Pro
- Adicionado documentação e skills
- Configurado Gitignore para o projeto
2026-09-08 09:59:31 -04:00

74 lines
2.9 KiB
TypeScript
Executable File

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
const mocks = vi.hoisted(() => ({
existsSync: vi.fn(),
readdirSync: vi.fn(),
statSync: vi.fn(),
}));
vi.mock("node:fs", () => ({
existsSync: mocks.existsSync,
readdirSync: mocks.readdirSync,
statSync: mocks.statSync,
}));
const originalEnv = { ...process.env };
beforeEach(() => {
vi.resetModules();
vi.clearAllMocks();
process.env = { ...originalEnv };
delete process.env.PREMIERE_DEFAULT_SEQUENCE_PRESET;
mocks.existsSync.mockReturnValue(true);
mocks.statSync.mockReturnValue({ isDirectory: () => false });
});
afterEach(() => {
process.env = { ...originalEnv };
vi.restoreAllMocks();
});
describe("default sequence preset discovery", () => {
it("uses and caches an explicit existing preset", async () => {
process.env.PREMIERE_DEFAULT_SEQUENCE_PRESET = "C:\\Presets\\Explicit.sqpreset";
const { findDefaultSequencePreset } = await import("../../src/tools/sequence.js");
expect(findDefaultSequencePreset()).toBe("C:\\Presets\\Explicit.sqpreset");
mocks.existsSync.mockReturnValue(false);
expect(findDefaultSequencePreset()).toBe("C:\\Presets\\Explicit.sqpreset");
});
it("selects the preferred Windows preset while skipping unrelated installs", async () => {
vi.spyOn(process, "platform", "get").mockReturnValue("win32");
mocks.readdirSync.mockImplementation((directory) => {
const path = String(directory);
if (path === "C:\\Program Files\\Adobe") return ["Unrelated", "Adobe Premiere Pro 2026"] as never;
if (path.endsWith("SequencePresets")) {
return ["Other.sqpreset", "UHD (4K) 2160p 25 fps.sqpreset"] as never;
}
return [] as never;
});
const { findDefaultSequencePreset } = await import("../../src/tools/sequence.js");
expect(findDefaultSequencePreset()).toMatch(/UHD \(4K\) 2160p 25 fps\.sqpreset$/);
});
it("walks a macOS app bundle and falls back to any preset", async () => {
vi.spyOn(process, "platform", "get").mockReturnValue("darwin");
mocks.readdirSync.mockImplementation((directory) => {
const path = String(directory);
if (path === "/Applications") return ["Adobe Premiere Pro 2026"] as never;
if (path.endsWith("Adobe Premiere Pro 2026")) return ["Adobe Premiere Pro.app", "README"] as never;
if (path.endsWith("SequencePresets")) return ["Cinema.sqpreset"] as never;
return [] as never;
});
const { findDefaultSequencePreset } = await import("../../src/tools/sequence.js");
expect(findDefaultSequencePreset()).toMatch(/Cinema\.sqpreset$/);
});
it("returns and caches null when installation discovery fails", async () => {
mocks.readdirSync.mockImplementation(() => { throw new Error("access denied"); });
const { findDefaultSequencePreset } = await import("../../src/tools/sequence.js");
expect(findDefaultSequencePreset()).toBeNull();
expect(findDefaultSequencePreset()).toBeNull();
});
});