Skip to content

Commit 2e928e4

Browse files
Add unit tests run
1 parent 9dab304 commit 2e928e4

2 files changed

Lines changed: 154 additions & 2 deletions

File tree

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"main": "index.js",
66
"bin": "./bin/npm-sass",
77
"scripts": {
8-
"test": "NODE_PATH=$NODE_PATH:\"$(git rev-parse --show-toplevel)/test/fixtures/node_modules\" mocha test/index.js"
8+
"test": "NODE_PATH=$NODE_PATH:\"$(git rev-parse --show-toplevel)/test/fixtures/node_modules\" mocha test/index.js",
9+
"unit-test": "mocha test/units/*.js"
910
},
1011
"repository": {
1112
"type": "git",
@@ -28,6 +29,7 @@
2829
"devDependencies": {
2930
"chai": "^3.5.0",
3031
"css": "^2.2.1",
31-
"mocha": "^3.0.2"
32+
"mocha": "^3.0.2",
33+
"sinon": "^1.17.6"
3234
}
3335
}

test/units/package-test.js

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
var Package = require('../../lib/resolver/package');
2+
var sinon = require('sinon');
3+
var assert = require('assert');
4+
5+
describe('Package', function () {
6+
var subject;
7+
8+
describe('#json', function () {
9+
it('returns the package.json file for the package', function () {
10+
var requireStub = sinon.stub();
11+
var result;
12+
13+
requireStub.withArgs('test-package/package.json')
14+
.returns('the package.json object');
15+
16+
subject = new Package('test-package', requireStub);
17+
18+
result = subject.json();
19+
20+
assert(requireStub.calledWith('test-package/package.json'));
21+
assert.equal(result, 'the package.json object');
22+
});
23+
});
24+
25+
describe('#resolve', function () {
26+
it('resolves a path that is local to the package', function () {
27+
var requireMock = {
28+
resolve: sinon.stub()
29+
};
30+
31+
requireMock.resolve.withArgs('test-package/given-path').returns('npm resolved path');
32+
33+
var subject = new Package('test-package', requireMock);
34+
35+
var result = subject.resolve('given-path');
36+
37+
assert.equal(result, 'npm resolved path');
38+
assert(requireMock.resolve.calledWith('test-package/given-path'));
39+
});
40+
});
41+
42+
describe('#safeResolve', function () {
43+
it('resolves a path that is local to the package (but does not error out if it cannot find it)', function () {
44+
var requireMock = {
45+
resolve: sinon.stub()
46+
};
47+
48+
requireMock.resolve.withArgs('test-package/package.json').returns('/a/b/c/test-package/package.json');
49+
50+
var subject = new Package('test-package', requireMock);
51+
52+
var result = subject.safeResolve('given-path');
53+
54+
assert.equal(result, '/a/b/c/test-package/given-path');
55+
});
56+
});
57+
58+
describe('#dir', function () {
59+
it('returns the directory of the package', function () {
60+
var requireMock = {
61+
resolve: sinon.stub()
62+
};
63+
64+
requireMock.resolve.withArgs('test-package/package.json').returns('/a/b/c/test-package/package.json');
65+
66+
var subject = new Package('test-package', requireMock);
67+
68+
var result = subject.dir();
69+
70+
assert.equal(result, '/a/b/c/test-package');
71+
});
72+
});
73+
74+
describe('#entrypoint', function () {
75+
var requireStub
76+
77+
beforeEach(function () {
78+
requireStub = sinon.stub();
79+
requireStub.withArgs('test-package/package.json');
80+
});
81+
82+
describe('sass', function () {
83+
it('returns the entrypoint file', function () {
84+
requireStub.returns({ sass: 'package-entrypoint' });
85+
86+
var subject = new Package('test-package', requireStub);
87+
88+
var result = subject.entrypoint();
89+
90+
assert.equal(result, 'package-entrypoint');
91+
});
92+
});
93+
94+
describe('style', function () {
95+
it('returns the entrypoint file', function () {
96+
requireStub.returns({ sass: null, style: 'package-entrypoint' });
97+
98+
var subject = new Package('test-package', requireStub);
99+
100+
var result = subject.entrypoint();
101+
102+
assert.equal(result, 'package-entrypoint');
103+
});
104+
});
105+
106+
describe('main', function () {
107+
it('works with scss', function () {
108+
requireStub.returns({ sass: null, style: null, main: 'index.scss' });
109+
110+
var subject = new Package('test-package', requireStub);
111+
112+
var result = subject.entrypoint();
113+
114+
assert.equal(result, 'index.scss');
115+
});
116+
117+
it('works with css', function () {
118+
requireStub.returns({ sass: null, style: null, main: 'index.css' });
119+
120+
var subject = new Package('test-package', requireStub);
121+
122+
var result = subject.entrypoint();
123+
124+
assert.equal(result, 'index.css');
125+
});
126+
127+
it('works with sass', function () {
128+
requireStub.returns({ sass: null, style: null, main: 'index.sass' });
129+
130+
var subject = new Package('test-package', requireStub);
131+
132+
var result = subject.entrypoint();
133+
134+
assert.equal(result, 'index.sass');
135+
});
136+
});
137+
138+
describe('not specified', function () {
139+
it('falls back to styles', function () {
140+
requireStub.returns({ sass: null, style: null, main: null });
141+
142+
var subject = new Package('test-package', requireStub);
143+
144+
var result = subject.entrypoint();
145+
146+
assert.equal(result, 'styles');
147+
});
148+
});
149+
});
150+
});

0 commit comments

Comments
 (0)