UNPKG

@green-code/music-track-data

Version:

A music API. Provides you an array of music track data including lyrics, album, artist and title, simply by performing a fuzzy search on the lyrics or title.

48 lines (40 loc) 1.75 kB
const expect = require("unexpected"); const {getTracks} = require("../index") describe("getTracks", () => { const trackName = "Times Like These"; context("when searching a known hit", () => { let tracks; beforeEach(async () => { tracks = await getTracks(trackName); }); it("should return a non-empty array", () => { expect(tracks, "to be an", "array"); expect(tracks, "to be non-empty"); }); it("should return an array of track objects", () => { tracks.forEach(track => { expect(track, "to be an", "object"); expect(track, "to only have properties", ["id", "title", "artist", "preview", "album"]); expect(track.id, "to be greater than or equal to", 0); expect(track.title, "to contain", trackName); expect(track.artist, "to be a", "string"); expect(track.preview, "to start with", "http"); expect(track.album, "to be an", "object"); expect(track.album.title, "to be a", "string"); expect(track.album.artwork, "to start with", "http"); }); }); }); context("when searching an unknown track", () => { it("should return an empty array", async () => { const tracks = await getTracks("TRACK_NAME_DOES_NOT_EXIST-sdflkjbsdkjbsdfkjbnsdfbkjnsdfkbjn"); expect(tracks, "to be empty"); }); }); context("when not passing a track name", () => { it("should return an error", async () => { const tracks = await getTracks(); expect(tracks, "to have message", "Track name required"); }); }); });