From 7966d6ed693b32c1e07b66727e063464bb56b2aa Mon Sep 17 00:00:00 2001 From: simojenki Date: Thu, 8 Apr 2021 12:34:27 +1000 Subject: [PATCH] Tests for recently added and recently played --- tests/smapi.test.ts | 86 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/tests/smapi.test.ts b/tests/smapi.test.ts index cd832a6..266b0bc 100644 --- a/tests/smapi.test.ts +++ b/tests/smapi.test.ts @@ -933,6 +933,92 @@ describe("api", () => { }); }); + describe("asking for recently played albums", () => { + const recentlyPlayed = [rock2, rock1, pop2]; + + beforeEach(() => { + musicLibrary.albums.mockResolvedValue({ + results: recentlyPlayed, + total: allAlbums.length, + }); + }); + + it("should return some", async () => { + const paging = { + index: 0, + count: 100, + }; + + const result = await ws.getMetadataAsync({ + id: "recentlyPlayed", + ...paging, + }); + + expect(result[0]).toEqual( + getMetadataResult({ + mediaCollection: recentlyPlayed.map((it) => ({ + itemType: "album", + id: `album:${it.id}`, + title: it.name, + albumArtURI: defaultAlbumArtURI(rootUrl, accessToken, it), + canPlay: true, + })), + index: 0, + total: 6, + }) + ); + + expect(musicLibrary.albums).toHaveBeenCalledWith({ + type: "frequent", + _index: paging.index, + _count: paging.count, + }); + }); + }); + + describe("asking for recently added albums", () => { + const recentlyAdded = [pop4, pop3, pop2]; + + beforeEach(() => { + musicLibrary.albums.mockResolvedValue({ + results: recentlyAdded, + total: allAlbums.length, + }); + }); + + it("should return some", async () => { + const paging = { + index: 0, + count: 100, + }; + + const result = await ws.getMetadataAsync({ + id: "recentlyAdded", + ...paging, + }); + + expect(result[0]).toEqual( + getMetadataResult({ + mediaCollection: recentlyAdded.map((it) => ({ + itemType: "album", + id: `album:${it.id}`, + title: it.name, + albumArtURI: defaultAlbumArtURI(rootUrl, accessToken, it), + canPlay: true, + })), + index: 0, + total: 6, + }) + ); + + expect(musicLibrary.albums).toHaveBeenCalledWith({ + type: "newest", + _index: paging.index, + _count: paging.count, + }); + }); + }); + describe("asking for all albums", () => { beforeEach(() => { musicLibrary.albums.mockResolvedValue({