Created
September 13, 2012 22:48
-
-
Save linzhp/3718306 to your computer and use it in GitHub Desktop.
A jasmine spec showing that events may not be handled in the order they are triggered
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
describe('A jquery element', function() { | |
it('should invoke handlers in the order of events triggered from it', function() { | |
var tokens = []; | |
var elem = document.createElement('div'); | |
function e1Handler1(payload) { | |
tokens.push('e1Handler1'); | |
$(elem).trigger('Event2'); | |
} | |
function e1Handler2(payload) {tokens.push('e1Handler2');} | |
function e2Handler1(payload) {tokens.push('e2Handler1');} | |
$(elem).bind('Event1', e1Handler1); | |
$(elem).bind('Event1', e1Handler2); | |
$(elem).bind('Event2', e2Handler1); | |
$(elem).trigger('Event1', {}); | |
expect(tokens).toBe(['e1Handler1', 'e1Handler2', 'e2Handler1']); | |
}); | |
}); | |
describe('An HTML element', function() { | |
it('should invoke handlers in the order of events triggered from it', function() { | |
var tokens = []; | |
var elem = document.createElement('div'); | |
var e1 = new CustomEvent('Event1'); | |
var e2 = new CustomEvent('Event2'); | |
function e1Handler1(payload) { | |
tokens.push('e1Handler1'); | |
elem.dispatchEvent(e2); | |
} | |
function e1Handler2(payload) {tokens.push('e1Handler2');} | |
function e2Handler1(payload) {tokens.push('e2Handler1');} | |
elem.addEventListener('Event1', e1Handler1); | |
elem.addEventListener('Event1', e1Handler2); | |
elem.addEventListener('Event2', e2Handler1); | |
elem.dispatchEvent(e1); | |
expect(tokens).toBe(['e1Handler1', 'e1Handler2', 'e2Handler1']); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment