eventDispatcher.spec.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import EventDispatcher from 'sentry/utils/eventDispatcher';
  2. describe('EventDispatcher', () => {
  3. it('should allow adding event listeners, and triggering events', () => {
  4. const dispatch = new EventDispatcher();
  5. const callback = jest.fn();
  6. dispatch.addEventListener('change', callback);
  7. dispatch.dispatchEvent(new Event('change'));
  8. expect(callback).toHaveBeenCalledTimes(1);
  9. });
  10. it('should allow adding multiple listeners, and triggering events', () => {
  11. const dispatch = new EventDispatcher();
  12. const callback1 = jest.fn();
  13. const callback2 = jest.fn();
  14. dispatch.addEventListener('change', callback1);
  15. dispatch.addEventListener('change', callback2);
  16. dispatch.dispatchEvent(new Event('change'));
  17. expect(callback1).toHaveBeenCalledTimes(1);
  18. expect(callback2).toHaveBeenCalledTimes(1);
  19. });
  20. it('should allow removing listeners, triggering events on whats registered', () => {
  21. const dispatch = new EventDispatcher();
  22. const callback1 = jest.fn();
  23. const callback2 = jest.fn();
  24. dispatch.addEventListener('change', callback1);
  25. dispatch.addEventListener('change', callback2);
  26. dispatch.removeEventListener('change', callback1);
  27. dispatch.dispatchEvent(new Event('change'));
  28. expect(callback1).not.toHaveBeenCalled();
  29. expect(callback2).toHaveBeenCalledTimes(1);
  30. });
  31. });