172 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
| 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()
 | |
|   })
 | |
| })
 |