Files
plimi/src/tools/qr-code-generator/run.test.ts
2026-06-02 19:32:51 +02:00

52 lines
1.7 KiB
TypeScript

import { describe, it, expect, vi } from "vitest";
import { runQrCodeGenerator } from "./run";
import type { ToolContext } from "../../core/plugins/plugin-types";
describe("QR Code Generator Plugin", () => {
const mockContext: ToolContext = {
signal: new AbortController().signal,
reportProgress: vi.fn(),
logger: {
info: vi.fn(),
warn: vi.fn(),
error: vi.fn(),
},
};
it("should generate SVG QR Code successfully", async () => {
const result = await runQrCodeGenerator(
{ text: "https://plimi.app" },
{ size: 256, margin: 4, errorCorrection: "M", format: "svg" },
mockContext
);
expect(result.type).toBe("files");
if (result.type === "files") {
expect(result.files).toHaveLength(1);
expect(result.files[0].name).toBe("qrcode.svg");
expect(result.files[0].mimeType).toBe("image/svg+xml");
expect(result.files[0].blob).toBeInstanceOf(Blob);
}
});
it("should generate PNG QR Code successfully", async () => {
const result = await runQrCodeGenerator(
{ text: "https://plimi.app" },
{ size: 256, margin: 4, errorCorrection: "M", format: "png" },
mockContext
);
expect(result.type).toBe("files");
if (result.type === "files") {
expect(result.files).toHaveLength(1);
expect(result.files[0].name).toBe("qrcode.png");
expect(result.files[0].mimeType).toBe("image/png");
expect(result.files[0].blob).toBeInstanceOf(Blob);
}
});
it("should throw error for empty input text", async () => {
await expect(
runQrCodeGenerator({ text: "" }, { size: 256, margin: 4, errorCorrection: "M", format: "svg" }, mockContext)
).rejects.toThrow("Please enter text or a URL to encode in the QR Code.");
});
});