A music player that connects to your cloud/distributed storage. diffuse.sh
Something went wrong. Try again.
4.8 kB · 165 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166import { describe, it } from "@std/testing/bdd";import { expect } from "@std/expect";
import { testWeb } from "@tests/common/index.ts";
describe("components/transformer/output/bytes/json", () => { it("ready returns false when no output is connected", async () => { const result = await testWeb(async () => { const mod = await import( "~/components/transformer/output/bytes/json/element.js" ); const t = new mod.CLASS(); return t.ready(); });
expect(result).toBe(false); });
it("tracks.collection is loading when no output is connected", async () => { const result = await testWeb(async () => { const mod = await import( "~/components/transformer/output/bytes/json/element.js" ); const t = new mod.CLASS(); return t.tracks.collection().state; });
expect(result).toBe("loading"); });
it("tracks save and collection round-trip", async () => { const result = await testWeb(async () => { const idbMod = await import( "~/components/output/polymorphic/indexed-db/element.js" ); const mod = await import( "~/components/transformer/output/bytes/json/element.js" );
const output = new idbMod.CLASS(); output.id = "test-idb"; document.body.append(output);
const t = new mod.CLASS(); t.setAttribute("output-selector", "#test-idb"); document.body.append(t);
await t.tracks.save([ { $type: "sh.diffuse.output.track", id: "track-1", uri: "https://example.com/track1.mp3", }, { $type: "sh.diffuse.output.track", id: "track-2", uri: "https://example.com/track2.mp3", }, ]);
const col = t.tracks.collection(); if (col.state !== "loaded") return null; return (col.data as Array<{ id: string }>).map((tr) => tr.id); });
expect(result).toEqual(["track-1", "track-2"]); });
it("facets save and collection round-trip", async () => { const result = await testWeb(async () => { const idbMod = await import( "~/components/output/polymorphic/indexed-db/element.js" ); const mod = await import( "~/components/transformer/output/bytes/json/element.js" );
const output = new idbMod.CLASS(); output.id = "test-idb-facets"; document.body.append(output);
const t = new mod.CLASS(); t.setAttribute("output-selector", "#test-idb-facets"); document.body.append(t);
await t.facets.save([ { $type: "sh.diffuse.output.facet", id: "f1", name: "Favourites", }, ]);
const col = t.facets.collection(); if (col.state !== "loaded") return null; return (col.data as Array<{ id: string; name: string }>).map((f) => ({ id: f.id, name: f.name, })); });
expect(result).toEqual([{ id: "f1", name: "Favourites" }]); });
it("settings save and collection round-trip", async () => { const result = await testWeb(async () => { const idbMod = await import( "~/components/output/polymorphic/indexed-db/element.js" ); const mod = await import( "~/components/transformer/output/bytes/json/element.js" );
const output = new idbMod.CLASS(); output.id = "test-idb-settings"; document.body.append(output);
const t = new mod.CLASS(); t.setAttribute("output-selector", "#test-idb-settings"); document.body.append(t);
await t.settings.save([ { $type: "sh.diffuse.output.setting", id: "s1", key: "sh.diffuse.input.disabled.uris", value: "", }, ]);
const col = t.settings.collection(); if (col.state !== "loaded") return null; return (col.data as Array<{ id: string }>).map((s) => s.id); });
expect(result).toEqual(["s1"]); });
it("saving empty array results in empty loaded collection", async () => { const result = await testWeb(async () => { const idbMod = await import( "~/components/output/polymorphic/indexed-db/element.js" ); const mod = await import( "~/components/transformer/output/bytes/json/element.js" );
const output = new idbMod.CLASS(); output.id = "test-idb-empty"; document.body.append(output);
const t = new mod.CLASS(); t.setAttribute("output-selector", "#test-idb-empty"); document.body.append(t);
await t.tracks.save([]);
const col = t.tracks.collection(); if (col.state !== "loaded") return null; return (col.data as unknown[]).length; });
expect(result).toBe(0); });});