124 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
import { asyncExpect } from '@/tests/utils';
 | 
						|
import notification from '..';
 | 
						|
import Icon from '../../icon';
 | 
						|
 | 
						|
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();
 | 
						|
  });
 | 
						|
 | 
						|
  it('trigger onClick', () => {
 | 
						|
    notification.open({
 | 
						|
      message: 'Notification Title',
 | 
						|
      duration: 0,
 | 
						|
    });
 | 
						|
    expect(document.querySelectorAll('.ant-notification').length).toBe(1);
 | 
						|
  });
 | 
						|
 | 
						|
  it('support closeIcon', async () => {
 | 
						|
    await asyncExpect(() => {
 | 
						|
      notification.open({
 | 
						|
        message: 'Notification Title',
 | 
						|
        duration: 0,
 | 
						|
        closeIcon: h => <Icon type="step-backward" />,
 | 
						|
      });
 | 
						|
    });
 | 
						|
    await asyncExpect(() => {
 | 
						|
      expect(document.querySelectorAll('.anticon-step-backward').length).toBe(1);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  it('support config closeIcon', async () => {
 | 
						|
    notification.config({
 | 
						|
      closeIcon: h => <Icon type="step-backward" />,
 | 
						|
    });
 | 
						|
    await asyncExpect(() => {
 | 
						|
      notification.open({
 | 
						|
        message: 'Notification Title',
 | 
						|
        duration: 0,
 | 
						|
        closeIcon: h => <Icon type="step-backward" />,
 | 
						|
      });
 | 
						|
    });
 | 
						|
    await asyncExpect(() => {
 | 
						|
      expect(document.querySelectorAll('.anticon-step-backward').length).toBe(1);
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |