import { List, Avatar, Button, ButtonGroup } from '../../index'; import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants'; const dataSource = [ '从明天起,做一个幸福的人', '喂马,劈柴,周游世界', '从明天起,关心粮食和蔬菜', '我有一所房子,面朝大海,春暖花开', ]; function renderList(props) { const realProps = { dataSource, renderItem: item => {item}, ...props, }; return mount(, { attachTo: document.getElementById('container'), }); } describe('List', () => { beforeEach(() => { const div = document.createElement('div'); div.setAttribute('id', 'container'); document.body.appendChild(div); }); afterEach(() => { const div = document.getElementById('container'); if (div) { document.body.removeChild(div); } document.body.innerHTML = ''; }); it('List with jsx', () => { const list = mount( 从明天起,做一个幸福的人 喂马,劈柴,周游世界 从明天起,关心粮食和蔬菜 我有一所房子,面朝大海,春暖花开菜 , { attachTo: document.getElementById('container'), });; const item = document.querySelectorAll(`.${BASE_CLASS_PREFIX}-list-item`); expect(item.length).toEqual(4); expect( list .find(`.${BASE_CLASS_PREFIX}-list-item`) .at(0) .getDOMNode() .textContent ).toEqual('从明天起,做一个幸福的人'); list.unmount(); }); it('List with basic renderItem', () => { const list = renderList(); const item = document.querySelectorAll(`.${BASE_CLASS_PREFIX}-list-item`); expect(item.length).toEqual(4); expect( list .find(`.${BASE_CLASS_PREFIX}-list-item`) .at(0) .getDOMNode() .textContent ).toEqual('从明天起,做一个幸福的人'); list.unmount(); }); it('List with renderItem header/main/extra', () => { const list = renderList({ renderItem: item => ( SE} main={
示例标题 {item}
} extra={ } /> ) }); // item header expect( list .find(`.${BASE_CLASS_PREFIX}-list-item-body-header .${BASE_CLASS_PREFIX}-avatar-label`) .at(0) .getDOMNode() .textContent ).toEqual('SE'); // item main expect( list .find(`.${BASE_CLASS_PREFIX}-list-item-body-main span`) .at(0) .getDOMNode() .textContent ).toEqual('示例标题'); // item extra expect(list.exists(`.${BASE_CLASS_PREFIX}-list-item-extra .${BASE_CLASS_PREFIX}-button-group`)).toEqual(true); list.unmount(); }); it('List with className / style', () => { const props = { className: 'test', style: { height: 420 }, }; const list = renderList(props); expect(list.hasClass('test')).toEqual(true); expect(list.find('div.test')).toHaveStyle('height', 420); list.unmount(); }); it('List with bordered', () => { const list = renderList({ bordered: true }); expect(list.exists(`.${BASE_CLASS_PREFIX}-list-bordered`)).toEqual(true); list.unmount(); }); it('List with size', () => { const smallList = renderList({ size: 'small' }); expect(smallList.exists(`.${BASE_CLASS_PREFIX}-list-small`)).toEqual(true); smallList.unmount(); const defaultList = renderList({ size: 'default' }); expect(defaultList.exists(`.${BASE_CLASS_PREFIX}-list-default`)).toEqual(true); defaultList.unmount(); const largeList = renderList({ size: 'large' }); expect(largeList.exists(`.${BASE_CLASS_PREFIX}-list-large`)).toEqual(true); largeList.unmount(); }); it('List with layout', () => { const horizontalList = renderList({ layout: 'horizontal' }); expect(horizontalList.exists(`.${BASE_CLASS_PREFIX}-list-flex`)).toEqual(true); horizontalList.unmount(); const verticalList = renderList({ layout: 'vertical' }); expect(verticalList.exists(`.${BASE_CLASS_PREFIX}-list-flex`)).toEqual(false); verticalList.unmount(); }); it('List with grid', () => { const list = renderList({ grid: { gutter: 18, span: 6, } }); const item = document.querySelectorAll(`.${BASE_CLASS_PREFIX}-col-6`); expect(item.length).toEqual(4); expect(list.find(`.${BASE_CLASS_PREFIX}-col-6`).at(0)).toHaveStyle('paddingLeft', 9); expect(list.find(`.${BASE_CLASS_PREFIX}-col-6`).at(0)).toHaveStyle('paddingRight', 9); list.unmount(); }); it('List with split', () => { const list = renderList({ split: false }); expect(list.exists(`.${BASE_CLASS_PREFIX}-list-split`)).toEqual(false); list.unmount(); }); it('List with onClick', () => { const spyOnClick = sinon.spy(() => { }); const list = renderList({ onClick: spyOnClick }); list.find(`.${BASE_CLASS_PREFIX}-list-item`).at(0).simulate('click'); expect(spyOnClick.calledOnce).toBe(true); list.unmount(); }); it('List with jsx', () => { const spyOnClick = sinon.spy(() => { }); const list = mount( 从明天起,做一个幸福的人 喂马,劈柴,周游世界 从明天起,关心粮食和蔬菜 我有一所房子,面朝大海,春暖花开菜 , { attachTo: document.getElementById('container'), });; list.find(`.${BASE_CLASS_PREFIX}-list-item`).at(0).simulate('click'); expect(spyOnClick.calledOnce).toBe(true); list.unmount(); }); it('List with loading', () => { const loadingList = renderList({ loading: true }); expect(loadingList.exists(`.${BASE_CLASS_PREFIX}-spin-hidden`)).toEqual(false); loadingList.unmount(); const noloadingList = renderList({ loading: false }); expect(noloadingList.exists(`.${BASE_CLASS_PREFIX}-spin-hidden`)).toEqual(true); noloadingList.unmount(); }); it('List with loadMore', () => { const list = renderList({ loadMore: }); expect( list .find(`.${BASE_CLASS_PREFIX}-list .${BASE_CLASS_PREFIX}-button .${BASE_CLASS_PREFIX}-button-content`) .at(0) .getDOMNode() .textContent ).toEqual('加载更多'); list.unmount(); }); it('List with emptyContent', () => { const list = renderList({ emptyContent: 自定义空内容, dataSource: [] }); expect( list .find(`.${BASE_CLASS_PREFIX}-list-items .${BASE_CLASS_PREFIX}-list-empty .empty`) .at(0) .getDOMNode() .textContent ).toEqual('自定义空内容'); list.unmount(); const list2 = renderList({ dataSource: [] }); expect( list2 .find(`.${BASE_CLASS_PREFIX}-list-items .${BASE_CLASS_PREFIX}-list-empty`) .getDOMNode() .textContent ).toEqual('暂无数据'); list2.unmount(); }); it('List with footer/header', () => { const list = renderList({ header:
头部
, footer:
尾部
, }); expect( list .find(`.${BASE_CLASS_PREFIX}-list-header .header`) .at(0) .getDOMNode() .textContent ).toEqual('头部'); expect( list .find(`.${BASE_CLASS_PREFIX}-list-footer .footer`) .at(0) .getDOMNode() .textContent ).toEqual('尾部'); list.unmount(); }); });