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

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);
});
});