Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/wincloud_gateway/node_modules/consolidated-events/__tests__/ drwxr-xr-x | |
| Viewing file: Select action/file-type: import TargetEventHandlers from '../src/TargetEventHandlers';
class MockTarget {
constructor() {
this.addEventListener = jest.fn();
this.removeEventListener = jest.fn();
}
}
describe('#add()', () => {
it('adds a single event listener to the target the first time', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const listener = () => {};
eventHandlers.add('scroll', listener);
expect(target.addEventListener).toHaveBeenCalledTimes(1);
expect(target.addEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), undefined);
});
it('does not add an event listener to the target the second time', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const listener = () => {};
const listener2 = () => {};
eventHandlers.add('scroll', listener);
eventHandlers.add('scroll', listener2);
expect(target.addEventListener).toHaveBeenCalledTimes(1);
expect(target.addEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), undefined);
});
it('adds an event listener for each set of options', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const listener = () => {};
const listener2 = () => {};
eventHandlers.add('scroll', listener);
eventHandlers.add('scroll', listener2, { passive: true });
expect(target.addEventListener).toHaveBeenCalledTimes(2);
expect(target.addEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), undefined);
expect(target.addEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), { passive: true });
});
it('adds an event listener for each event type', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const listener = () => {};
const listener2 = () => {};
eventHandlers.add('scroll', listener);
eventHandlers.add('resize', listener2);
expect(target.addEventListener).toHaveBeenCalledTimes(2);
expect(target.addEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), undefined);
expect(target.addEventListener)
.toHaveBeenCalledWith('resize', jasmine.any(Function), undefined);
});
it('returns an unsubscribe function', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const remove = eventHandlers.add('scroll', () => {});
expect(typeof remove).toBe('function');
});
it('unsubscribe deletes the event listener when the only handler is removed', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const remove = eventHandlers.add('scroll', () => {});
remove();
expect(target.removeEventListener).toHaveBeenCalledTimes(1);
expect(target.removeEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), undefined);
});
it('unsubscribe does not throw when called twice', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const remove = eventHandlers.add('scroll', () => {});
remove();
expect(remove).not.toThrow();
});
it('unsubscribe does not delete the event listener when there are more handlers left', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const remove = eventHandlers.add('scroll', () => {});
eventHandlers.add('scroll', () => {});
remove();
expect(target.removeEventListener).toHaveBeenCalledTimes(0);
});
it('unsubscribe called multiple times does not delete the event listener when there are more handlers left', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const remove = eventHandlers.add('scroll', () => {});
eventHandlers.add('scroll', () => {});
remove();
remove();
expect(target.removeEventListener).toHaveBeenCalledTimes(0);
});
it('unsubscribe deletes the event listener when all handlers are removed', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const remove = eventHandlers.add('scroll', () => {});
const remove2 = eventHandlers.add('scroll', () => {});
remove();
remove2();
expect(target.removeEventListener).toHaveBeenCalledTimes(1);
expect(target.removeEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), undefined);
});
it('unsubscribe handles different options separately', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const remove = eventHandlers.add('scroll', () => {});
const remove2 = eventHandlers.add('scroll', () => {}, { passive: true });
remove();
remove2();
expect(target.removeEventListener).toHaveBeenCalledTimes(2);
expect(target.removeEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), undefined);
expect(target.removeEventListener)
.toHaveBeenCalledWith('scroll', jasmine.any(Function), { passive: true });
});
});
describe('#handleEvent', () => {
it('calls each handler', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const handlers = [jest.fn(), jest.fn(), jest.fn()];
handlers.forEach((handler) => {
eventHandlers.add('scroll', handler);
});
const event = {};
eventHandlers.handleEvent('scroll', undefined, event);
handlers.forEach((handler) => {
expect(handler).toHaveBeenCalledTimes(1);
expect(handler).toHaveBeenCalledWith(event);
});
});
it('calls each handler even when one is removed when called', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
let remove;
const firstHandler = jest.fn(() => remove());
remove = eventHandlers.add('scroll', firstHandler);
const secondHandler = jest.fn();
eventHandlers.add('scroll', secondHandler);
const event = {};
eventHandlers.handleEvent('scroll', undefined, event);
expect(firstHandler).toHaveBeenCalledTimes(1);
expect(firstHandler).toHaveBeenCalledWith(event);
expect(secondHandler).toHaveBeenCalledTimes(1);
expect(secondHandler).toHaveBeenCalledWith(event);
});
it('calls each handler with options', () => {
const target = new MockTarget();
const eventHandlers = new TargetEventHandlers(target);
const handlers = [jest.fn(), jest.fn(), jest.fn()];
handlers.forEach((handler) => {
eventHandlers.add('scroll', handler, { passive: true });
});
const event = {};
eventHandlers.handleEvent('scroll', { passive: true }, event);
handlers.forEach((handler) => {
expect(handler).toHaveBeenCalledTimes(1);
expect(handler).toHaveBeenCalledWith(event);
});
});
});
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0344 ]-- |