1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15import {PageNation} from '../../../../src/base-ui/chart/pagenation/PageNation';
16import {PaginationBox} from '../../../../src/base-ui/chart/pagenation/PaginationBox';
17
18// @ts-ignore
19window.ResizeObserver = window.ResizeObserver || jest.fn().mockImplementation(() => ({
20    disconnect: jest.fn(),
21    observe: jest.fn(),
22    unobserve: jest.fn(),
23}));
24
25describe('PageNation Test', () => {
26    it('pageNationTest01', function () {
27        document.body.innerHTML = `
28        <pagination-box id="pagination-info"></pagination-box> `;
29        let pageInfo = document.getElementById('pagination-info') as PaginationBox;
30        let pageNation = new PageNation(pageInfo, {
31            current: 1,
32            totalpage: 9,
33            pageSize: 50,
34            change(num: number) {},
35        });
36        expect(pageNation).not.toBeUndefined();
37    });
38
39    it('pageNationTest01', function () {
40        document.body.innerHTML = `
41        <pagination-box id="pagination-info"></pagination-box> `;
42        let pageInfo = document.getElementById('pagination-info') as PaginationBox;
43        let pageNation = new PageNation(pageInfo, {
44            current: 1,
45            totalpage: 200,
46            pageSize: 50,
47            change(num: number) {},
48        });
49        expect(pageNation.pageInfo.current).toEqual(1);
50    });
51
52    it('pageNationTest02', function () {
53        document.body.innerHTML = `
54        <pagination-box id="pagination-info"></pagination-box> `;
55        let pageInfo = document.getElementById('pagination-info') as PaginationBox;
56        let pageNation = new PageNation(pageInfo, {
57            current: 1,
58            totalpage: 1000,
59            pageSize: 10,
60            change(num: number) {},
61        });
62        expect(pageNation.pageInfo.pageSize).toEqual(10);
63    });
64
65    it('pageNationTest03', function () {
66        document.body.innerHTML = `
67        <pagination-box id="pagination-info"></pagination-box> `;
68        let pageInfo = document.getElementById('pagination-info') as PaginationBox;
69        let pageNation = new PageNation(pageInfo, {
70            current: 5,
71            totalpage: 1000,
72            pageSize: 10,
73            change(num: number) {},
74        });
75        expect(pageNation).not.toBeUndefined();
76    });
77
78    it('pageNationTest04', function () {
79        document.body.innerHTML = `
80        <pagination-box id="pagination-info"></pagination-box> `;
81        let pageInfo = document.getElementById('pagination-info') as PaginationBox;
82        let pageNation = new PageNation(pageInfo, {
83            current: 149,
84            totalpage: 150,
85            pageSize: 10,
86            change(num: number) {},
87        });
88        expect(pageNation.pageInfo.totalpage).toEqual(150);
89    });
90
91    it('pageNationTest05', function () {
92        document.body.innerHTML = `
93        <pagination-box id="pagination-info"></pagination-box> `;
94        let pageInfo = document.getElementById('pagination-info') as PaginationBox;
95        let pageNation = new PageNation(pageInfo, {
96            current: 11,
97            totalpage: 15,
98            pageSize: 10,
99            change(num: number) {},
100        });
101        expect(pageNation.pageInfo.total).toEqual(100);
102    });
103
104    it('pageNationTest06', function () {
105        document.body.innerHTML = `
106        <pagination-box id="pagination-info"></pagination-box> `;
107        let pageInfo = document.getElementById('pagination-info') as PaginationBox;
108        let pageNation = new PageNation(pageInfo, {
109            current: 1,
110            totalpage: 150,
111            pageSize: 10,
112            change(num: number) {},
113        });
114        let mouseMoveEvent: MouseEvent = new MouseEvent('click', <MouseEventInit>{ movementX: 1, movementY: 2 });
115        pageNation.element.dispatchEvent(mouseMoveEvent);
116    });
117})
118