bdd.it('should accept only a callback to disengage the service', function() { var engaged = true; var decorated = decorateService({ disengage: function() { engaged = false; }, }); expect(decorated).to.be.a('function'); var handle = decorated(); expect(engaged).to.equal(true); expect(handle).to.be.a('object'); expect(handle.disengage).to.be.a('function'); handle.disengage(); expect(engaged).to.equal(false); });
bdd.it('should allow to force disengage()', function() { var engaged = false; var decorated = decorateService({ engage: function() { engaged = true; }, disengage: function() { engaged = false; }, }); var one = decorated(); decorated(); expect(engaged).to.equal(true); one.disengage({force: true}); expect(engaged).to.equal(false); });
bdd.it('should allow more disengage() than engage() calls', function() { var engaged = false; var decorated = decorateService({ engage: function() { engaged = true; }, disengage: function() { engaged = false; }, }); var handle = decorated(); expect(engaged).to.equal(true); handle.disengage(); expect(engaged).to.equal(false); handle.disengage(); expect(engaged).to.equal(false); });
bdd.it('should engage and disengage the service', function() { var engaged = false; var decorated = decorateService({ engage: function() { engaged = true; }, disengage: function() { engaged = false; }, }); expect(decorated).to.be.a('function'); var handle = decorated(); expect(engaged).to.equal(true, 'started after engage'); expect(handle).to.be.a('object'); expect(handle.disengage).to.be.a('function'); handle.disengage(); expect(engaged).to.equal(false, 'stopped after disengage'); });
bdd.it('should keep track of the number of engage() calls', function() { var engaged = false; var decorated = decorateService({ engage: function() { engaged = true; }, disengage: function() { engaged = false; }, }); var one = decorated(); var two = decorated(); expect(one).to.be.equal(two); expect(engaged).to.equal(true); one.disengage(); expect(engaged).to.equal(true); two.disengage(); expect(engaged).to.equal(false); });
bdd.it('should accept custom service handles', function() { var engaged = false; var decorated = decorateService({ engage: function() { engaged = true; return { world: 123, }; }, disengage: function() { engaged = false; }, }); var handle = decorated(); decorated(); expect(engaged).to.equal(true); expect(handle.world).to.equal(123); handle.disengage({force: true}); expect(engaged).to.equal(false); });