fonts.test.ts
1 import { StandardFonts } from "@cantoo/pdf-lib"; 2 import { describe, expect, test } from "bun:test"; 3 import { font, Fonts, MemoryFont } from "~/utils/fonts"; 4 5 describe("fonts", () => { 6 describe("MemoryFont", () => { 7 test("should create a MemoryFont with a unique ID", () => { 8 const font1 = new MemoryFont(StandardFonts.Helvetica); 9 const font2 = new MemoryFont(StandardFonts.TimesRoman); 10 11 expect(font1.id).toBeDefined(); 12 expect(font2.id).toBeDefined(); 13 expect(font1.id).not.toBe(font2.id); 14 expect(typeof font1.id).toBe("string"); 15 expect(typeof font2.id).toBe("string"); 16 }); 17 18 test("should store the font value", () => { 19 const fontValue = StandardFonts.Helvetica; 20 const memoryFont = new MemoryFont(fontValue); 21 22 expect(memoryFont.value).toBe(fontValue); 23 }); 24 25 test("should work with different font types", () => { 26 const standardFont = new MemoryFont(StandardFonts.CourierBold); 27 const stringFont = new MemoryFont("CustomFont"); 28 const arrayBufferFont = new MemoryFont(new ArrayBuffer(100)); 29 const uint8ArrayFont = new MemoryFont(new Uint8Array(50)); 30 31 expect(standardFont.value).toBe(StandardFonts.CourierBold); 32 expect(stringFont.value).toBe("CustomFont"); 33 expect(arrayBufferFont.value).toBeInstanceOf(ArrayBuffer); 34 expect(uint8ArrayFont.value).toBeInstanceOf(Uint8Array); 35 }); 36 }); 37 38 describe("font helper function", () => { 39 test("should create a MemoryFont instance", () => { 40 const result = font(StandardFonts.Helvetica); 41 42 expect(result).toBeInstanceOf(MemoryFont); 43 expect(result.value).toBe(StandardFonts.Helvetica); 44 expect(result.id).toBeDefined(); 45 }); 46 47 test("should create different instances for same font", () => { 48 const font1 = font(StandardFonts.Helvetica); 49 const font2 = font(StandardFonts.Helvetica); 50 51 expect(font1.id).not.toBe(font2.id); 52 expect(font1.value).toBe(font2.value); 53 }); 54 }); 55 56 describe("Fonts export", () => { 57 test("should export StandardFonts as Fonts", () => { 58 expect(Fonts).toBe(StandardFonts); 59 expect(Fonts.Helvetica).toBeDefined(); 60 expect(Fonts.TimesRoman).toBeDefined(); 61 expect(Fonts.Courier).toBeDefined(); 62 }); 63 }); 64 });