From d17ef212ab0a11a0991dae427b2289115658b978 Mon Sep 17 00:00:00 2001 From: Deluan Date: Thu, 3 Sep 2026 23:30:39 -0400 Subject: [PATCH] feat(ui): add an explainArtwork data provider method --- ui/src/dataProvider/wrapperDataProvider.js | 4 ++++ .../dataProvider/wrapperDataProvider.test.js | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/ui/src/dataProvider/wrapperDataProvider.js b/ui/src/dataProvider/wrapperDataProvider.js index e79beb787..3af601adf 100644 --- a/ui/src/dataProvider/wrapperDataProvider.js +++ b/ui/src/dataProvider/wrapperDataProvider.js @@ -229,6 +229,10 @@ const wrapperDataProvider = { httpClient(`${REST_URL}/metadata/${REFRESH_KIND[resource]}/${id}/refresh`, { method: 'POST', }).then(() => ({ data: { id } })), + explainArtwork: (resource, id) => + httpClient( + `${REST_URL}/artwork/explain?kind=${REFRESH_KIND[resource]}&id=${encodeURIComponent(id)}`, + ).then(({ json }) => ({ data: json })), } export default wrapperDataProvider diff --git a/ui/src/dataProvider/wrapperDataProvider.test.js b/ui/src/dataProvider/wrapperDataProvider.test.js index 4225a5a54..cf0e3a7c1 100644 --- a/ui/src/dataProvider/wrapperDataProvider.test.js +++ b/ui/src/dataProvider/wrapperDataProvider.test.js @@ -120,4 +120,23 @@ describe('wrapperDataProvider', () => { ).resolves.toEqual({ data: { id: 'al-1' } }) }) }) + + describe('explainArtwork', () => { + it('requests the artist kind prefix', async () => { + mockHttpClient.mockResolvedValue({ json: { name: 'Radiohead' } }) + const result = await wrapperDataProvider.explainArtwork('artist', 'ar-1') + expect(mockHttpClient).toHaveBeenCalledWith( + expect.stringContaining('/artwork/explain?kind=ar&id=ar-1'), + ) + expect(result).toEqual({ data: { name: 'Radiohead' } }) + }) + + it('requests the album kind prefix', async () => { + mockHttpClient.mockResolvedValue({ json: {} }) + await wrapperDataProvider.explainArtwork('album', 'al-1') + expect(mockHttpClient).toHaveBeenCalledWith( + expect.stringContaining('kind=al&id=al-1'), + ) + }) + }) })