suite.test('off (all named)', function () { const dispatcher = new EventDispatcher(); let data = ''; const listenerA = function () { data += 'a'; }; const listenerB = function () { data += 'b'; }; const listenerC = function () { data += 'c'; }; dispatcher.on('click', listenerA); dispatcher.on('click', listenerB); dispatcher.on('keydown', listenerC); dispatcher.off('click'); data = ''; dispatcher.fire('click'); dispatcher.fire('keydown'); LegacyUnit.equal(data, 'c'); });
suite.test('fire (no event listeners)', function () { const dispatcher = new EventDispatcher(); let args; args = dispatcher.fire('click', { test: 1 }); LegacyUnit.equal(args.test, 1); LegacyUnit.equal(args.isDefaultPrevented(), false); LegacyUnit.equal(args.isPropagationStopped(), false); LegacyUnit.equal(args.isImmediatePropagationStopped(), false); LegacyUnit.equal(args.target, dispatcher); args = dispatcher.fire('click'); LegacyUnit.equal(args.isDefaultPrevented(), false); LegacyUnit.equal(args.isPropagationStopped(), false); LegacyUnit.equal(args.isImmediatePropagationStopped(), false); });
suite.test('on', function () { const dispatcher = new EventDispatcher(); let data = ''; LegacyUnit.equal(dispatcher.on('click', function () { data += 'a'; }), dispatcher); LegacyUnit.equal(dispatcher.on('click keydown', function () { data += 'b'; }), dispatcher); dispatcher.fire('click'); LegacyUnit.equal(data, 'ab'); dispatcher.fire('keydown'); LegacyUnit.equal(data, 'abb'); });
suite.test('once (prepend)', function () { const dispatcher = new EventDispatcher(); let data = ''; LegacyUnit.equal(dispatcher.on('click', function () { data += 'a'; }), dispatcher); LegacyUnit.equal(dispatcher.once('click', function () { data += 'b'; }, true), dispatcher); LegacyUnit.equal(dispatcher.on('click', function () { data += 'c'; }), dispatcher); dispatcher.fire('click'); LegacyUnit.equal(data, 'bac'); dispatcher.fire('click'); LegacyUnit.equal(data, 'bacac'); });
suite.test('beforeFire setting', function () { let lastArgs, dispatcher, args; dispatcher = new EventDispatcher({ beforeFire (args) { lastArgs = args; } }); args = dispatcher.fire('click'); LegacyUnit.equal(lastArgs === args, true); });
suite.test('fire (event listeners) stopImmediatePropagation', function () { const dispatcher = new EventDispatcher(); let data = ''; dispatcher.on('click', function (e) { data += 'a'; e.stopImmediatePropagation(); }); dispatcher.on('click', function () { data += 'b'; }); dispatcher.fire('click', { test: 1 }); LegacyUnit.equal(data, 'a'); });
suite.test('fire (event listeners)', function () { const dispatcher = new EventDispatcher(); let data = ''; dispatcher.on('click', function () { data += 'a'; }); dispatcher.on('click', function () { data += 'b'; }); dispatcher.fire('click', { test: 1 }); LegacyUnit.equal(data, 'ab'); });
suite.test('once (unbind)', function () { const dispatcher = new EventDispatcher(); let data = ''; const handler = function () { data += 'b'; }; dispatcher.once('click', function () { data += 'a'; }); dispatcher.once('click', handler); dispatcher.off('click', handler); dispatcher.fire('click'); LegacyUnit.equal(data, 'a'); });
suite.test('beforeFire setting (stopImmediatePropagation)', function () { let lastArgs, dispatcher, args, data = ''; dispatcher = new EventDispatcher({ beforeFire (args) { lastArgs = args; args.stopImmediatePropagation(); } }); const listenerA = function () { data += 'a'; }; dispatcher.on('click', listenerA); args = dispatcher.fire('click'); LegacyUnit.equal(lastArgs === args, true); LegacyUnit.equal(data, ''); });
suite.test('off (all specific observer)', function () { const dispatcher = new EventDispatcher(); let data = ''; const listenerA = function () { data += 'a'; }; const listenerB = function () { data += 'b'; }; dispatcher.on('click', listenerA); dispatcher.on('click', listenerB); dispatcher.off('click', listenerB); data = ''; dispatcher.fire('click'); LegacyUnit.equal(data, 'a'); });