Skip to content

Commit 17a8287

Browse files
committed
Add new test helpers; enable babel runtime
1 parent 35804dc commit 17a8287

File tree

5 files changed

+54
-15
lines changed

5 files changed

+54
-15
lines changed

.babelrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"optional": ["runtime"]
3+
}

.eslintrc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"parser": "babel-eslint",
3+
"rules": {
4+
"strict": 0,
5+
"comma-dangle": [1, "always-multiline"]
6+
},
7+
"env": {
8+
"node": true
9+
}
10+
}

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"license": "BSD-3-Clause",
2626
"dependencies": {
2727
"async": "^0.9.0",
28+
"babel-runtime": "^5.7.0",
2829
"node-dir": "^0.1.6",
2930
"nomnom": "^1.8.1",
3031
"recast": "^0.10.x"
@@ -38,14 +39,17 @@
3839
"temp": "^0.8.1"
3940
},
4041
"jest": {
41-
"scriptPreprocessor": "node_modules/babel-jest",
4242
"preprocessCachingDisabled": true,
43+
"scriptPreprocessor": "node_modules/babel-jest",
44+
"setupTestFrameworkScriptFile": "tests/setupTestFramework.js",
4345
"testPathDirs": [
4446
"bin",
4547
"src"
4648
],
4749
"unmockedModulePathPatterns": [
48-
"tests/utils"
50+
"tests/utils",
51+
"recast",
52+
"babel"
4953
]
5054
}
5155
}

tests/setupTestFramework.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*global jasmine*/
2+
3+
var recast = require('recast');
4+
5+
var matchers = {
6+
toEqualASTNode: function compare(expected) {
7+
if (!expected || typeof expected !== 'object') {
8+
throw new Error(
9+
'Expected value must be an object representing an AST node.\n' +
10+
'Got ' + expected + '(' + typeof expected + ') instead.'
11+
);
12+
}
13+
14+
return recast.types.astNodesAreEquivalent(this.actual, expected);
15+
},
16+
};
17+
18+
19+
jasmine.getEnv().beforeEach(function() {
20+
this.addMatchers(matchers);
21+
});

tests/utils.js

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
"use strict";
2-
31
/**
42
* Helper methods for tests.
53
*/
64

7-
var recast = require.requireActual('recast');
5+
import _recast from 'recast';
86

97
function stringify(value) {
108
if (Array.isArray(value)) {
@@ -16,35 +14,38 @@ function stringify(value) {
1614
/**
1715
* Returns a NodePath to the program node of the passed node
1816
*/
19-
function parse(src) {
17+
export function parse(src, recast=_recast) {
2018
return new recast.types.NodePath(recast.parse(stringify(src)).program);
2119
}
2220

21+
export function statement(src, recast=_recast) {
22+
return parse(src, recast).get('body', 0);
23+
}
24+
25+
export function expression(src, recast=_recast) {
26+
return statement('(' + src + ')', recast).get('expression');
27+
}
28+
2329
/**
2430
* Injects src into template by replacing the occurrence of %s.
2531
*/
26-
function parseWithTemplate(src, template) {
32+
export function parseWithTemplate(src, template) {
2733
return parse(template.replace('%s', stringify(src)));
2834
}
2935

3036
/**
3137
* Default template that simply defines React and PropTypes.
3238
*/
33-
var REACT_TEMPLATE = [
39+
export var REACT_TEMPLATE = [
3440
'var React = require("React");',
3541
'var PropTypes = React.PropTypes;',
3642
'var {PropTypes: OtherPropTypes} = require("React");',
3743
'%s;',
3844
].join('\n');
3945

40-
var MODULE_TEMPLATE = [
46+
export var MODULE_TEMPLATE = [
4147
'var React = require("React");',
4248
'var PropTypes = React.PropTypes;',
4349
'var Component = React.createClass(%s);',
44-
'module.exports = Component'
50+
'module.exports = Component',
4551
].join('\n');
46-
47-
exports.parse = parse;
48-
exports.parseWithTemplate = parseWithTemplate;
49-
exports.REACT_TEMPLATE = REACT_TEMPLATE;
50-
exports.MODULE_TEMPLATE = MODULE_TEMPLATE;

0 commit comments

Comments
 (0)