import { html, stubNetwork } from "../../helpers.ts";
import { assert, assertEquals, assertFalse } from "@std/assert";
import { fetchRichContent } from "../../../services/rich-content-service.ts";
import { bandcampProvider } from "../../../remote/providers/bandcamp.ts";
Deno.test("bandcamp provider", async () => {
using _ = stubNetwork(() =>
html(`
`)
);
const bc = await fetchRichContent("https://artist.bandcamp.com/album/a");
assertEquals(bc?.type, "bandcamp");
assertEquals(bc?.title, "Album");
assertEquals(bc?.embedUrl, "https://bandcamp.com/EmbeddedPlayer/album=1");
});
Deno.test("bandcamp provider: bandcamp.com and its subdomains only", () => {
assert(bandcampProvider.matches("https://artist.bandcamp.com/album/x"));
assertFalse(
bandcampProvider.matches("https://bandcamp.com.evil.example/album/x"),
);
});
Deno.test("bandcamp provider: falls back like any page, embeds only Bandcamp's player", async () => {
using _ = stubNetwork(() =>
html(`
`)
);
const bc = await fetchRichContent("https://artist.bandcamp.com/album/b");
assertEquals(bc?.description, "An album by Artist");
assertEquals(bc?.siteName, "Bandcamp");
assertEquals(bc?.embedUrl, undefined);
});