Skip to content

Instantly share code, notes, and snippets.

@linzhp
Created September 13, 2012 22:48
Show Gist options
  • Save linzhp/3718306 to your computer and use it in GitHub Desktop.
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
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