summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/estraverse-fb/test.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/node_modules/estraverse-fb/test.js')
-rw-r--r--tools/eslint/node_modules/estraverse-fb/test.js116
1 files changed, 116 insertions, 0 deletions
diff --git a/tools/eslint/node_modules/estraverse-fb/test.js b/tools/eslint/node_modules/estraverse-fb/test.js
new file mode 100644
index 0000000000..e0fca88a01
--- /dev/null
+++ b/tools/eslint/node_modules/estraverse-fb/test.js
@@ -0,0 +1,116 @@
+var assert = require('chai').assert;
+var parse = require('esprima-fb').parse;
+var originalKeys = require('./keys');
+
+describe('works', function () {
+ var code = ['class MyClass{',
+ 'x: number;',
+ 'y: number;',
+ 'constructor(x: number, y: number){',
+ 'this.x = x;',
+ 'this.y = y;',
+ '}',
+ 'render(){',
+ 'return <namespace:tag textAttr="value" exprAttr={expr} {...spreadAttr}><object.prop>!</object.prop>{}</namespace:tag>',
+ '}',
+ '}'].join('\n');
+
+ var ast = parse(code);
+
+ var expectedKeys = [
+ 'ClassProperty',
+ 'TypeAnnotation',
+ 'NumberTypeAnnotation',
+ 'ClassProperty',
+ 'TypeAnnotation',
+ 'NumberTypeAnnotation',
+ 'XJSElement',
+ 'XJSOpeningElement',
+ 'XJSNamespacedName',
+ 'XJSIdentifier',
+ 'XJSIdentifier',
+ 'XJSAttribute',
+ 'XJSIdentifier',
+ 'XJSAttribute',
+ 'XJSIdentifier',
+ 'XJSExpressionContainer',
+ 'XJSSpreadAttribute',
+ 'XJSClosingElement',
+ 'XJSNamespacedName',
+ 'XJSIdentifier',
+ 'XJSIdentifier',
+ 'XJSElement',
+ 'XJSOpeningElement',
+ 'XJSMemberExpression',
+ 'XJSIdentifier',
+ 'XJSIdentifier',
+ 'XJSClosingElement',
+ 'XJSMemberExpression',
+ 'XJSIdentifier',
+ 'XJSIdentifier',
+ 'XJSExpressionContainer',
+ 'XJSEmptyExpression'
+ ];
+
+ beforeEach(function () {
+ for (var key in require.cache) {
+ delete require.cache[key];
+ }
+ });
+
+ it('directly from dependency', function () {
+ var traverse = require('./').traverse;
+ var actualKeys = [];
+ var actualTypeKeys = [];
+
+ traverse(ast, {
+ enter: function (node) {
+ if (originalKeys[node.type] != null) {
+ actualKeys.push(node.type);
+ }
+ }
+ });
+
+ assert.deepEqual(actualKeys, expectedKeys);
+ });
+
+ it('in injected mode', function () {
+ require('./');
+ var traverse = require('estraverse').traverse;
+ var actualKeys = [];
+
+ traverse(ast, {
+ enter: function (node) {
+ if (originalKeys[node.type] != null) {
+ actualKeys.push(node.type);
+ }
+ }
+ });
+
+ assert.deepEqual(actualKeys, expectedKeys);
+ });
+
+ it('in single-pass mode', function () {
+ var traverse = require('estraverse').traverse;
+ var keys = require('./keys');
+
+ var actualKeys = [];
+
+ traverse(ast, {
+ enter: function (node) {
+ if (originalKeys[node.type] != null) {
+ actualKeys.push(node.type);
+ }
+ },
+ keys: keys
+ });
+
+ assert.throws(function () {
+ traverse(ast, {
+ enter: function () {}
+ });
+ });
+
+ assert.deepEqual(actualKeys, expectedKeys);
+ });
+});