Sha256: 815b1cd50614f422822bd570c2f1804520b5bc21d7fa91df9661342c5cddf9b9
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
var observer = require('booster/support/observer'); describe('observer', function() { var Subject = function() { }; var Observer = function() { }; _.extend(Subject.prototype, Backbone.Events); _.extend(Observer.prototype, observer.mixin(), { test: function() {} }); beforeEach(function() { this.subjects = [new Subject(), new Subject()]; this.observer = new Observer(); spyOn(this.observer, 'test'); }); it('should allow unobserving a single subject and event', function() { var observer = this.observer; _.each(this.subjects, function(subject) { observer.observe(subject, 'change:one', observer.test); observer.observe(subject, 'change:two', observer.test); subject.trigger('change:one'); subject.trigger('change:two'); }); expect(observer.test.callCount).toEqual(4); _.each(this.subjects, function(subject) { observer.unobserve(subject, 'change:one', observer.test); subject.trigger('change:one'); subject.trigger('change:two'); }); expect(observer.test.callCount).toEqual(6); }); it('should allow unobserving all subjects', function() { var subjects = [new Subject(), new Subject()]; var observer = new Observer(); spyOn(observer, 'test'); _.each(subjects, function(subject, index) { observer.observe(subject, 'change', observer.test); subject.trigger('change'); expect(observer.test.callCount).toEqual(index + 1); }); observer.unobserve(); expect(observer._subjects).toEqual(undefined); _.each(subjects, function(subject) { subject.trigger('change'); expect(observer.test.callCount).toEqual(2); }); }); })
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
booster-0.0.1 | test/dummy/app/assets/javascripts/booster/support/observer_spec.js.boost |