diff --git a/test/utils/services/ShlinkApiClient.test.js b/test/utils/services/ShlinkApiClient.test.js index 24f17858..f41d324b 100644 --- a/test/utils/services/ShlinkApiClient.test.js +++ b/test/utils/services/ShlinkApiClient.test.js @@ -64,7 +64,7 @@ describe('ShlinkApiClient', () => { const lastAxiosCall = last(axiosSpy.getCalls()); const axiosArgs = head(lastAxiosCall.args); - expect(expectedVisits).toEqual(actualVisits); + expect({ data: expectedVisits }).toEqual(actualVisits); expect(axiosArgs.url).toContain('/short-urls/abc123/visits'); expect(axiosArgs.method).toEqual('GET'); }); diff --git a/test/visits/reducers/shortUrlVisits.test.js b/test/visits/reducers/shortUrlVisits.test.js index 48c8dc9d..7075cd73 100644 --- a/test/visits/reducers/shortUrlVisits.test.js +++ b/test/visits/reducers/shortUrlVisits.test.js @@ -47,7 +47,7 @@ describe('shortUrlVisitsReducer', () => { describe('getShortUrlVisits', () => { const buildApiClientMock = (returned) => ({ - getShortUrlVisits: sinon.fake.returns(returned), + getShortUrlVisits: typeof returned === 'function' ? sinon.fake(returned) : sinon.fake.returns(returned), }); const dispatchMock = sinon.spy(); const getState = () => ({}); @@ -74,7 +74,13 @@ describe('shortUrlVisitsReducer', () => { it('dispatches start and success when promise is resolved', async () => { const resolvedVisits = [{}, {}]; - const ShlinkApiClient = buildApiClientMock(Promise.resolve(resolvedVisits)); + const ShlinkApiClient = buildApiClientMock(Promise.resolve({ + data: resolvedVisits, + pagination: { + currentPage: 1, + pagesCount: 1, + }, + })); const expectedDispatchCalls = 2; await getShortUrlVisits(() => ShlinkApiClient)('abc123')(dispatchMock, getState); @@ -91,5 +97,25 @@ describe('shortUrlVisitsReducer', () => { expect(secondCallType).toEqual(GET_SHORT_URL_VISITS); expect(visits).toEqual(resolvedVisits); }); + + it('performs two API requests when response contains more pages', async () => { + const expectedRequests = 3; + const ShlinkApiClient = buildApiClientMock((shortCode, { page }) => + Promise.resolve({ + data: [{}, {}], + pagination: { + currentPage: page, + pagesCount: expectedRequests, + }, + })); + + await getShortUrlVisits(() => ShlinkApiClient)('abc123')(dispatchMock, getState); + + const [ secondCallArg ] = dispatchMock.getCall(1).args; + const { visits } = secondCallArg; + + expect(ShlinkApiClient.getShortUrlVisits.callCount).toEqual(expectedRequests); + expect(visits).toEqual([{}, {}, {}, {}, {}, {}]); + }); }); });