%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
var assert = require('assert'); var delegate = require('..'); describe('.method(name)', function(){ it('should delegate methods', function(){ var obj = {}; obj.request = { foo: function(bar){ assert(this == obj.request); return bar; } }; delegate(obj, 'request').method('foo'); obj.foo('something').should.equal('something'); }) }) describe('.getter(name)', function(){ it('should delegate getters', function(){ var obj = {}; obj.request = { get type() { return 'text/html'; } } delegate(obj, 'request').getter('type'); obj.type.should.equal('text/html'); }) }) describe('.setter(name)', function(){ it('should delegate setters', function(){ var obj = {}; obj.request = { get type() { return this._type.toUpperCase(); }, set type(val) { this._type = val; } } delegate(obj, 'request').setter('type'); obj.type = 'hey'; obj.request.type.should.equal('HEY'); }) }) describe('.access(name)', function(){ it('should delegate getters and setters', function(){ var obj = {}; obj.request = { get type() { return this._type.toUpperCase(); }, set type(val) { this._type = val; } } delegate(obj, 'request').access('type'); obj.type = 'hey'; obj.type.should.equal('HEY'); }) }) describe('.fluent(name)', function () { it('should delegate in a fluent fashion', function () { var obj = { settings: { env: 'development' } }; delegate(obj, 'settings').fluent('env'); obj.env().should.equal('development'); obj.env('production').should.equal(obj); obj.settings.env.should.equal('production'); }) })