59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
|
|
import { describe, it, expect } from "vitest";
|
||
|
|
import { formatCredits } from "../../src/formatters/credits.js";
|
||
|
|
import type { CreditsResponse } from "../../src/types.js";
|
||
|
|
|
||
|
|
describe("formatCredits", () => {
|
||
|
|
it("formats director and cast", () => {
|
||
|
|
const data: CreditsResponse = {
|
||
|
|
contentId: 42,
|
||
|
|
director: "Christopher Nolan",
|
||
|
|
cast: [
|
||
|
|
{ name: "Leonardo DiCaprio", character: "Cobb", profileUrl: null },
|
||
|
|
{ name: "Tom Hardy", character: "Eames", profileUrl: null },
|
||
|
|
],
|
||
|
|
};
|
||
|
|
|
||
|
|
const text = formatCredits(data);
|
||
|
|
expect(text).toContain("Credits for content #42");
|
||
|
|
expect(text).toContain("Director: Christopher Nolan");
|
||
|
|
expect(text).toContain("Leonardo DiCaprio as Cobb");
|
||
|
|
expect(text).toContain("Tom Hardy as Eames");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("handles missing director", () => {
|
||
|
|
const data: CreditsResponse = {
|
||
|
|
contentId: 10,
|
||
|
|
director: null,
|
||
|
|
cast: [{ name: "Actor One", character: "Role", profileUrl: null }],
|
||
|
|
};
|
||
|
|
|
||
|
|
const text = formatCredits(data);
|
||
|
|
expect(text).not.toContain("Director:");
|
||
|
|
expect(text).toContain("Actor One as Role");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("handles empty cast", () => {
|
||
|
|
const data: CreditsResponse = {
|
||
|
|
contentId: 5,
|
||
|
|
director: "Some Director",
|
||
|
|
cast: [],
|
||
|
|
};
|
||
|
|
|
||
|
|
const text = formatCredits(data);
|
||
|
|
expect(text).toContain("Director: Some Director");
|
||
|
|
expect(text).toContain("No cast information available");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("handles cast member without character name", () => {
|
||
|
|
const data: CreditsResponse = {
|
||
|
|
contentId: 1,
|
||
|
|
director: null,
|
||
|
|
cast: [{ name: "Mystery Actor", character: "", profileUrl: null }],
|
||
|
|
};
|
||
|
|
|
||
|
|
const text = formatCredits(data);
|
||
|
|
expect(text).toContain("- Mystery Actor");
|
||
|
|
expect(text).not.toContain(" as ");
|
||
|
|
});
|
||
|
|
});
|