1 var assert = require('chai').assert;
2 var parse = require('esprima-fb').parse;
3 var originalKeys = require('./keys');
5 describe('works', function () {
6 var code = ['class MyClass{',
9 'constructor(x: number, y: number){',
14 'return <namespace:tag textAttr="value" exprAttr={expr} {...spreadAttr}><object.prop>!</object.prop>{}</namespace:tag>',
18 var ast = parse(code);
23 'NumberTypeAnnotation',
26 'NumberTypeAnnotation',
36 'XJSExpressionContainer',
44 'XJSMemberExpression',
48 'XJSMemberExpression',
51 'XJSExpressionContainer',
55 beforeEach(function () {
56 for (var key in require.cache) {
57 delete require.cache[key];
61 it('directly from dependency', function () {
62 var traverse = require('./').traverse;
64 var actualTypeKeys = [];
67 enter: function (node) {
68 if (originalKeys[node.type] != null) {
69 actualKeys.push(node.type);
74 assert.deepEqual(actualKeys, expectedKeys);
77 it('in injected mode', function () {
79 var traverse = require('estraverse').traverse;
83 enter: function (node) {
84 if (originalKeys[node.type] != null) {
85 actualKeys.push(node.type);
90 assert.deepEqual(actualKeys, expectedKeys);
93 it('in single-pass mode', function () {
94 var traverse = require('estraverse').traverse;
95 var keys = require('./keys');
100 enter: function (node) {
101 if (originalKeys[node.type] != null) {
102 actualKeys.push(node.type);
108 assert.throws(function () {
110 enter: function () {}
114 assert.deepEqual(actualKeys, expectedKeys);