22const ProjectItem = require ( '../../../../../project-item' ) . ProjectItem ;
33
44module . exports = function ( project ) {
5- let configureJasmine = require ( './jasmine' ) ;
5+ const isUsingBabel = project . model . transpiler . id === 'babel' ;
6+ const isUsingTS = project . model . transpiler . id === 'typescript' ;
7+ const configureJasmine = require ( './jasmine' ) ;
8+
69 configureJasmine ( project ) ;
710
811 project . addToTasks (
@@ -15,94 +18,60 @@ module.exports = function(project) {
1518 ) . addToDevDependencies (
1619 'jest' ,
1720 'jest-cli' ,
21+ 'jest-transform-stub' ,
1822 'aurelia-loader-nodejs' ,
1923 'aurelia-pal-nodejs'
2024 ) . addNPMScript ( 'test' , 'au jest' ) ;
2125
22- if ( project . model . transpiler . id === 'babel' ) {
26+ const transform = {
27+ '^.+\\.(css|less|sass|scss|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$' : 'jest-transform-stub'
28+ } ;
29+
30+ const moduleFileExtensions = [ 'js' , 'json' ] ;
31+ const setupFiles = [ ] ;
32+ const collectCoverageFrom = [ '!**/node_modules/**' , '!**/test/**' ] ;
33+ let testRegex = '\\.spec\\.' ;
34+
35+ if ( isUsingBabel ) {
2336 project . addToDevDependencies (
2437 'babel-jest' ,
2538 'babel-core@7.0.0-bridge.0'
2639 ) ;
2740
28- project . package . jest = {
29- moduleNameMapper : {
30- // avoid aurelia-bindings v1+v2 conflict
31- '^aurelia-binding$' : '<rootDir>/node_modules/aurelia-binding'
32- } ,
33- modulePaths : [
34- '<rootDir>/src' ,
35- '<rootDir>/node_modules'
36- ] ,
37- moduleFileExtensions : [
38- 'js' ,
39- 'json'
40- ] ,
41- transform : {
42- '^.+\\.js$' : 'babel-jest'
43- } ,
44- testRegex : '\\.spec\\.js$' ,
45- setupFiles : [
46- '<rootDir>/test/jest-pretest.js'
47- ] ,
48- testEnvironment : 'node' ,
49- collectCoverage : true ,
50- collectCoverageFrom : [
51- 'src/**/*.js' ,
52- '!**/*.spec.js' ,
53- '!**/node_modules/**' ,
54- '!**/test/**'
55- ] ,
56- coverageDirectory : '<rootDir>/test/coverage-jest' ,
57- coverageReporters : [
58- 'json' ,
59- 'lcov' ,
60- 'text' ,
61- 'html'
62- ]
63- } ;
64- } else if ( project . model . transpiler . id === 'typescript' ) {
41+ transform [ '^.+\\.js$' ] = 'babel-jest' ;
42+ testRegex += 'js$' ;
43+ setupFiles . push ( '<rootDir>/test/jest-pretest.js' ) ;
44+ collectCoverageFrom . push ( 'src/**/*.js' , '!**/*.spec.js' ) ;
45+ } else if ( isUsingTS ) {
6546 project . addToDevDependencies (
6647 'ts-jest' ,
6748 '@types/jest'
6849 ) ;
6950
70- project . package . jest = {
71- moduleNameMapper : {
72- // avoid aurelia-bindings v1+v2 conflict
73- '^aurelia-binding$' : '<rootDir>/node_modules/aurelia-binding'
74- } ,
75- modulePaths : [
76- '<rootDir>/src' ,
77- '<rootDir>/node_modules'
78- ] ,
79- moduleFileExtensions : [
80- 'js' ,
81- 'json' ,
82- 'ts'
83- ] ,
84- transform : {
85- '^.+\\.ts$' : 'ts-jest'
86- } ,
87- testRegex : '\\.spec\\.(ts|js)$' ,
88- setupFiles : [
89- '<rootDir>/test/jest-pretest.ts'
90- ] ,
91- testEnvironment : 'node' ,
92- collectCoverage : true ,
93- collectCoverageFrom : [
94- 'src/**/*.{js,ts}' ,
95- '!**/*.spec.{js,ts}' ,
96- '!**/node_modules/**' ,
97- '!**/test/**'
98- ] ,
99- coverageDirectory : '<rootDir>/test/coverage-jest' ,
100- coverageReporters : [
101- 'json' ,
102- 'lcov' ,
103- 'text' ,
104- 'html'
105- ]
106- } ;
51+ transform [ '^.+\\.ts$' ] = 'ts-jest' ;
52+ moduleFileExtensions . push ( 'ts' ) ;
53+ testRegex += '(ts|js)$' ;
54+ setupFiles . push ( '<rootDir>/test/jest-pretest.ts' ) ;
55+ collectCoverageFrom . push ( 'src/**/*.{js,ts}' , '!**/*.spec.{js,ts}' ) ;
10756 }
57+
58+ project . package . jest = {
59+ moduleNameMapper : {
60+ // avoid aurelia-bindings v1+v2 conflict
61+ '^aurelia-binding$' : '<rootDir>/node_modules/aurelia-binding'
62+ } ,
63+ modulePaths : [
64+ '<rootDir>/src' ,
65+ '<rootDir>/node_modules'
66+ ] ,
67+ moduleFileExtensions,
68+ transform,
69+ testRegex,
70+ setupFiles,
71+ testEnvironment : 'node' ,
72+ collectCoverage : true ,
73+ collectCoverageFrom,
74+ coverageDirectory : '<rootDir>/test/coverage-jest' ,
75+ coverageReporters : [ 'json' , 'lcov' , 'text' , 'html' ]
76+ } ;
10877} ;
0 commit comments