var common = require('../common');
|
|
var WriteStreamStub = GENTLY.stub('fs', 'WriteStream');
|
|
|
|
var File = require(common.lib + '/file'),
|
|
EventEmitter = require('events').EventEmitter,
|
|
file,
|
|
gently;
|
|
|
|
function test(test) {
|
|
gently = new Gently();
|
|
file = new File();
|
|
test();
|
|
gently.verify(test.name);
|
|
}
|
|
|
|
test(function constructor() {
|
|
assert.ok(file instanceof EventEmitter);
|
|
assert.strictEqual(file.size, 0);
|
|
assert.strictEqual(file.path, null);
|
|
assert.strictEqual(file.name, null);
|
|
assert.strictEqual(file.type, null);
|
|
assert.strictEqual(file.lastModifiedDate, null);
|
|
|
|
assert.strictEqual(file._writeStream, null);
|
|
|
|
(function testSetProperties() {
|
|
var file2 = new File({foo: 'bar'});
|
|
assert.equal(file2.foo, 'bar');
|
|
})();
|
|
});
|
|
|
|
test(function open() {
|
|
var WRITE_STREAM;
|
|
file.path = '/foo';
|
|
|
|
gently.expect(WriteStreamStub, 'new', function (path) {
|
|
WRITE_STREAM = this;
|
|
assert.strictEqual(path, file.path);
|
|
});
|
|
|
|
file.open();
|
|
assert.strictEqual(file._writeStream, WRITE_STREAM);
|
|
});
|
|
|
|
test(function write() {
|
|
var BUFFER = {length: 10},
|
|
CB_STUB,
|
|
CB = function() {
|
|
CB_STUB.apply(this, arguments);
|
|
};
|
|
|
|
file._writeStream = {};
|
|
|
|
gently.expect(file._writeStream, 'write', function (buffer, cb) {
|
|
assert.strictEqual(buffer, BUFFER);
|
|
|
|
gently.expect(file, 'emit', function (event, bytesWritten) {
|
|
assert.ok(file.lastModifiedDate instanceof Date);
|
|
assert.equal(event, 'progress');
|
|
assert.equal(bytesWritten, file.size);
|
|
});
|
|
|
|
CB_STUB = gently.expect(function writeCb() {
|
|
assert.equal(file.size, 10);
|
|
});
|
|
|
|
cb();
|
|
|
|
gently.expect(file, 'emit', function (event, bytesWritten) {
|
|
assert.equal(event, 'progress');
|
|
assert.equal(bytesWritten, file.size);
|
|
});
|
|
|
|
CB_STUB = gently.expect(function writeCb() {
|
|
assert.equal(file.size, 20);
|
|
});
|
|
|
|
cb();
|
|
});
|
|
|
|
file.write(BUFFER, CB);
|
|
});
|
|
|
|
test(function end() {
|
|
var CB_STUB,
|
|
CB = function() {
|
|
CB_STUB.apply(this, arguments);
|
|
};
|
|
|
|
file._writeStream = {};
|
|
|
|
gently.expect(file._writeStream, 'end', function (cb) {
|
|
gently.expect(file, 'emit', function (event) {
|
|
assert.equal(event, 'end');
|
|
});
|
|
|
|
CB_STUB = gently.expect(function endCb() {
|
|
});
|
|
|
|
cb();
|
|
});
|
|
|
|
file.end(CB);
|
|
});
|