test: add notification test
							parent
							
								
									c93c18e74e
								
							
						
					
					
						commit
						5f06942217
					
				|  | @ -0,0 +1,85 @@ | ||||||
|  | import { asyncExpect } from '@/tests/utils' | ||||||
|  | import notification from '..' | ||||||
|  | 
 | ||||||
|  | describe('notification', () => { | ||||||
|  |   beforeEach(() => { | ||||||
|  |     document.body.outerHTML = '' | ||||||
|  |   }) | ||||||
|  | 
 | ||||||
|  |   afterEach(() => { | ||||||
|  |     notification.destroy() | ||||||
|  |   }) | ||||||
|  | 
 | ||||||
|  |   it('should be able to hide manually', async () => { | ||||||
|  |     notification.open({ | ||||||
|  |       message: 'Notification Title', | ||||||
|  |       duration: 0, | ||||||
|  |       key: '1', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       notification.open({ | ||||||
|  |         message: 'Notification Title', | ||||||
|  |         duration: 0, | ||||||
|  |         key: '2', | ||||||
|  |       }) | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect(document.querySelectorAll('.ant-notification-notice').length).toBe(2) | ||||||
|  |       notification.close('1') | ||||||
|  |     }, 0) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect(document.querySelectorAll('.ant-notification-notice').length).toBe(1) | ||||||
|  |       notification.close('2') | ||||||
|  |     }, 0) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect(document.querySelectorAll('.ant-notification-notice').length).toBe(0) | ||||||
|  |     }, 0) | ||||||
|  |   }) | ||||||
|  | 
 | ||||||
|  |   it('should be able to destroy globally', async () => { | ||||||
|  |     notification.open({ | ||||||
|  |       message: 'Notification Title', | ||||||
|  |       duration: 0, | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       notification.open({ | ||||||
|  |         message: 'Notification Title', | ||||||
|  |         duration: 0, | ||||||
|  |       }) | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect(document.querySelectorAll('.ant-notification').length).toBe(1) | ||||||
|  |       expect(document.querySelectorAll('.ant-notification-notice').length).toBe(2) | ||||||
|  |       notification.destroy() | ||||||
|  |     }, 0) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect(document.querySelectorAll('.ant-notification').length).toBe(0) | ||||||
|  |       expect(document.querySelectorAll('.ant-notification-notice').length).toBe(0) | ||||||
|  |     }, 0) | ||||||
|  |   }) | ||||||
|  | 
 | ||||||
|  |   it('should be able to destroy after config', () => { | ||||||
|  |     notification.config({ | ||||||
|  |       bottom: 100, | ||||||
|  |     }) | ||||||
|  |     notification.destroy() | ||||||
|  |   }) | ||||||
|  | 
 | ||||||
|  |   it('should be able to open with icon', (done) => { | ||||||
|  |     const openNotificationWithIcon = async (type) => { | ||||||
|  |       const iconPrefix = '.ant-notification-notice-icon' | ||||||
|  |       notification[type]({ | ||||||
|  |         message: 'Notification Title', | ||||||
|  |         duration: 0, | ||||||
|  |         description: 'This is the content of the notification.', | ||||||
|  |       }) | ||||||
|  |       await asyncExpect(() => { | ||||||
|  |         expect(document.querySelectorAll(`${iconPrefix}-${type}`).length).toBe(1) | ||||||
|  |       }, 0) | ||||||
|  |     }; | ||||||
|  |     ['success', 'info', 'warning', 'error'].forEach((type) => { | ||||||
|  |       openNotificationWithIcon(type) | ||||||
|  |     }) | ||||||
|  |     done() | ||||||
|  |   }) | ||||||
|  | }) | ||||||
|  | @ -0,0 +1,171 @@ | ||||||
|  | import { asyncExpect } from '@/tests/utils' | ||||||
|  | import notification from '..' | ||||||
|  | 
 | ||||||
