You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					95 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					95 lines
				
				1.7 KiB
			| 
											3 years ago
										 | 
 | ||
|  | 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'); | ||
|  |   }) | ||
|  | }) |