224 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
| import { mount } from '@vue/test-utils';
 | |
| import Badge from '../index';
 | |
| import mountTest from '../../../tests/shared/mountTest';
 | |
| 
 | |
| import { asyncExpect } from '../../../tests/utils';
 | |
| describe('Badge', () => {
 | |
|   it('badge dot not scaling count > 9', () => {
 | |
|     const badge = mount({
 | |
|       render() {
 | |
|         return <Badge count={10} dot />;
 | |
|       },
 | |
|     });
 | |
|     expect(badge.findAll('.ant-card-multiple-words').length).toBe(0);
 | |
|   });
 | |
|   it('badge should support float number', () => {
 | |
|     let wrapper = mount({
 | |
|       render() {
 | |
|         return <Badge count={3.5} />;
 | |
|       },
 | |
|     });
 | |
|     expect(wrapper.text()).toMatchSnapshot();
 | |
|     wrapper = mount({
 | |
|       render() {
 | |
|         return <Badge count={3.5} />;
 | |
|       },
 | |
|     });
 | |
|     expect(wrapper.html()).toMatchSnapshot();
 | |
|   });
 | |
|   it('badge dot not showing count == 0', () => {
 | |
|     const badge = mount({
 | |
|       render() {
 | |
|         return <Badge count={0} dot />;
 | |
|       },
 | |
|     });
 | |
|     expect(badge.findAll('.ant-badge-dot').length).toBe(0);
 | |
|   });
 | |
| 
 | |
|   it('should have an overriden title attribute', () => {
 | |
|     const badge = mount({
 | |
|       render() {
 | |
|         return <Badge count={10} title="Custom title" />;
 | |
|       },
 | |
|     });
 | |
|     expect(badge.find('.ant-scroll-number').element.attributes.getNamedItem('title').value).toEqual(
 | |
|       'Custom title',
 | |
|     );
 | |
|   });
 | |
| 
 | |
|   // https://github.com/ant-design/ant-design/issues/10626
 | |
|   // it('should be composable with Tooltip', async () => {
 | |
|   //   const wrapper = mount({
 | |
|   //     render () {
 | |
|   //       return <Tooltip ref='tooltip' title='Fix the error'>
 | |
|   //         <Badge status='error' />
 | |
|   //       </Tooltip>
 | |
|   //     },
 | |
|   //   }, { sync: false })
 | |
|   //   await asyncExpect(() => {
 | |
|   //     wrapper.find({ name: 'ABadge' }).trigger('mouseenter')
 | |
|   //   }, 0)
 | |
| 
 | |
|   //   expect(wrapper.vm.$refs.tooltip.sVisible).toBe(true)
 | |
|   // })
 | |
| 
 | |
|   it('should render when count is changed', async () => {
 | |
|     const wrapper = mount(Badge, {
 | |
|       props: {
 | |
|         count: 9,
 | |
|       },
 | |
|       sync: false,
 | |
|     });
 | |
|     await asyncExpect(() => {
 | |
|       wrapper.setProps({ count: 10 });
 | |
|     }, 100);
 | |
|     await asyncExpect(() => {
 | |
|       expect(wrapper.html()).toMatchSnapshot();
 | |
|       wrapper.setProps({ count: 11 });
 | |
|     }, 100);
 | |
|     await asyncExpect(() => {
 | |
|       expect(wrapper.html()).toMatchSnapshot();
 | |
|       wrapper.setProps({ count: 11 });
 | |
|     }, 100);
 | |
|     await asyncExpect(() => {
 | |
|       expect(wrapper.html()).toMatchSnapshot();
 | |
|       wrapper.setProps({ count: 10 });
 | |
|     }, 100);
 | |
|     await asyncExpect(() => {
 | |
|       expect(wrapper.html()).toMatchSnapshot();
 | |
|       wrapper.setProps({ count: 9 });
 | |
|     }, 100);
 | |
|     await asyncExpect(() => {
 | |
|       expect(wrapper.html()).toMatchSnapshot();
 | |
|     }, 100);
 | |
|   });
 | |
| 
 | |
|   it('should be compatible with borderColor style', () => {
 | |
|     const wrapper = mount({
 | |
|       render() {
 | |
|         return (
 | |
|           <Badge
 | |
|             count={4}
 | |
|             style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }}
 | |
|           />
 | |
|         );
 | |
|       },
 | |
|     });
 | |
| 
 | |
|     expect(wrapper.html()).toMatchSnapshot();
 | |
|   });
 | |
