/ tests / utils / fonts.test.ts
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  });