From d6f8a6debcf6ecbd81d588bd9ed9471edaf4fa4b Mon Sep 17 00:00:00 2001 From: vincentbpro <89356961+vincentbpro@users.noreply.github.com> Date: Tue, 9 Nov 2021 11:09:55 +0100 Subject: [PATCH] test: added tests for pagination util --- .../utils/lib/__tests__/pagination.test.js | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 packages/core/utils/lib/__tests__/pagination.test.js diff --git a/packages/core/utils/lib/__tests__/pagination.test.js b/packages/core/utils/lib/__tests__/pagination.test.js new file mode 100644 index 0000000000..450e67aaf1 --- /dev/null +++ b/packages/core/utils/lib/__tests__/pagination.test.js @@ -0,0 +1,126 @@ +'use strict'; + +const { withDefaultPagination } = require('../pagination'); + +const defaultLimit = 20; +const maxLimit = 50; +const defaults = { + offset: { limit: defaultLimit }, + page: { pageSize: defaultLimit }, +}; + +describe('Pagination util', () => { + test('Uses default limit', () => { + const pagination = {}; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: defaultLimit, + }); + }); + + describe('Paged pagination', () => { + test('Uses specified pageSize', () => { + const pagination = { pageSize: 5 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: pagination.pageSize, + }); + }); + + test('Uses maxLimit as pageSize', () => { + const pagination = { pageSize: 999 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: maxLimit, + }); + }); + + test('Uses 1 as pageSize', () => { + const pagination = { pageSize: 0 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: 1, + }); + }); + + test('Uses 1 as pageSize', () => { + const pagination = { pageSize: -1 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: 1, + }); + }); + + test('Uses 1 as pageSize', () => { + const pagination = { pageSize: -2 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: 1, + }); + }); + }); + + describe('Offset pagination', () => { + test('Uses specified limit', () => { + const pagination = { limit: 5 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: pagination.limit, + }); + }); + + test('Uses maxLimit as limit', () => { + const pagination = { limit: 999 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: maxLimit, + }); + }); + + test('Uses 1 as limit', () => { + const pagination = { limit: 0 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: 1, + }); + }); + + test('Uses maxLimit as limit', () => { + const pagination = { limit: -1 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: maxLimit, + }); + }); + + test('Uses 1 as limit', () => { + const pagination = { limit: -2 }; + const defaultPagination = withDefaultPagination(pagination, { defaults, maxLimit }); + + expect(defaultPagination).toEqual({ + start: 0, + limit: 1, + }); + }); + }); +});