universal_bot-ts
119 строк · 5.0 Кб
1import {Navigation} from '../../src';2
3describe('Navigation tests', () => {4let navigation: Navigation<number | { id: number, title: string }>;5let elements: any = null;6
7beforeEach(() => {8navigation = new Navigation();9elements = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];10});11
12it('Get max page in navigation', () => {13expect(navigation.maxVisibleElements).toEqual(5);14expect(navigation.thisPage).toEqual(0);15expect(navigation.getMaxPage(elements)).toEqual(2);16elements.push(11);17expect(navigation.getMaxPage(elements)).toEqual(3);18});19
20it('Get elements for navigation', () => {21let tmpElements = navigation.getPageElements(elements, '');22expect(tmpElements).toEqual([1, 2, 3, 4, 5]);23
24tmpElements = navigation.getPageElements(elements, 'дальше');25expect(navigation.thisPage).toEqual(1);26expect(tmpElements).toEqual([6, 7, 8, 9, 10]);27
28tmpElements = navigation.getPageElements(elements, 'дальше');29expect(navigation.thisPage).toEqual(1);30expect(tmpElements).toEqual([6, 7, 8, 9, 10]);31
32tmpElements = navigation.getPageElements(elements, 'назад');33expect(navigation.thisPage).toEqual(0);34expect(tmpElements).toEqual([1, 2, 3, 4, 5]);35
36tmpElements = navigation.getPageElements(elements, 'назад');37expect(navigation.thisPage).toEqual(0);38expect(tmpElements).toEqual([1, 2, 3, 4, 5]);39});40
41it('Selected number page', () => {42navigation.elements = elements;43expect(navigation.numberPage('1 страница')).toBe(true);44expect(navigation.thisPage).toEqual(0);45
46expect(navigation.numberPage('2 страница')).toBe(true);47expect(navigation.thisPage).toEqual(1);48
49expect(navigation.numberPage('3 страница')).toBe(true);50expect(navigation.thisPage).toEqual(1);51
52expect(navigation.numberPage('-2 страница')).toBe(true);53expect(navigation.thisPage).toEqual(0);54});55
56it('Selected element', () => {57navigation.elements = elements;58let selectedElement = navigation.selectedElement(elements, `2`);59expect(selectedElement).toEqual(2);60elements = [];61for (let i = 0; i < 10; i++) {62elements.push({63id: i + 1,64title: `привет${i}`65})66}67elements[3].title = 'приветствую тебя мир';68
69selectedElement = navigation.selectedElement(elements, '2');70expect(selectedElement).toEqual({id: 2, title: 'привет1'});71
72selectedElement = navigation.selectedElement(elements, 'приветствую тебя мир', ['title']);73expect(selectedElement).toEqual({id: 4, title: 'приветствую тебя мир'});74
75selectedElement = navigation.selectedElement(elements, 'привет', ['title'], 1);76expect(selectedElement).toEqual({id: 6, title: 'привет5'});77
78selectedElement = navigation.selectedElement(elements, 'пока', ['title'], 1);79expect(selectedElement).toEqual(null);80});81
82it('Page navigation arrow', () => {83navigation.elements = elements;84expect(navigation.getPageNav()).toEqual(['Дальше 👉']);85navigation.thisPage = 1;86expect(navigation.getPageNav()).toEqual(['👈 Назад']);87navigation.maxVisibleElements = 2;88expect(navigation.getPageNav()).toEqual(['👈 Назад', 'Дальше 👉']);89});90
91it('Page navigation number', () => {92navigation.elements = elements;93expect(navigation.getPageNav(true)).toEqual(['[1]', '2']);94navigation.thisPage = 1;95expect(navigation.getPageNav(true)).toEqual(['1', '[2]']);96
97navigation.maxVisibleElements = 1;98navigation.thisPage = 0;99expect(navigation.getPageNav(true)).toEqual(['[1]', '2', '3', '4', '5', '... 10']);100navigation.thisPage = 1;101expect(navigation.getPageNav(true)).toEqual(['1', '[2]', '3', '4', '5', '... 10']);102navigation.thisPage = 2;103expect(navigation.getPageNav(true)).toEqual(['1', '2', '[3]', '4', '5', '... 10']);104navigation.thisPage = 3;105expect(navigation.getPageNav(true)).toEqual(['1', '2', '3', '[4]', '5', '6', '... 10']);106navigation.thisPage = 4;107expect(navigation.getPageNav(true)).toEqual(['1 ...', '3', '4', '[5]', '6', '7', '... 10']);108navigation.thisPage = 5;109expect(navigation.getPageNav(true)).toEqual(['1 ...', '4', '5', '[6]', '7', '8', '... 10']);110navigation.thisPage = 6;111expect(navigation.getPageNav(true)).toEqual(['1 ...', '5', '6', '[7]', '8', '9', '10']);112navigation.thisPage = 7;113expect(navigation.getPageNav(true)).toEqual(['1 ...', '6', '7', '[8]', '9', '10']);114navigation.thisPage = 8;115expect(navigation.getPageNav(true)).toEqual(['1 ...', '7', '8', '[9]', '10']);116navigation.thisPage = 9;117expect(navigation.getPageNav(true)).toEqual(['1 ...', '8', '9', '[10]']);118})119});120