summaryrefslogtreecommitdiffhomepage
path: root/packages/tool-youtube-transcript/src/format.test.ts
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-26 22:03:19 +0900
committerAdam Malczewski <[email protected]>2026-06-26 22:23:39 +0900
commit727c98c9dae516a2070eb950410314380a20c974 (patch)
tree52aa1022c54f11770be7e4e2a324f0a8b8b8deec /packages/tool-youtube-transcript/src/format.test.ts
parente59dc11f63b1df51142259bb2c406af8c9c8c2bb (diff)
downloaddispatch-727c98c9dae516a2070eb950410314380a20c974.tar.gz
dispatch-727c98c9dae516a2070eb950410314380a20c974.zip
style: switch from tabs to 2-space indentation
Diffstat (limited to 'packages/tool-youtube-transcript/src/format.test.ts')
-rw-r--r--packages/tool-youtube-transcript/src/format.test.ts206
1 files changed, 103 insertions, 103 deletions
diff --git a/packages/tool-youtube-transcript/src/format.test.ts b/packages/tool-youtube-transcript/src/format.test.ts
index 79832da..c615839 100644
--- a/packages/tool-youtube-transcript/src/format.test.ts
+++ b/packages/tool-youtube-transcript/src/format.test.ts
@@ -1,126 +1,126 @@
import { describe, expect, it } from "vitest";
import {
- type CompletedResponse,
- type FailedResponse,
- formatCompleted,
- formatFailed,
- formatQueued,
- formatTimestamp,
- type QueuedResponse,
- truncateOutput,
+ type CompletedResponse,
+ type FailedResponse,
+ formatCompleted,
+ formatFailed,
+ formatQueued,
+ formatTimestamp,
+ type QueuedResponse,
+ truncateOutput,
} from "./format.js";
describe("formatTimestamp", () => {
- it("formats seconds as m:ss", () => {
- expect(formatTimestamp(65)).toBe("1:05");
- expect(formatTimestamp(723)).toBe("12:03");
- });
+ it("formats seconds as m:ss", () => {
+ expect(formatTimestamp(65)).toBe("1:05");
+ expect(formatTimestamp(723)).toBe("12:03");
+ });
- it("handles zero", () => {
- expect(formatTimestamp(0)).toBe("0:00");
- });
+ it("handles zero", () => {
+ expect(formatTimestamp(0)).toBe("0:00");
+ });
- it("handles minutes over 60", () => {
- // 3700s = 61m40s; 4530s = 75m30s.
- expect(formatTimestamp(3700)).toBe("61:40");
- expect(formatTimestamp(4530)).toBe("75:30");
- });
+ it("handles minutes over 60", () => {
+ // 3700s = 61m40s; 4530s = 75m30s.
+ expect(formatTimestamp(3700)).toBe("61:40");
+ expect(formatTimestamp(4530)).toBe("75:30");
+ });
});
describe("formatCompleted", () => {
- it("formats markdown with full text + segments", () => {
- const data: CompletedResponse = {
- status: "completed",
- video_id: "vid123",
- full_text: "Hello world.",
- segments: [
- { text: "Hello world.", start: 0, duration: 2.5 },
- { text: "Second line.", start: 65, duration: 1.0 },
- ],
- };
- const out = formatCompleted("https://youtu.be/vid123", data);
- const expected = [
- "## Transcript for https://youtu.be/vid123",
- "**Video ID:** vid123",
- "",
- "### Full text",
- "",
- "Hello world.",
- "",
- "### Timestamped segments",
- "",
- "[0:00] Hello world.",
- "[1:05] Second line.",
- ].join("\n");
- expect(out).toBe(expected);
- });
+ it("formats markdown with full text + segments", () => {
+ const data: CompletedResponse = {
+ status: "completed",
+ video_id: "vid123",
+ full_text: "Hello world.",
+ segments: [
+ { text: "Hello world.", start: 0, duration: 2.5 },
+ { text: "Second line.", start: 65, duration: 1.0 },
+ ],
+ };
+ const out = formatCompleted("https://youtu.be/vid123", data);
+ const expected = [
+ "## Transcript for https://youtu.be/vid123",
+ "**Video ID:** vid123",
+ "",
+ "### Full text",
+ "",
+ "Hello world.",
+ "",
+ "### Timestamped segments",
+ "",
+ "[0:00] Hello world.",
+ "[1:05] Second line.",
+ ].join("\n");
+ expect(out).toBe(expected);
+ });
});
describe("formatQueued", () => {
- it("returns status + position + estimated time", () => {
- const data: QueuedResponse = {
- status: "queued",
- video_id: "vid456",
- position: 3,
- estimated_seconds: 120,
- };
- const now = () => 1_000_000_000_000;
- const out = formatQueued("https://youtu.be/vid456", data, now);
- const expectedTime = new Date(1_000_000_000_000 + 120_000).toISOString();
- const expected =
- `Transcript not yet available (status: queued, queue position: 3).\n` +
- `Estimated available at: ${expectedTime} (in ~120s).\n` +
- `URL: https://youtu.be/vid456`;
- expect(out).toBe(expected);
- });
+ it("returns status + position + estimated time", () => {
+ const data: QueuedResponse = {
+ status: "queued",
+ video_id: "vid456",
+ position: 3,
+ estimated_seconds: 120,
+ };
+ const now = () => 1_000_000_000_000;
+ const out = formatQueued("https://youtu.be/vid456", data, now);
+ const expectedTime = new Date(1_000_000_000_000 + 120_000).toISOString();
+ const expected =
+ `Transcript not yet available (status: queued, queue position: 3).\n` +
+ `Estimated available at: ${expectedTime} (in ~120s).\n` +
+ `URL: https://youtu.be/vid456`;
+ expect(out).toBe(expected);
+ });
- it("includes the processing status", () => {
- const data: QueuedResponse = {
- status: "processing",
- video_id: "vid457",
- position: 0,
- estimated_seconds: 45.5,
- };
- const out = formatQueued("https://youtu.be/vid457", data, () => 0);
- expect(out).toContain("status: processing");
- expect(out).toContain("queue position: 0");
- expect(out).toContain("(in ~46s)");
- expect(out).toContain("https://youtu.be/vid457");
- });
+ it("includes the processing status", () => {
+ const data: QueuedResponse = {
+ status: "processing",
+ video_id: "vid457",
+ position: 0,
+ estimated_seconds: 45.5,
+ };
+ const out = formatQueued("https://youtu.be/vid457", data, () => 0);
+ expect(out).toContain("status: processing");
+ expect(out).toContain("queue position: 0");
+ expect(out).toContain("(in ~46s)");
+ expect(out).toContain("https://youtu.be/vid457");
+ });
});
describe("formatFailed", () => {
- it("returns error type + details", () => {
- const data: FailedResponse = {
- status: "failed",
- video_id: "vid789",
- error: "Video unavailable",
- error_type: "NotFoundError",
- };
- expect(formatFailed(data)).toBe(
- "Transcript fetch failed. Error type: NotFoundError. Details: Video unavailable",
- );
- });
+ it("returns error type + details", () => {
+ const data: FailedResponse = {
+ status: "failed",
+ video_id: "vid789",
+ error: "Video unavailable",
+ error_type: "NotFoundError",
+ };
+ expect(formatFailed(data)).toBe(
+ "Transcript fetch failed. Error type: NotFoundError. Details: Video unavailable",
+ );
+ });
});
describe("truncateOutput", () => {
- it("truncates with notice when over cap", () => {
- const output = "a".repeat(100);
- const result = truncateOutput(output, 50);
- expect(result).toContain("a".repeat(50));
- expect(result).toContain("[Output truncated: exceeded 50 characters]");
- expect(result.length).toBeLessThan(output.length + 100);
- });
+ it("truncates with notice when over cap", () => {
+ const output = "a".repeat(100);
+ const result = truncateOutput(output, 50);
+ expect(result).toContain("a".repeat(50));
+ expect(result).toContain("[Output truncated: exceeded 50 characters]");
+ expect(result.length).toBeLessThan(output.length + 100);
+ });
- it("returns as-is when under cap", () => {
- expect(truncateOutput("short", 100)).toBe("short");
- expect(truncateOutput("exact", 5)).toBe("exact");
- });
+ it("returns as-is when under cap", () => {
+ expect(truncateOutput("short", 100)).toBe("short");
+ expect(truncateOutput("exact", 5)).toBe("exact");
+ });
- it("includes save path in notice when provided", () => {
- const output = "a".repeat(100);
- const result = truncateOutput(output, 50, "/tmp/dispatch/vid123.txt");
- expect(result).toContain("/tmp/dispatch/vid123.txt");
- expect(result).toContain("use read_file to access it");
- });
+ it("includes save path in notice when provided", () => {
+ const output = "a".repeat(100);
+ const result = truncateOutput(output, 50, "/tmp/dispatch/vid123.txt");
+ expect(result).toContain("/tmp/dispatch/vid123.txt");
+ expect(result).toContain("use read_file to access it");
+ });
});