discord-baymax-bot/node_modules/streamroller/test/BaseRollingFileStream-test.js
2017-03-23 23:52:08 -05:00

94 lines
2.6 KiB
JavaScript

"use strict";
var should = require('should')
, fs = require('fs')
, sandbox = require('sandboxed-module');
describe('BaseRollingFileStream', function() {
describe('when no filename is passed', function() {
it('should throw an error', function() {
var BaseRollingFileStream = require('../lib/BaseRollingFileStream');
(function() {
new BaseRollingFileStream();
}).should.throw();
});
});
describe('default behaviour', function() {
var stream;
before(function() {
var BaseRollingFileStream = require('../lib/BaseRollingFileStream');
stream = new BaseRollingFileStream('basetest.log');
});
after(function(done) {
fs.unlink('basetest.log', done);
});
it('should not want to roll', function() {
stream.shouldRoll().should.eql(false);
});
it('should not roll', function() {
var cbCalled = false;
//just calls the callback straight away, no async calls
stream.roll('basetest.log', function() { cbCalled = true; });
cbCalled.should.eql(true);
});
it('should pass options to the underlying write stream', function() {
var underlyingStreamOptions;
var BaseRollingFileStream = sandbox.require(
'../lib/BaseRollingFileStream',
{
requires: {
'fs': {
createWriteStream: function(filename, options) {
underlyingStreamOptions = options;
return {
on: function() {}
};
}
}
}
}
);
var stream = new BaseRollingFileStream('cheese.log', { encoding: 'utf904'});
stream.openTheStream();
underlyingStreamOptions.should.eql({ encoding: 'utf904', mode: 420, flags: 'a'});
});
});
describe('when end is called', function() {
it('should close the underlying stream', function(done) {
var stream = new (require('../lib/BaseRollingFileStream'))('cheese.log');
stream.theStream.on('close', function() {
done();
});
stream.end();
});
});
describe('when the file is in a non-existent directory', function() {
var stream;
before(function() {
var BaseRollingFileStream = require('../lib/BaseRollingFileStream');
stream = new BaseRollingFileStream('subdir/test.log');
});
after(function() {
fs.unlinkSync('subdir/test.log');
fs.rmdir('subdir');
});
it('should create the directory', function() {
fs.existsSync('subdir/test.log').should.eql(true);
stream.end();
});
});
});