Skip to content

Instantly share code, notes, and snippets.

@patocallaghan
Last active July 10, 2018 21:14
Show Gist options
  • Save patocallaghan/0382f7f70b9dd4b316e7d36e7eb30fa5 to your computer and use it in GitHub Desktop.
Save patocallaghan/0382f7f70b9dd4b316e7d36e7eb30fa5 to your computer and use it in GitHub Desktop.
Remove mockSetup and mockTeardown
/* eslint-env node */
/*
BEFORE
mockSetup();
mockTeardown();
import FactoryGuy, { mockSetup, mockTeardown } from 'ember-data-factory-guy';
import { mockSetup, mockTeardown } from 'ember-data-factory-guy';
import { make, mockSetup, mockTeardown } from 'ember-data-factory-guy';
AFTER
import FactoryGuy from 'ember-data-factory-guy';
import { make } from 'ember-data-factory-guy';
*/
export default function(file, api, options) {
let j = api.jscodeshift;
let printOptions = options.printOptions || { quote: 'single' };
let root = j(file.source);
let importDec = {
type: 'ImportDeclaration',
source: {
type: 'Literal',
value: 'ember-data-factory-guy',
},
};
let mockSetup = {
type: 'CallExpression',
callee: {
type: 'Identifier',
name: 'mockSetup',
},
};
let mockTeardown = {
type: 'CallExpression',
callee: {
type: 'Identifier',
name: 'mockTeardown',
},
};
root.find(j.CallExpression, mockSetup)
.forEach(p => {
p.prune();
});
root.find(j.CallExpression, mockTeardown)
.forEach(p => {
p.prune();
});
root.find(j.ImportDeclaration, importDec)
.forEach(p => {
let specifiers = p.value.specifiers.filter(s => {
return s.type === 'ImportDefaultSpecifier' ||
!/^mock(Setup|Teardown)$/.test(s.imported.name);
});
if (!specifiers.length) {
p.prune();
} else {
p.replace(
j.importDeclaration(
specifiers,
j.literal('ember-data-factory-guy')
)
);
}
});
return root.toSource(printOptions);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment