170 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			4.5 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) {
 | 
						|
    const style = window.getComputedStyle ? window.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();
 | 
						|
  }
 | 
						|
 | 
						|
  describe('placement', () => {
 | 
						|
    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',
 | 
						|
        bottom: '100px',
 | 
						|
      });
 | 
						|
      await asyncExpect(() => {
 | 
						|
        style = getStyle($$('.ant-notification-bottomRight')[0]);
 | 
						|
        expect(style.top).toBe('');
 | 
						|
        expect(style.right).toBe('0px');
 | 
						|
        expect(style.bottom).toBe('100px');
 | 
						|
      });
 | 
						|
      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();
 | 
						|
  });
 | 
						|
});
 |