All files / tests utils.js

77.78% Statements 7/9
80% Branches 4/5
80% Functions 4/5
77.78% Lines 7/9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                530x     530x             530x           231x       107x                         34x             34x            
/**
 * Helper methods for tests.
 */
 
import _recast from 'recast';
import babylon from '../src/babylon';
 
function stringify(value) {
  Iif (Array.isArray(value)) {
    return value.join('\n');
  }
  return value;
}
 
/**
 * Returns a NodePath to the program node of the passed node
 */
export function parse(src, recast=_recast) {
  return new recast.types.NodePath(
    recast.parse(stringify(src), {esprima: babylon}).program
  );
}
 
export function statement(src, recast=_recast) {
  return parse(src, recast).get('body', 0);
}
 
export function expression(src, recast=_recast) {
  return statement('(' + src + ')', recast).get('expression');
}
 
/**
 * Injects src into template by replacing the occurrence of %s.
 */
export function parseWithTemplate(src, template) {
  return parse(template.replace('%s', stringify(src)));
}
 
/**
 * Default template that simply defines React and PropTypes.
 */
export var REACT_TEMPLATE = [
  'var React = require("React");',
  'var PropTypes = React.PropTypes;',
  'var {PropTypes: OtherPropTypes} = require("React");',
  '%s;',
].join('\n');
 
export var MODULE_TEMPLATE = [
  'var React = require("React");',
  'var PropTypes = React.PropTypes;',
  'var Component = React.createClass(%s);',
  'module.exports = Component',
].join('\n');