jscodeshift-ava-tester v1.1.1
jscodeshift-ava-tester 
jscodeshiftwrapper to write smaller and better tests for your codemods usingAVA
Install
$ npm install --save jscodeshift-ava-testerUsage
Let's say you want to write tests for a jscodeshift codemod in <root>/lib/codemod-to-test.js. You can create a test file <root>/test/codemod-to-test.js and write plenty of small tests to test your codemod as thoroughly as you want.
import test from 'ava';
import jscodeshift from 'jscodeshift';
import testCodemod from 'jscodeshift-ava-tester';
import codemod from '../lib/codemod-to-test';
const {testChanged, testUnchanged} = testCodemod(jscodeshift, test, codemod);
// Let's assume `codemod` modifies `var` declarations to either `let` or `const`
// Test things that should be modified
testChanged('var foo = 2;', 'const foo = 2;');
testChanged('var foo;', 'let foo;');
testChanged('var foo = 2; foo = 3;', 'let foo = 2; foo = 3;');
testChanged('var foo = 2; foo++;', 'let foo = 2; foo++;');
testChanged('var foo = 2; foo++;', 'let foo = 2; foo++;');
// ...
// Test things that should stay as is
testUnchanged('const foo = 2;');
testUnchanged('let foo = 2;');
testUnchanged('let foo;');
// ...You can then run AVA as you would for other AVA tests (using ava or maybe even ava --watch).
API
testCodemod(jscodeshift, test, codemod)
Return methods that run the codemod on the given input and assert whether modifications are made, using the jscodeshift and AVA modules that you provide.
jscodeshift
The jscodeshift module that you use in your project.
test
The AVA module that you use in your project.
codemod
The codemod to test.
Returns
An object containing two methods: testChanged and testUnchanged.
testChanged(title, input, expectedOutput)
Create a test that ensures that the codemod modifies input to expectedOutput.
title
Optional title for the test. If omitted, input will be used as the title.
input
Mock content of an input file.
expectedOutput
Expected result of the codemod when given input.
testUnchanged(title, input)
Create a test that ensures that the codemod does not modify input.
title
Optional title for the test. If omitted, input will be used as the title.
input
Mock content of an input file.
Thanks
Special thanks to @jamestalmage who created the original script.
License
MIT © Jeroen Engels