Skip to content

Commit

Permalink
Update: Refactor tests (closes #103)
Browse files Browse the repository at this point in the history
  • Loading branch information
phated committed Sep 20, 2016
1 parent 5b2351b commit 917d362
Show file tree
Hide file tree
Showing 9 changed files with 263 additions and 166 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"eslint": "^1.7.3",
"eslint-config-gulp": "^2.0.0",
"event-stream": "^3.1.0",
"expect": "^1.20.2",
"github-changes": "^1.0.1",
"istanbul": "^0.3.0",
"istanbul-coveralls": "^1.0.1",
Expand Down
21 changes: 12 additions & 9 deletions test/clone-buffer.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
'use strict';

var expect = require('expect');

var cloneBuffer = require('../lib/cloneBuffer');
var should = require('should');
require('mocha');

describe('cloneBuffer()', function() {
it('should return a new Buffer reference', function(done) {

it('returns a new Buffer reference', function(done) {
var testBuffer = new Buffer('test');
var testBuffer2 = cloneBuffer(testBuffer);

should.exist(testBuffer2, 'should return something');
(testBuffer2 instanceof Buffer).should.equal(true, 'should return a Buffer');
testBuffer2.should.not.equal(testBuffer, 'pointer should change');
expect(testBuffer2).toExist();
expect(testBuffer2).toBeA(Buffer);
expect(testBuffer2).toNotEqual(testBuffer);
done();
});

it('should not replicate modifications to the original buffer', function(done) {
it('does not replicate modifications to the original Buffer', function(done) {
var testBuffer = new Buffer('test');
var testBuffer2 = cloneBuffer(testBuffer);

// Test that changes dont modify both pointers
testBuffer2.write('w');

testBuffer.toString('utf8').should.equal('test', 'original should stay the same');
testBuffer2.toString('utf8').should.equal('west', 'new buffer should be modified');
expect(testBuffer.toString('utf8')).toEqual('test');
expect(testBuffer2.toString('utf8')).toEqual('west');
done();
});
});
191 changes: 113 additions & 78 deletions test/file.js
Original file line number Diff line number Diff line change
@@ -1,164 +1,199 @@
var Stream = require('readable-stream');
'use strict';

var fs = require('fs');
var path = require('path');
var expect = require('expect');
var Stream = require('readable-stream');
var es = require('event-stream');

var File = require('../');

var should = require('should');
require('mocha');

describe('File', function() {

describe('isVinyl()', function() {
it('should return true on a vinyl object', function(done) {

it('returns true for a Vinyl object', function(done) {
var file = new File();
File.isVinyl(file).should.equal(true);
var result = File.isVinyl(file);
expect(result).toEqual(true);
done();
});

it('returns false for a normal object', function(done) {
var result = File.isVinyl({});
expect(result).toEqual(false);
done();
});

it('returns false for null', function(done) {
var result = File.isVinyl(null);
expect(result).toEqual(false);
done();
});

it('returns false for a string', function(done) {
var result = File.isVinyl('foobar');
expect(result).toEqual(false);
done();
});

it('returns false for a String object', function(done) {
var result = File.isVinyl(new String('foobar'));
expect(result).toEqual(false);
done();
});

it('returns false for a number', function(done) {
var result = File.isVinyl(1);
expect(result).toEqual(false);
done();
});
it('should return false on a normal object', function(done) {
File.isVinyl({}).should.equal(false);

it('returns false for a Number object', function(done) {
var result = File.isVinyl(new Number(1));
expect(result).toEqual(false);
done();
});
it('should return false on a null object', function(done) {
File.isVinyl(null).should.equal(false);

// This is based on current implementation
// A test was added to document and make aware during internal changes
// TODO: decide if this should be leak-able
it('returns true for a mocked object', function(done) {
var result = File.isVinyl({ _isVinyl: true });
expect(result).toEqual(true);
done();
});
});
describe('constructor()', function() {
it('should default cwd to process.cwd', function(done) {

describe('defaults', function() {

it('defaults cwd to process.cwd', function(done) {
var file = new File();
file.cwd.should.equal(process.cwd());
expect(file.cwd).toEqual(process.cwd());
done();
});

it('should default base to cwd', function(done) {
var cwd = path.normalize('/');
var file = new File({ cwd: cwd });
file.base.should.equal(cwd);
it('defaults base to process.cwd', function(done) {
var file = new File();
expect(file.base).toEqual(process.cwd());
done();
});

it('should default base to cwd even when none is given', function(done) {
var file = new File();
file.base.should.equal(process.cwd());
it('defaults base to cwd property', function(done) {
var cwd = path.normalize('/');
var file = new File({ cwd: cwd });
expect(file.base).toEqual(cwd);
done();
});

it('should default path to null', function(done) {
it('defaults path to null', function(done) {
var file = new File();
should.not.exist(file.path);
expect(file.path).toNotExist();
expect(file.path).toEqual(null);
done();
});

it('should default history to []', function(done) {
it('defaults history to an empty array', function(done) {
var file = new File();
file.history.should.eql([]);
expect(file.history).toEqual([]);
done();
});

it('should default stat to null', function(done) {
it('defaults stat to null', function(done) {
var file = new File();
should.not.exist(file.stat);
expect(file.stat).toNotExist();
expect(file.stat).toEqual(null);
done();
});

it('should default contents to null', function(done) {
it('defaults contents to null', function(done) {
var file = new File();
should.not.exist(file.contents);
expect(file.contents).toNotExist();
expect(file.contents).toEqual(null);
done();
});
});

describe('constructor()', function() {

it('should set base to given value', function(done) {
it('sets base', function(done) {
var val = path.normalize('/');
var file = new File({ base: val });
file.base.should.equal(val);
expect(file.base).toEqual(val);
done();
});

it('should set cwd to given value', function(done) {
it('sets cwd', function(done) {
var val = path.normalize('/');
var file = new File({ cwd: val });
file.cwd.should.equal(val);
expect(file.cwd).toEqual(val);
done();
});

it('should set path to given value', function(done) {
it('sets path (and history)', function(done) {
var val = path.normalize('/test.coffee');
var file = new File({ path: val });
file.path.should.equal(val);
file.history.should.eql([val]);
expect(file.path).toEqual(val);
expect(file.history).toEqual([val]);
done();
});

it('should set history to given value', function(done) {
it('sets history (and path)', function(done) {
var val = path.normalize('/test.coffee');
var file = new File({ history: [val] });
file.path.should.equal(val);
file.history.should.eql([val]);
expect(file.path).toEqual(val);
expect(file.history).toEqual([val]);
done();
});

it('should set stat to given value', function(done) {
it('sets stat', function(done) {
var val = {};
var file = new File({ stat: val });
file.stat.should.equal(val);
expect(file.stat).toEqual(val);
done();
});

it('should set contents to given value', function(done) {
it('sets contents', function(done) {
var val = new Buffer('test');
var file = new File({ contents: val });
file.contents.should.equal(val);
expect(file.contents).toEqual(val);
done();
});

it('should set custom properties', function(done) {
it('sets custom properties', function(done) {
var sourceMap = {};
var file = new File({ sourceMap: sourceMap });
file.sourceMap.should.equal(sourceMap);
expect(file.sourceMap).toEqual(sourceMap);
done();
});

it('should normalize path', function() {
var file = new File({ path: '/test/foo/../test.coffee' });

if (process.platform === 'win32') {
file.path.should.equal('\\test\\test.coffee');
file.history.should.eql(['\\test\\test.coffee']);
} else {
file.path.should.equal('/test/test.coffee');
file.history.should.eql(['/test/test.coffee']);
}
it('normalizes path', function() {
var val = '/test/foo/../test.coffee';
var expected = path.normalize(val);
var file = new File({ path: val });
expect(file.path).toEqual(expected);
expect(file.history).toEqual([expected]);
});

it('should correctly normalize and strip trailing sep from path', function() {
var file = new File({ path: '/test/foo/../foo/' });

if (process.platform === 'win32') {
file.path.should.equal('\\test\\foo');
} else {
file.path.should.equal('/test/foo');
}
it('normalizes and strips trailing separator from path', function() {
var val = '/test/foo/../foo/';
var expected = path.normalize(val.slice(0, -1));
var file = new File({ path: val });
expect(file.path).toEqual(expected);
});

it('should correctly normalize and strip trailing sep from history', function() {
var file = new File({
history: [
'/test/foo/../foo/',
'/test/bar/../bar/',
],
it('normalizes and strips trailing separator from history', function() {
var val = [
'/test/foo/../foo/',
'/test/bar/../bar/',
];
var expected = val.map(function(p) {
return path.normalize(p.slice(0, -1));
});

if (process.platform === 'win32') {
file.history.should.eql([
'\\test\\foo',
'\\test\\bar',
]);
} else {
file.history.should.eql([
'/test/foo',
'/test/bar',
]);
}
var file = new File({ history: val });
expect(file.history).toEqual(expected);
});

it('should normalize history', function() {
Expand Down
Loading

0 comments on commit 917d362

Please sign in to comment.