From 6fd30ed51a6b216292f0dbd46ee89156e04db9a6 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 10 May 2020 11:20:40 +0200 Subject: [PATCH] Improved how tags are exposed by the ApiClient when listing tags --- src/tags/reducers/tagsList.js | 4 ++-- src/utils/services/ShlinkApiClient.js | 3 ++- test/tags/reducers/tagsList.test.js | 2 +- test/utils/services/ShlinkApiClient.test.js | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/tags/reducers/tagsList.js b/src/tags/reducers/tagsList.js index 03d36749..e810f2c7 100644 --- a/src/tags/reducers/tagsList.js +++ b/src/tags/reducers/tagsList.js @@ -61,14 +61,14 @@ export const listTags = (buildShlinkApiClient, force = true) => () => async (dis try { const { listTags } = buildShlinkApiClient(getState); - const { stats = [], data } = await listTags(); + const { tags, stats = [] } = await listTags(); const processedStats = stats.reduce((acc, { tag, shortUrlsCount, visitsCount }) => { acc[tag] = { shortUrlsCount, visitsCount }; return acc; }, {}); - dispatch({ tags: data, stats: processedStats, type: LIST_TAGS }); + dispatch({ tags, stats: processedStats, type: LIST_TAGS }); } catch (e) { dispatch({ type: LIST_TAGS_ERROR }); } diff --git a/src/utils/services/ShlinkApiClient.js b/src/utils/services/ShlinkApiClient.js index 5bf5005a..76d1cd56 100644 --- a/src/utils/services/ShlinkApiClient.js +++ b/src/utils/services/ShlinkApiClient.js @@ -54,7 +54,8 @@ export default class ShlinkApiClient { listTags = () => this._performRequest('/tags', 'GET', { withStats: 'true' }) - .then((resp) => resp.data.tags); + .then((resp) => resp.data.tags) + .then(({ data, stats }) => ({ tags: data, stats })); deleteTags = (tags) => this._performRequest('/tags', 'DELETE', { tags }) diff --git a/test/tags/reducers/tagsList.test.js b/test/tags/reducers/tagsList.test.js index c5b04db0..c312fea8 100644 --- a/test/tags/reducers/tagsList.test.js +++ b/test/tags/reducers/tagsList.test.js @@ -103,7 +103,7 @@ describe('tagsListReducer', () => { it('dispatches loaded lists when no error occurs', async () => { const tags = [ 'foo', 'bar', 'baz' ]; - listTagsMock.mockResolvedValue({ data: tags, stats: [] }); + listTagsMock.mockResolvedValue({ tags, stats: [] }); buildShlinkApiClient.mockReturnValue({ listTags: listTagsMock }); await listTags(buildShlinkApiClient, true)()(dispatch, getState); diff --git a/test/utils/services/ShlinkApiClient.test.js b/test/utils/services/ShlinkApiClient.test.js index bfe99f51..07f93a66 100644 --- a/test/utils/services/ShlinkApiClient.test.js +++ b/test/utils/services/ShlinkApiClient.test.js @@ -141,7 +141,7 @@ describe('ShlinkApiClient', () => { const result = await listTags(); - expect({ data: expectedTags }).toEqual(result); + expect({ tags: expectedTags }).toEqual(result); expect(axiosSpy).toHaveBeenCalledWith(expect.objectContaining({ url: '/tags', method: 'GET' })); }); });