import { mount } from '@vue/test-utils'; import PrimeVue from 'primevue/config'; import Paginator from './Paginator.vue'; describe('Paginator.vue', () => { let wrapper; beforeEach(() => { wrapper = mount(Paginator, { global: { plugins: [PrimeVue] }, props: { rows: 10, totalRecords: 120, rowsPerPageOptions: [10, 20, 30] } }); }); it('should exist', () => { expect(wrapper.find('.p-paginator.p-component').exists()).toBe(true); expect(wrapper.find('.p-paginator-icon.pi-angle-double-left').exists()).toBe(true); expect(wrapper.find('.p-paginator-icon.pi-angle-right').exists()).toBe(true); expect(wrapper.findAll('.p-paginator-page.p-paginator-element').length).toBe(5); expect(wrapper.find('.p-dropdown.p-component').exists()).toBe(true); expect(wrapper.find('.p-dropdown-label').text()).toBe('10'); expect(wrapper.find('.p-paginator-first').classes()).toContain('p-disabled'); expect(wrapper.find('.p-paginator-prev').classes()).toContain('p-disabled'); expect(wrapper.vm.pageCount).toBe(12); }); it('show jump to the end', async () => { await wrapper.vm.changePageToLast({ preventDefault: () => {} }); expect(wrapper.findAll('.p-paginator-page.p-paginator-element')[4].classes()).toContain('p-highlight'); expect(wrapper.findAll('.p-paginator-page.p-paginator-element')[4].text()).toBe('12'); expect(wrapper.find('.p-paginator-next').classes()).toContain('p-disabled'); expect(wrapper.find('.p-paginator-last').classes()).toContain('p-disabled'); }); it('should change row count', async () => { await wrapper.vm.onRowChange(20); expect(wrapper.vm.d_rows).toBe(20); expect(wrapper.emitted()['update:rows'][0]).toEqual([20]); expect(wrapper.vm.pageCount).toBe(6); await wrapper.setProps({ rows: 20 }); expect(wrapper.find('.p-dropdown-label').text()).toBe('20'); }); });