Skip to content

Instantly share code, notes, and snippets.

@mpriour
Created September 6, 2013 19:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mpriour/6468743 to your computer and use it in GitHub Desktop.
Save mpriour/6468743 to your computer and use it in GitHub Desktop.
A set of tests for event listening & firing on esri.dijit._EventedWidget subclasses
require(["dojo/_base/declare", "esri/dijit/_EventedWidget"],
function(declare, _EventedWidget) {
var MyWidget = declare([_EventedWidget], {
test: function() {
this.emit("ee");
}
});
var MyMappedWidget = declare([_EventedWidget], {
_eventMap: {
"data-ready": ["provider"]
},
test: function() {
this.onDataReady("hello");
},
onDataReady: function(provider) {}
});
/** should remove event handles on unmapped widgets **/
function test1() {
var a = new MyWidget();
var fired = 0;
a.tested = false;
var handle = a.on("ee", function() {
//alert("This should execute");
a.tested = true;
fired++;
});
handle.remove();
a.test();
console.log(''+a.tested, ' = false. event listener was removed properly');
console.log(''+fired, ' = 0, event listener was not fired');
}
/** should remove event handles on mapped widgets **/
function test2() {
var a = new MyMappedWidget();
var fired = 0;
a.tested = false;
var handle = a.on("data-ready", function() {
//alert("This should execute");
a.tested = true;
fired++;
});
handle.remove();
a.test();
console.log(''+a.tested, ' = false. event listener was removed properly');
console.log(''+fired, ' = 0, event listener was not fired');
}
/** should fire with object when mapped **/
function test3() {
var a = new MyMappedWidget();
var handle = a.on("data-ready", function(e) {
console.log(typeof(e), ' = object, event object not value was passed');
});
a.test();
}
/** should fire once **/
function test4() {
var a = new MyMappedWidget();
var b = new MyWidget();
var fired = 0;
a.on("data-ready", function(e) {
fired++;
});
b.on('ee', function(e) {
fired++;
});
a.test();
console.log(''+fired, ' = 1, event listener fired exactly once for mapped widget');
b.test();
console.log(''+fired, ' = 2, event listener fired exactly once for unmapped widget');
}
/** should hook up dom events correctly **/
function test5() {
var a = new MyWidget();
var b = new MyMappedWidget();
var fired = 0;
a.on('click', function(evt) {
console.log('evt instanceof UIEvent => ', evt instanceof UIEvent, ", a dom click event was fired and responded to correctly");
fired++;
});
b.on('click', function(evt) {
console.log('evt instanceof UIEvent => ', evt instanceof UIEvent, ", a dom click event was fired and responded to correctly");
fired++;
});
a.domNode.click();
console.log(''+fired, ' = 1, event was handled & fired once for unmapped widget');
b.domNode.click();
console.log(''+fired, ' = 2, event was handled & fired once for mapped widget');
}
var tests = new Array(5);
for (var i = 0; i < tests.length;) {
eval('test'+ (++i) + '()');
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment