A music player that connects to your cloud/distributed storage.
1import { describe, it } from "@std/testing/bdd";
2import { expect } from "@std/expect";
3
4import { testWeb } from "@tests/common/index.ts";
5import { trackA, trackB } from "~/testing/sample/tracks.js";
6
7describe("components/processor/search", () => {
8 it("finds tracks by album", async () => {
9 const results = await testWeb(async () => {
10 const SearchProcessor = await import(
11 "~/components/processor/search/element.js"
12 );
13 const processor = new SearchProcessor.CLASS();
14
15 document.body.append(processor);
16
17 // Add sample tracks to the supply first
18 const { tracks } = await import("~/testing/sample/tracks.js");
19 await processor.supply({ tracks });
20
21 // Search for a specific term
22 return processor.search({ term: tracks[1]?.tags?.album });
23 });
24
25 expect(results[0]?.id).toBe(trackB.id);
26 });
27
28 it("finds tracks by artist", async () => {
29 const results = await testWeb(async () => {
30 const SearchProcessor = await import(
31 "~/components/processor/search/element.js"
32 );
33 const processor = new SearchProcessor.CLASS();
34
35 document.body.append(processor);
36
37 // Add sample tracks to the supply first
38 const { tracks } = await import("~/testing/sample/tracks.js");
39 await processor.supply({ tracks });
40
41 // Search for a specific term
42 return processor.search({ term: tracks[0]?.tags?.artist });
43 });
44
45 expect(results[0]?.id).toBe(trackA.id);
46 });
47
48 it("finds tracks by title", async () => {
49 const results = await testWeb(async () => {
50 const SearchProcessor = await import(
51 "~/components/processor/search/element.js"
52 );
53 const processor = new SearchProcessor.CLASS();
54
55 document.body.append(processor);
56
57 // Add sample tracks to the supply first
58 const { tracks } = await import("~/testing/sample/tracks.js");
59 await processor.supply({ tracks });
60
61 // Search for a specific term
62 return processor.search({ term: tracks[1]?.tags?.title });
63 });
64
65 expect(results[0]?.id).toBe(trackB.id);
66 });
67});