blob: 2cb11c173a7147fc611a8f1bd34471b995971d70 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
import {
toggleShowAllColumns,
setPerPage,
resetFetchParamsBeforePerPageChange,
incrementSkipForPageNext,
decrementSkipForPagePrevious,
resetPagination
} from '../index-results/actions/pagination';
import ActionTypes from '../index-results/actiontypes';
import FauxtonAPI from '../../../core/api';
describe('Docs Pagination API', () => {
it('toggleShowAllColumns returns the proper event to dispatch', () => {
expect(toggleShowAllColumns()).toEqual({
type: ActionTypes.INDEX_RESULTS_REDUX_TOGGLE_SHOW_ALL_COLUMNS
});
});
it('setPerPage returns the proper event to dispatch', () => {
const pageSize = 10;
expect(setPerPage(pageSize)).toEqual({
type: ActionTypes.INDEX_RESULTS_REDUX_SET_PER_PAGE,
perPage: pageSize
});
});
describe('resetFetchParamsBeforePerPageChange', () => {
let fetchParams, queryOptionsParams;
let amount = 10;
beforeEach(() => {
fetchParams = {
skip: 20,
limit: 21
};
queryOptionsParams = {};
});
it('fetchs with proper params when queryOptions doesnt have skip', () => {
expect(resetFetchParamsBeforePerPageChange(fetchParams, queryOptionsParams, amount)).toEqual({
limit: 11,
skip: 0
});
});
it('fetches with the proper params when queryOptions does have skip', () => {
queryOptionsParams.skip = 5;
expect(resetFetchParamsBeforePerPageChange(fetchParams, queryOptionsParams, amount)).toEqual({
limit: 11,
skip: 5
});
});
});
it('incrementSkipForPageNext returns the proper fetch params', () => {
const fetchParams = {
skip: 0,
limit: 21
};
const perPage = 20;
expect(incrementSkipForPageNext(fetchParams, perPage)).toEqual({
skip: 20,
limit: 21
});
});
describe('decrementSkipForPagePrevious', () => {
it('returns the proper fetch params when greater than zero', () => {
const fetchParams = {
skip: 40,
limit: 21
};
const perPage = 20;
expect(decrementSkipForPagePrevious(fetchParams, perPage)).toEqual({
skip: 20,
limit: 21
});
});
it('returns the proper fetch params when skip less than zero', () => {
const fetchParams = {
skip: 5,
limit: 21
};
const perPage = 20;
expect(decrementSkipForPagePrevious(fetchParams, perPage)).toEqual({
skip: 0,
limit: 21
});
});
});
it('resetPagination defaults to FauxtonAPI page size if arg empty', () => {
expect(resetPagination()).toEqual({
type: ActionTypes.INDEX_RESULTS_REDUX_SET_PER_PAGE,
perPage: FauxtonAPI.constants.MISC.DEFAULT_PAGE_SIZE
});
});
});