|  | describe('Notification.placement', () => { | ||||||
|  |   afterEach(() => notification.destroy()) | ||||||
|  | 
 | ||||||
|  |   function $$ (className) { | ||||||
|  |     return document.body.querySelectorAll(className) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   function getStyle (el, prop, getComputedStyle, style) { | ||||||
|  |     getComputedStyle = getComputedStyle || window.getComputedStyle | ||||||
|  |     style = getComputedStyle ? getComputedStyle(el) : el.currentStyle | ||||||
|  | 
 | ||||||
|  |     // If a css property's value is `auto`, it will return an empty string.
 | ||||||
|  |     return prop ? style[prop] : style | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   function open (args) { | ||||||
|  |     notification.open({ | ||||||
|  |       message: 'Notification Title', | ||||||
|  |       description: 'This is the content of the notification.', | ||||||
|  |       ...args, | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   function config (args) { | ||||||
|  |     notification.config({ | ||||||
|  |       ...args, | ||||||
|  |     }) | ||||||
|  |     open() | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   it('change notification placement by `open` method', async () => { | ||||||
|  |     const defaultTop = '24px' | ||||||
|  |     const defaultBottom = '24px' | ||||||
|  |     let style | ||||||
|  | 
 | ||||||
|  |     // topLeft
 | ||||||
|  |     open({ | ||||||
|  |       placement: 'topLeft', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       style = getStyle($$('.ant-notification-topLeft')[0]) | ||||||
|  |       expect(style.top).toBe(defaultTop) | ||||||
|  |       expect(style.left).toBe('0px') | ||||||
|  |       expect(style.bottom).toBe('') | ||||||
|  |     }) | ||||||
|  |     open({ | ||||||
|  |       placement: 'topLeft', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect($$('.ant-notification-topLeft').length).toBe(1) | ||||||
|  |     }) | ||||||
|  |     // topRight
 | ||||||
|  |     open({ | ||||||
|  |       placement: 'topRight', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       style = getStyle($$('.ant-notification-topRight')[0]) | ||||||
|  |       expect(style.top).toBe(defaultTop) | ||||||
|  |       expect(style.right).toBe('0px') | ||||||
|  |       expect(style.bottom).toBe('') | ||||||
|  |     }) | ||||||
|  |     open({ | ||||||
|  |       placement: 'topRight', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect($$('.ant-notification-topRight').length).toBe(1) | ||||||
|  |     }) | ||||||
|  |     // bottomRight
 | ||||||
|  |     open({ | ||||||
|  |       placement: 'bottomRight', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       style = getStyle($$('.ant-notification-bottomRight')[0]) | ||||||
|  |       expect(style.top).toBe('') | ||||||
|  |       expect(style.right).toBe('0px') | ||||||
|  |       expect(style.bottom).toBe(defaultBottom) | ||||||
|  |     }) | ||||||
|  |     open({ | ||||||
|  |       placement: 'bottomRight', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect($$('.ant-notification-bottomRight').length).toBe(1) | ||||||
|  |     }) | ||||||
|  |     // bottomLeft
 | ||||||
|  |     open({ | ||||||
|  |       placement: 'bottomLeft', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       style = getStyle($$('.ant-notification-bottomLeft')[0]) | ||||||
|  |       expect(style.top).toBe('') | ||||||
|  |       expect(style.left).toBe('0px') | ||||||
|  |       expect(style.bottom).toBe(defaultBottom) | ||||||
|  |     }) | ||||||
|  |     open({ | ||||||
|  |       placement: 'bottomLeft', | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  |       expect($$('.ant-notification-bottomLeft').length).toBe(1) | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  | 
 | ||||||
|  |     }) | ||||||
|  |     await asyncExpect(() => { | ||||||
|  | 
 | ||||||
|  |     }) | ||||||
|  |   }) | ||||||
|  | 
 | ||||||
|  |   it('change notification placement by `config` method', () => { | ||||||
|  |     let style | ||||||
|  | 
 | ||||||
|  |     // topLeft
 | ||||||
|  |     config({ | ||||||
|  |       placement: 'topLeft', | ||||||
|  |       top: '50px', | ||||||
|  |       bottom: '50px', | ||||||
|  |     }) | ||||||
|  |     style = getStyle($$('.ant-notification-topLeft')[0]) | ||||||
|  |     expect(style.top).toBe('50px') | ||||||
|  |     expect(style.left).toBe('0px') | ||||||
|  |     expect(style.bottom).toBe('') | ||||||
|  | 
 | ||||||
|  |     // topRight
 | ||||||
|  |     config({ | ||||||
|  |       placement: 'topRight', | ||||||
|  |       top: '100px', | ||||||
|  |       bottom: '50px', | ||||||
|  |     }) | ||||||
|  |     style = getStyle($$('.ant-notification-topRight')[0]) | ||||||
|  |     expect(style.top).toBe('100px') | ||||||
|  |     expect(style.right).toBe('0px') | ||||||
|  |     expect(style.bottom).toBe('') | ||||||
|  | 
 | ||||||
|  |     // bottomRight
 | ||||||
|  |     config({ | ||||||
|  |       placement: 'bottomRight', | ||||||
|  |       top: '50px', | ||||||
|  |       bottom: '100px', | ||||||
|  |     }) | ||||||
|  |     style = getStyle($$('.ant-notification-bottomRight')[0]) | ||||||
|  |     expect(style.top).toBe('') | ||||||
|  |     expect(style.right).toBe('0px') | ||||||
|  |     expect(style.bottom).toBe('100px') | ||||||
|  | 
 | ||||||
|  |     // bottomLeft
 | ||||||
|  |     config({ | ||||||
|  |       placement: 'bottomLeft', | ||||||
|  |       top: 100, | ||||||
|  |       bottom: 50, | ||||||
|  |     }) | ||||||
|  |     style = getStyle($$('.ant-notification-bottomLeft')[0]) | ||||||
|  |     expect(style.top).toBe('') | ||||||
|  |     expect(style.left).toBe('0px') | ||||||
|  |     expect(style.bottom).toBe('50px') | ||||||
|  |   }) | ||||||
|  |   it('change notification mountNode by `config` method', () => { | ||||||
|  |     const $container = document.createElement('div') | ||||||
|  |     document.body.appendChild($container) | ||||||
|  |     config({ | ||||||
|  |       top: '50px', | ||||||
|  |       bottom: '100px', | ||||||
|  |       getContainer () { | ||||||
|  |         return $container | ||||||
|  |       }, | ||||||
|  |     }) | ||||||
|  |     expect($container.querySelector('.ant-notification')).not.toBe(null) | ||||||
|  |     $container.remove() | ||||||
|  |   }) | ||||||
|  | }) | ||||||
|  | @ -28,10 +28,10 @@ function setNotificationConfig (options) { | ||||||
|     defaultPlacement = placement |     defaultPlacement = placement | ||||||
|   } |   } | ||||||
|   if (bottom !== undefined) { |   if (bottom !== undefined) { | ||||||
|     defaultBottom = bottom |     defaultBottom = typeof bottom === 'number' ? `${bottom}px` : bottom | ||||||
|   } |   } | ||||||
|   if (top !== undefined) { |   if (top !== undefined) { | ||||||
|     defaultTop = top |     defaultTop = typeof top === 'number' ? `${top}px` : top | ||||||
|   } |   } | ||||||
|   if (getContainer !== undefined) { |   if (getContainer !== undefined) { | ||||||
|     defaultGetContainer = getContainer |     defaultGetContainer = getContainer | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 tjz
						tjz