2020-03-07 11:45:40 +08:00
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = void 0 ;
var _path = require ( "path" ) ;
var _utils = require ( "./utils" ) ;
const mocksDirName = '__mocks__' ;
const isMockPath = path => path . split ( _path . posix . sep ) . includes ( mocksDirName ) ;
const isMockImportLiteral = expression => ( 0 , _utils . isStringNode ) ( expression ) && isMockPath ( ( 0 , _utils . getStringValue ) ( expression ) ) ;
var _default = ( 0 , _utils . createRule ) ( {
name : _ _filename ,
meta : {
type : 'problem' ,
docs : {
category : 'Best Practices' ,
2020-05-15 05:33:08 +08:00
description : 'Disallow manually importing from __mocks__ ' ,
2020-03-07 11:45:40 +08:00
recommended : 'error'
} ,
messages : {
noManualImport : ` Mocks should not be manually imported from a ${ mocksDirName } directory. Instead use jest.mock and import from the original module path. `
} ,
schema : [ ]
} ,
defaultOptions : [ ] ,
create ( context ) {
return {
ImportDeclaration ( node ) {
if ( node . source && isMockImportLiteral ( node . source ) ) {
context . report ( {
node ,
messageId : 'noManualImport'
} ) ;
}
} ,
'CallExpression[callee.name="require"]' ( node ) {
2020-03-31 20:40:00 +08:00
const [ arg ] = node . arguments ;
2020-03-07 11:45:40 +08:00
if ( arg && isMockImportLiteral ( arg ) ) {
context . report ( {
node : arg ,
messageId : 'noManualImport'
} ) ;
}
}
} ;
}
} ) ;
exports . default = _default ;