Skip to content

Commit 93516a0

Browse files
committed
test: add sinon.js for spies, deprecate current assertions
- the goal is to get overall cleaner test. - chai and sinon are standard libraries for testing assertions and spies. We should not use custom ones.
1 parent 93e284e commit 93516a0

12 files changed

+169
-13
lines changed

package-lock.json

+119-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"mock-stdin": "^0.3.0",
6161
"mustache": "^2.1.3",
6262
"semver": "^5.0.1",
63+
"sinon": "^7.5.0",
6364
"typescript": "^3.4.3",
6465
"underscore": "^1.5.1",
6566
"webpack": "^1.12.6",

spec/.eslintrc

+6-3
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,18 @@
2828
"stop": true,
2929
"ok": true,
3030
"strictEqual": true,
31-
"define": true
31+
"define": true,
32+
"expect": true,
33+
"chai": true
3234
},
3335
"env": {
3436
"mocha": true
3537
},
3638
"rules": {
3739
// Disabling for tests, for now.
38-
"no-path-concat": 0,
40+
"no-path-concat": "off",
3941

40-
"no-var": 0
42+
"no-var": "off",
43+
"dot-notation": "off"
4144
}
4245
}

spec/amd-runtime.html

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@
1818
document.documentElement.className = 'headless';
1919
}
2020
</script>
21+
<script src="/node_modules/sinon/pkg/sinon.js"></script>
22+
<script src="/node_modules/chai/chai.js"></script>
23+
<script src="/node_modules/dirty-chai/lib/dirty-chai.js"></script>
2124
<script src="/node_modules/mocha/mocha.js"></script>
2225
<script>
26+
window.expect = chai.expect;
2327
mocha.setup('bdd');
2428
</script>
25-
2629
<script src="/spec/env/json2.js"></script>
2730
<script src="/spec/env/require.js"></script>
2831

spec/amd.html

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919
document.documentElement.className = 'headless';
2020
}
2121
</script>
22+
<script src="/node_modules/sinon/pkg/sinon.js"></script>
23+
<script src="/node_modules/chai/chai.js"></script>
24+
<script src="/node_modules/dirty-chai/lib/dirty-chai.js"></script>
2225
<script src="/node_modules/mocha/mocha.js"></script>
2326
<script>
27+
window.expect = chai.expect;
2428
mocha.setup('bdd');
2529
</script>
26-
2730
<script src="/spec/env/json2.js"></script>
2831
<script src="/spec/env/require.js"></script>
2932

spec/env/browser.js

+9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@ require('./common');
33
var fs = require('fs'),
44
vm = require('vm');
55

6+
var chai = require('chai');
7+
var dirtyChai = require('dirty-chai');
8+
9+
10+
chai.use(dirtyChai);
11+
global.expect = chai.expect;
12+
13+
global.sinon = require('sinon');
14+
615
global.Handlebars = 'no-conflict';
716

817
var filename = 'dist/handlebars.js';

spec/env/common.js

+8
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,20 @@ global.compileWithPartials = function(string, hashOrArray, partials) {
6363
};
6464

6565

66+
/**
67+
* @deprecated Use chai's expect-style API instead (`expect(actualValue).to.equal(expectedValue)`)
68+
* @see https://www.chaijs.com/api/bdd/
69+
*/
6670
global.equals = global.equal = function equals(a, b, msg) {
6771
if (a !== b) {
6872
throw new AssertError("'" + a + "' should === '" + b + "'" + (msg ? ': ' + msg : ''), equals);
6973
}
7074
};
7175

76+
/**
77+
* @deprecated Use chai's expect-style API instead (`expect(actualValue).to.equal(expectedValue)`)
78+
* @see https://www.chaijs.com/api/bdd/#method_throw
79+
*/
7280
global.shouldThrow = function(callback, type, msg) {
7381
var failed;
7482
try {

spec/env/node.js

+3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@ require('./common');
33
var chai = require('chai');
44
var dirtyChai = require('dirty-chai');
55

6+
67
chai.use(dirtyChai);
78
global.expect = chai.expect;
89

10+
global.sinon = require('sinon');
11+
912
global.Handlebars = require('../../lib');
1013

1114
global.CompilerContext = {

spec/index.html

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@
1919
document.documentElement.className = 'headless';
2020
}
2121
</script>
22-
<script src="/node_modules/mocha/mocha.js"></script>
22+
<script src="/node_modules/sinon/pkg/sinon.js"></script>
2323
<script src="/node_modules/chai/chai.js"></script>
2424
<script src="/node_modules/dirty-chai/lib/dirty-chai.js"></script>
25+
<script src="/node_modules/mocha/mocha.js"></script>
2526
<script>
27+
window.expect = chai.expect;
2628
mocha.setup('bdd');
2729
</script>
2830
<script src="/dist/handlebars.js"></script>
29-
3031
<script src="/spec/env/json2.js"></script>
3132
<script src="/spec/env/common.js"></script>
3233
<script>

spec/security.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ describe('security issues', function() {
7575
});
7676
it('should throw an exception when calling "{{blockHelperMissing "abc" .}}" ', function() {
7777
var functionCalls = [];
78-
shouldThrow(function() {
78+
expect(function() {
7979
var template = Handlebars.compile('{{blockHelperMissing "abc" .}}');
8080
template({ fn: function() { functionCalls.push('called'); }});
81-
}, Error);
82-
equals(functionCalls.length, 0);
81+
}).to.throw(Error);
82+
expect(functionCalls.length).to.equal(0);
8383
});
8484
it('should throw an exception when calling "{{#blockHelperMissing .}}{{/blockHelperMissing}}"', function() {
8585
shouldThrow(function() {

spec/umd-runtime.html

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@
1818
document.documentElement.className = 'headless';
1919
}
2020
</script>
21+
<script src="/node_modules/sinon/pkg/sinon.js"></script>
22+
<script src="/node_modules/chai/chai.js"></script>
23+
<script src="/node_modules/dirty-chai/lib/dirty-chai.js"></script>
2124
<script src="/node_modules/mocha/mocha.js"></script>
2225
<script>
26+
window.expect = chai.expect;
2327
mocha.setup('bdd');
2428
</script>
25-
2629
<script src="/spec/env/json2.js"></script>
2730
<script src="/spec/env/require.js"></script>
2831

spec/umd.html

+5-1
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@
1818
document.documentElement.className = 'headless';
1919
}
2020
</script>
21+
22+
<script src="/node_modules/sinon/pkg/sinon.js"></script>
23+
<script src="/node_modules/chai/chai.js"></script>
24+
<script src="/node_modules/dirty-chai/lib/dirty-chai.js"></script>
2125
<script src="/node_modules/mocha/mocha.js"></script>
2226
<script>
27+
window.expect = chai.expect;
2328
mocha.setup('bdd');
2429
</script>
25-
2630
<script src="/spec/env/json2.js"></script>
2731
<script src="/spec/env/require.js"></script>
2832

0 commit comments

Comments
 (0)