| 
 | |
|   // https://github.com/ant-design/ant-design/issues/13694
 | |
|   it('should support offset when count is a VueNode', () => {
 | |
|     const wrapper = mount({
 | |
|       render() {
 | |
|         return (
 | |
|           <Badge count={<span class="custom" style={{ color: '#f5222d' }} />} offset={[10, 20]}>
 | |
|             <a href="#" class="head-example">
 | |
|               head
 | |
|             </a>
 | |
|           </Badge>
 | |
|         );
 | |
|       },
 | |
|     });
 | |
|     expect(wrapper.html()).toMatchSnapshot();
 | |
|   });
 | |
|   // https://github.com/ant-design/ant-design/issues/15799
 | |
|   it('render correct with negative number', () => {
 | |
|     const wrapper = mount({
 | |
|       render() {
 | |
|         return (
 | |
|           <div>
 | |
|             <Badge count="-10" />
 | |
|             <Badge count={-10} />
 | |
|           </div>
 | |
|         );
 | |
|       },
 | |
|     });
 | |
|     expect(wrapper.html()).toMatchSnapshot();
 | |
|   });
 | |
| 
 | |
|   it('text works with vnode', () => {
 | |
|     const wrapper = mount({
 | |
|       render() {
 | |
|         return <Badge status="success" text={<span>hello</span>} />;
 | |
|       },
 | |
|     });
 | |
| 
 | |
|     expect(wrapper.html()).toMatchSnapshot();
 | |
|   });
 | |
| });
 | |
| 
 | |
| describe('Ribbon', () => {
 | |
|   mountTest(Badge.Ribbon);
 | |
| 
 | |
|   describe('placement', () => {
 | |
|     it('works with `start` & `end` placement', () => {
 | |
|       const wrapperStart = mount({
 | |
|         render() {
 | |
|           return (
 | |
|             <Badge.Ribbon placement="start">
 | |
|               <div />
 | |
|             </Badge.Ribbon>
 | |
|           );
 | |
|         },
 | |
|       });
 | |
| 
 | |
|       expect(wrapperStart.findAll('.ant-ribbon-placement-start').length).toEqual(1);
 | |
| 
 | |
|       const wrapperEnd = mount({
 | |
|         render() {
 | |
|           return (
 | |
|             <Badge.Ribbon placement="end">
 | |
|               <div />
 | |
|             </Badge.Ribbon>
 | |
|           );
 | |
|         },
 | |
|       });
 | |
|       expect(wrapperEnd.findAll('.ant-ribbon-placement-end').length).toEqual(1);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('color', () => {
 | |
|     it('works with preset color', () => {
 | |
|       const wrapper = mount({
 | |
|         render() {
 | |
|           return (
 | |
|             <Badge.Ribbon color="green">
 | |
|               <div />
 | |
|             </Badge.Ribbon>
 | |
|           );
 | |
|         },
 | |
|       });
 | |
|       expect(wrapper.findAll('.ant-ribbon-color-green').length).toEqual(1);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   describe('text', () => {
 | |
|     it('works with string', () => {
 | |
|       const wrapper = mount({
 | |
|         render() {
 | |
|           return (
 | |
|             <Badge.Ribbon text="cool">
 | |
|               <div />
 | |
|             </Badge.Ribbon>
 | |
|           );
 | |
|         },
 | |
|       });
 | |
|       expect(wrapper.find('.ant-ribbon').text()).toEqual('cool');
 | |
|     });
 | |
|     it('works with element', () => {
 | |
|       const wrapper = mount({
 | |
|         render() {
 | |
|           return (
 | |
|             <Badge.Ribbon text={<span class="cool" />}>
 | |
|               <div />
 | |
|             </Badge.Ribbon>
 | |
|           );
 | |
|         },
 | |
|       });
 | |
|       expect(wrapper.findAll('.cool').length).toEqual(1);
 | |
|     });
 | |
|   });
 | |
| });
 |