Ver código fonte

tests for emitter

Adam Shaw 9 anos atrás
pai
commit
1792201ea7
1 arquivos alterados com 124 adições e 0 exclusões
  1. 124 0
      tests/automated/emitter.js

+ 124 - 0
tests/automated/emitter.js

@@ -0,0 +1,124 @@
+
+describe('emitter', function() {
+	var EmitterMixin = $.fullCalendar.EmitterMixin;
+
+	it('calls a handler', function() {
+		var o = $.extend({}, EmitterMixin);
+		var handlers = {
+			something: function(arg1, arg2) {
+				expect(arg1).toBe(7);
+				expect(arg2).toBe(8);
+			}
+		};
+		spyOn(handlers, 'something').and.callThrough();
+
+		o.on('something', handlers.something);
+		o.trigger('something', 7, 8);
+		expect(handlers.something).toHaveBeenCalled();
+	});
+
+	it('calls a handler with context and args', function() {
+		var customContext = {};
+		var o = $.extend({}, EmitterMixin);
+		var handlers = {
+			something: function(arg1, arg2) {
+				expect(this).toBe(customContext);
+				expect(arg1).toBe(2);
+				expect(arg2).toBe(3);
+			}
+		};
+		spyOn(handlers, 'something').and.callThrough();
+
+		o.on('something', handlers.something);
+		o.triggerWith('something', customContext, [ 2, 3 ]);
+		expect(handlers.something).toHaveBeenCalled();
+	});
+
+	it('unbinds with an exact reference', function() {
+		var o = $.extend({}, EmitterMixin);
+		var handlers = {
+			something: function() {}
+		};
+		spyOn(handlers, 'something');
+
+		o.on('something', handlers.something);
+		o.trigger('something');
+		expect(handlers.something).toHaveBeenCalled();
+
+		o.off('something', handlers.something);
+		o.trigger('something');
+		expect(handlers.something.calls.count()).toBe(1);
+	});
+
+	it('unbinds all when no reference', function() {
+		var o = $.extend({}, EmitterMixin);
+		var handlers = {
+			something1: function() {},
+			something2: function() {}
+		};
+		spyOn(handlers, 'something1');
+		spyOn(handlers, 'something2');
+
+		o.on('something', handlers.something1);
+		o.on('something', handlers.something2);
+
+		o.trigger('something');
+		expect(handlers.something1).toHaveBeenCalled();
+		expect(handlers.something2).toHaveBeenCalled();
+
+		o.off('something');
+		o.trigger('something');
+		expect(handlers.something1.calls.count()).toBe(1);
+		expect(handlers.something2.calls.count()).toBe(1);
+	});
+
+	it('unbinds all', function() {
+		var o = $.extend({}, EmitterMixin);
+		var handlers = {
+			something: function() {},
+			another: function() {}
+		};
+
+		spyOn(handlers, 'something');
+		spyOn(handlers, 'another');
+
+		o.on('something', handlers.something);
+		o.on('another', handlers.another);
+
+		o.trigger('something');
+		o.trigger('another');
+		expect(handlers.something).toHaveBeenCalled();
+		expect(handlers.another).toHaveBeenCalled();
+
+		o.off();
+		o.trigger('something');
+		o.trigger('another');
+		expect(handlers.something.calls.count()).toBe(1);
+		expect(handlers.another.calls.count()).toBe(1);
+	});
+
+	it('unbinds with a namespace', function() {
+		var o = $.extend({}, EmitterMixin);
+		var handlers = {
+			something: function() {},
+			another: function() {}
+		};
+
+		spyOn(handlers, 'something');
+		spyOn(handlers, 'another');
+
+		o.on('something', handlers.something);
+		o.on('another.ns1', handlers.another);
+
+		o.trigger('something');
+		o.trigger('another');
+		expect(handlers.something).toHaveBeenCalled();
+		expect(handlers.another).toHaveBeenCalled();
+
+		o.off('.ns1');
+		o.trigger('something');
+		o.trigger('another');
+		expect(handlers.something.calls.count()).toBe(2);
+		expect(handlers.another.calls.count()).toBe(1);
+	});
+});