Browse Source

Some tests for pager and a bugfix

pull/1/head
Sebastian 10 years ago
parent
commit
fd4b164946
  1. 151
      src/Squidex/app/framework/utils/pager.spec.ts
  2. 6
      src/Squidex/app/framework/utils/pager.ts
  3. 30
      src/Squidex/app/framework/utils/version.spec.ts

151
src/Squidex/app/framework/utils/pager.spec.ts

@ -0,0 +1,151 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { Pager } from './../';
describe('Pager', () => {
it('Should init with page size and page', () => {
const pager_1 = new Pager(23, 2, 10);
expect(Object.assign({}, pager_1)).toEqual({
page: 2,
pageSize: 10,
itemFirst: 21,
itemLast: 23,
skip: 20,
numberOfItems: 23,
canGoNext: false,
canGoPrev: true
});
});
it('Should reset page on reset', () => {
const pager_1 = new Pager(23, 2, 10);
const pager_2 = pager_1.reset();
expect(Object.assign({}, pager_2)).toEqual({
page: 0,
pageSize: 10,
itemFirst: 0,
itemLast: 0,
skip: 0,
numberOfItems: 0,
canGoNext: false,
canGoPrev: false
});
});
it('should return same instance when go next and being on last page', () => {
const pager_1 = new Pager(23, 2, 10);
const pager_2 = pager_1.goNext();
expect(pager_2).toBe(pager_1);
});
it('should update page when going next', () => {
const pager_1 = new Pager(23, 0, 10);
const pager_2 = pager_1.goNext();
expect(Object.assign({}, pager_2)).toEqual({
page: 1,
pageSize: 10,
itemFirst: 11,
itemLast: 20,
skip: 10,
numberOfItems: 23,
canGoNext: true,
canGoPrev: true
});
});
it('should return same instance when go prev and being on first page', () => {
const pager_1 = new Pager(23, 0, 10);
const pager_2 = pager_1.goPrev();
expect(pager_2).toBe(pager_1);
});
it('should update page when going prev', () => {
const pager_1 = new Pager(23, 2, 10);
const pager_2 = pager_1.goPrev();
expect(Object.assign({}, pager_2)).toEqual({
page: 1,
pageSize: 10,
itemFirst: 11,
itemLast: 20,
skip: 10,
numberOfItems: 23,
canGoNext: true,
canGoPrev: true
});
});
it('should update count when setting it', () => {
const pager_1 = new Pager(23, 2, 10);
const pager_2 = pager_1.setCount(30);
expect(Object.assign({}, pager_2)).toEqual({
page: 2,
pageSize: 10,
itemFirst: 21,
itemLast: 30,
skip: 20,
numberOfItems: 30,
canGoNext: false,
canGoPrev: true
});
});
it('should update count when incrementing it', () => {
const pager_1 = new Pager(23, 2, 10);
const pager_2 = pager_1.incrementCount();
expect(Object.assign({}, pager_2)).toEqual({
page: 2,
pageSize: 10,
itemFirst: 21,
itemLast: 24,
skip: 20,
numberOfItems: 24,
canGoNext: false,
canGoPrev: true
});
});
it('should update count when decrementing it', () => {
const pager_1 = new Pager(23, 2, 10);
const pager_2 = pager_1.decrementCount();
expect(Object.assign({}, pager_2)).toEqual({
page: 2,
pageSize: 10,
itemFirst: 21,
itemLast: 22,
skip: 20,
numberOfItems: 22,
canGoNext: false,
canGoPrev: true
});
});
it('should also update page when new page is bigger than max page', () => {
const pager_1 = new Pager(21, 2, 10);
const pager_2 = pager_1.decrementCount();
expect(Object.assign({}, pager_2)).toEqual({
page: 1,
pageSize: 10,
itemFirst: 11,
itemLast: 20,
skip: 10,
numberOfItems: 20,
canGoNext: false,
canGoPrev: true
});
});
});

6
src/Squidex/app/framework/utils/pager.ts

@ -21,7 +21,11 @@ export class Pager {
) {
const totalPages = Math.ceil(numberOfItems / this.pageSize);
this.itemFirst = page * this.pageSize + 1;
if (page >= totalPages && page > 0) {
page = this.page = totalPages - 1;
}
this.itemFirst = numberOfItems === 0 ? 0 : page * this.pageSize + 1;
this.itemLast = Math.min(numberOfItems, (page + 1) * this.pageSize);
this.canGoNext = page < totalPages - 1;

30
src/Squidex/app/framework/utils/version.spec.ts

@ -0,0 +1,30 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { Version } from './../';
describe('Version', () => {
it('should initialize with default value', () => {
const version = new Version();
expect(version.value).toBe('');
});
it('should initialize with init value', () => {
const version = new Version('1.0');
expect(version.value).toBe('1.0');
});
it('should update to new value', () => {
const version = new Version();
version.update('1.0');
expect(version.value).toBe('1.0');
});
});
Loading…
Cancel
Save