import { describe, expect, it, mock } from "bun:test"; import { createPostmarkClient } from "./client.js"; const mockSendEmail = mock(() => Promise.resolve({ MessageID: "test-message-id-123" }), ); void mock.module("postmark", () => ({ ServerClient: class MockServerClient { sendEmail = mockSendEmail; }, })); describe("createPostmarkClient", () => { it("should create an EmailClient with sendEmail method", () => { const client = createPostmarkClient("test-api-key"); expect(typeof client.sendEmail).toBe("function"); }); it("should throw an error if API key is empty", () => { expect(() => createPostmarkClient("")).toThrow( "Postmark API key is required", ); }); it("should convert our interface to Postmark format and return converted result", async () => { const client = createPostmarkClient("test-api-key"); const result = await client.sendEmail({ from: "sender@example.com", to: "recipient@example.com", subject: "Test Subject", htmlBody: "
HTML
", textBody: "Text", }); expect(mockSendEmail).toHaveBeenCalledWith({ From: "sender@example.com", To: "recipient@example.com", Subject: "Test Subject", HtmlBody: "HTML
", TextBody: "Text", }); expect(result.messageId).toBe("test-message-id-123"); }); });