aboutsummaryrefslogtreecommitdiffstats
path: root/extlib/leaflet/spec/suites/core/EventsSpec.js
diff options
context:
space:
mode:
authorJoar Wandborg <git@wandborg.com>2012-01-28 18:47:01 +0100
committerJoar Wandborg <git@wandborg.com>2012-01-28 18:47:01 +0100
commit3d0d3bc97270095fae5f9a2508068631c46a5e61 (patch)
tree76778fcacaae35fc5662f276dab512a07bcee186 /extlib/leaflet/spec/suites/core/EventsSpec.js
parentd7bec8577ea1b4d83df097f586324445fed1ef50 (diff)
parent9542a2ba076b7e00e79d7adb1a4e90a095427645 (diff)
downloadmediagoblin-3d0d3bc97270095fae5f9a2508068631c46a5e61.tar.lz
mediagoblin-3d0d3bc97270095fae5f9a2508068631c46a5e61.tar.xz
mediagoblin-3d0d3bc97270095fae5f9a2508068631c46a5e61.zip
Merge remote-tracking branch 'joar/exif-rebase'
Diffstat (limited to 'extlib/leaflet/spec/suites/core/EventsSpec.js')
-rw-r--r--extlib/leaflet/spec/suites/core/EventsSpec.js110
1 files changed, 110 insertions, 0 deletions
diff --git a/extlib/leaflet/spec/suites/core/EventsSpec.js b/extlib/leaflet/spec/suites/core/EventsSpec.js
new file mode 100644
index 00000000..be143866
--- /dev/null
+++ b/extlib/leaflet/spec/suites/core/EventsSpec.js
@@ -0,0 +1,110 @@
+describe('Events', function() {
+ var Klass;
+
+ beforeEach(function() {
+ Klass = L.Class.extend({
+ includes: L.Mixin.Events
+ });
+ });
+
+ describe('#fireEvent', function() {
+
+ it('should fire all listeners added through #addEventListener', function() {
+ var obj = new Klass(),
+ spy = jasmine.createSpy(),
+ spy2 = jasmine.createSpy(),
+ spy3 = jasmine.createSpy();
+
+ obj.addEventListener('test', spy);
+ obj.addEventListener('test', spy2);
+ obj.addEventListener('other', spy3);
+
+ expect(spy).not.toHaveBeenCalled();
+ expect(spy2).not.toHaveBeenCalled();
+ expect(spy3).not.toHaveBeenCalled();
+
+ obj.fireEvent('test');
+
+ expect(spy).toHaveBeenCalled();
+ expect(spy2).toHaveBeenCalled();
+ expect(spy3).not.toHaveBeenCalled();
+ });
+
+ it('should provide event object to listeners and execute them in the right context', function() {
+ var obj = new Klass(),
+ obj2 = new Klass(),
+ foo = {};
+
+ function listener1(e) {
+ expect(e.type).toEqual('test');
+ expect(e.target).toEqual(obj);
+ expect(this).toEqual(obj);
+ expect(e.bar).toEqual(3);
+ };
+
+ function listener2(e) {
+ expect(e.target).toEqual(obj2);
+ expect(this).toEqual(foo);
+ };
+
+ obj.addEventListener('test', listener1);
+ obj2.addEventListener('test', listener2, foo);
+
+ obj.fireEvent('test', {bar: 3});
+ });
+
+ it('should not call listeners removed through #removeEventListener', function() {
+ var obj = new Klass(),
+ spy = jasmine.createSpy();
+
+ obj.addEventListener('test', spy);
+ obj.removeEventListener('test', spy);
+
+ obj.fireEvent('test');
+
+ expect(spy).not.toHaveBeenCalled();
+ });
+ });
+
+ describe('#on, #off & #fire', function() {
+
+ it('should work like #addEventListener && #removeEventListener', function() {
+ var obj = new Klass(),
+ spy = jasmine.createSpy();
+
+ obj.on('test', spy);
+ obj.fire('test');
+
+ expect(spy).toHaveBeenCalled();
+
+ obj.off('test', spy);
+ obj.fireEvent('test');
+
+ expect(spy.callCount).toBeLessThan(2);
+ });
+
+ it('should not override existing methods with the same name', function() {
+ var spy1 = jasmine.createSpy(),
+ spy2 = jasmine.createSpy(),
+ spy3 = jasmine.createSpy();
+
+ var Klass2 = L.Class.extend({
+ includes: L.Mixin.Events,
+ on: spy1,
+ off: spy2,
+ fire: spy3
+ });
+
+ var obj = new Klass2();
+
+ obj.on();
+ expect(spy1).toHaveBeenCalled();
+
+ obj.off();
+ expect(spy2).toHaveBeenCalled();
+
+ obj.fire();
+ expect(spy3).toHaveBeenCalled();
+ });
+ });
+}); \ No newline at end of file