UNPKG

rsuite

Version:

A suite of react components

124 lines (102 loc) 4.38 kB
import React from 'react'; import ReactTestUtils from 'react-dom/test-utils'; import { getDOMNode, innerText } from '@test/testUtils'; import Pagination from '../Pagination'; describe('Pagination', () => { it('Should render a ul', () => { const instance = getDOMNode(<Pagination />); assert.equal(instance.tagName, 'UL'); }); it('Should render 20 li', () => { const instance = getDOMNode(<Pagination pages={20} />); assert.equal(instance.querySelectorAll('li').length, 20); }); it('Should render 20 button', () => { const instance = getDOMNode(<Pagination pages={20} buttonComponentClass="button" />); assert.equal(instance.querySelectorAll('button').length, 20); }); it('Should render 2 li', () => { const instance = getDOMNode(<Pagination pages={20} maxButtons={2} />); assert.equal(instance.querySelectorAll('li').length, 2); }); it('Should render `ellipsis` button', () => { const instance = getDOMNode(<Pagination pages={20} maxButtons={2} ellipsis />); assert.equal(instance.querySelectorAll('li').length, 3); assert.ok(instance.querySelector('i.rs-icon-more')); }); it('Should be ellipsis', () => { const instance = getDOMNode(<Pagination pages={20} maxButtons={2} ellipsis={'abc'} />); assert.equal(instance.querySelectorAll('li').length, 3); assert.equal(innerText(instance.querySelector('li.rs-pagination-btn-disabled')), 'abc'); }); it('Should be disabled', () => { const instance = getDOMNode(<Pagination pages={2} disabled first last prev next />); assert.equal(instance.querySelectorAll('li.rs-pagination-btn-disabled').length, 6); }); it('Should be disabled', () => { const instance = getDOMNode( <Pagination pages={10} disabled={eventKey => { if (eventKey === 2) { return true; } return false; }} /> ); const disabledDOMs = instance.querySelectorAll('li.rs-pagination-btn-disabled'); assert.equal(disabledDOMs.length, 1); assert.equal(innerText(disabledDOMs[0]), '2'); }); it('Should render `first` button', () => { const instance = getDOMNode(<Pagination pages={20} maxButtons={2} first />); assert.ok(instance.querySelector('span[aria-label="First"]')); }); it('Should render `last` button', () => { const instance = getDOMNode(<Pagination pages={20} maxButtons={2} last />); assert.ok(instance.querySelector('span[aria-label="Last"]')); }); it('Should render `prev` button', () => { const instance = getDOMNode(<Pagination pages={20} maxButtons={2} prev />); assert.ok(instance.querySelector('span[aria-label="Previous"]')); }); it('Should render `next` button', () => { const instance = getDOMNode(<Pagination pages={20} maxButtons={2} next />); assert.ok(instance.querySelector('span[aria-label="Next"]')); }); it('Should render boundary links', () => { const instance = getDOMNode(<Pagination pages={20} maxButtons={2} ellipsis boundaryLinks />); assert.equal(innerText(instance.querySelector('li:last-child')), '20'); }); it('Should active page 5', () => { const instance = getDOMNode(<Pagination pages={20} activePage={5} />); assert.equal(innerText(instance.querySelector('li.rs-pagination-btn-active')), '5'); }); it('Should call onSelect callback', done => { const doneOp = eventKey => { if (eventKey === 2) { done(); } }; const instance = getDOMNode(<Pagination pages={20} onSelect={doneOp} />); ReactTestUtils.Simulate.click(instance.querySelectorAll('a')[1]); }); it('Should apply size class', () => { let instance = getDOMNode(<Pagination size="lg">Title</Pagination>); assert.ok(instance.className.match(/\bpagination-lg\b/)); }); it('Should have a custom className', () => { const instance = getDOMNode(<Pagination className="custom" />); assert.ok(instance.className.match(/\bcustom\b/)); }); it('Should have a custom style', () => { const fontSize = '12px'; const instance = getDOMNode(<Pagination style={{ fontSize }} />); assert.equal(instance.style.fontSize, fontSize); }); it('Should have a custom className prefix', () => { const instance = getDOMNode(<Pagination classPrefix="custom-prefix" />); assert.ok(instance.className.match(/\bcustom-prefix\b/)); }); });