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.
		
		
		
		
		
			
		
			
				
					65 lines
				
				2.0 KiB
			
		
		
			
		
	
	
					65 lines
				
				2.0 KiB
			| 
											3 years ago
										 | var assert = require('assert'); | ||
|  | 
 | ||
|  | var deprecate = require(__dirname + '/../'); | ||
|  | 
 | ||
|  | var output = { | ||
|  |   _text: [], | ||
|  |   _clear: function() { | ||
|  |     this._text = []; | ||
|  |   }, | ||
|  |   write: function(message) { | ||
|  |     this._text.push(message); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | describe('deprecate', function() { | ||
|  |   beforeEach(function() { | ||
|  |     output._clear(); | ||
|  |     deprecate.stream = output; | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('does nothing if silence is turned on', function() { | ||
|  |     deprecate.silence = true; | ||
|  |     deprecate('this method is deprecated and will be removed'); | ||
|  |     assert.equal(output._text.length, 0); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('prints to output if silence is turned off', function() { | ||
|  |     deprecate.silence = false; | ||
|  |     deprecate('line1', 'line2', 'line3'); | ||
|  |     var text = output._text.join(' '); | ||
|  |     assert(text.indexOf('WARNING') > 0, 'should have contained the string "warning"'); | ||
|  |     assert(text.indexOf('line1') > 0, 'should have contained the string "line1"'); | ||
|  |     assert(text.indexOf('line2') > 0, 'should have contained the string "line2"'); | ||
|  |     assert(text.indexOf('line2') > text.indexOf('line1'), 'line 2 should come after line 1'); | ||
|  |     assert(text.indexOf(deprecate.color) > 0, 'should have color'); | ||
|  |   }); | ||
|  | 
 | ||
|  | 
 | ||
|  |   it('does not print color if color turned off', function() { | ||
|  |     deprecate.color = false; | ||
|  |     deprecate('test'); | ||
|  |     var text = output._text.join(' '); | ||
|  |     assert.equal(text.indexOf(deprecate.color), -1, 'should not have color string'); | ||
|  |     assert.equal(text.indexOf('\x1b[0m'), -1, 'should not have reset color char '); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('only prints once for each function deprecated', function() { | ||
|  |     var someDeprecatedMethod = function() { | ||
|  |       deprecate('first'); | ||
|  |     } | ||
|  |     var someOtherDeprecatedMethod = function() { | ||
|  |       deprecate('second'); | ||
|  |     } | ||
|  |     assert.equal(output._text.length, 0); | ||
|  |     someDeprecatedMethod(); | ||
|  |     var length = output._text.length; | ||
|  |     assert(length > 0, "should have printed deprecation warning"); | ||
|  |     someDeprecatedMethod(); | ||
|  |     assert.equal(length, output._text.length, "should not have warned again"); | ||
|  |     someOtherDeprecatedMethod(); | ||
|  |     assert(output._text.length > length); | ||
|  |   }); | ||
|  | 
 | ||
|  | }); |