Skip to content

Commit f7cb875

Browse files
author
Michael Withagen
committed
fix(jest mock): Add stub for static content
Fix bug for unit testing component dom that includes static content like a sass file. Include jest-tranform-stub. Resolves aurelia/testing#67
1 parent 116d6d7 commit f7cb875

2 files changed

Lines changed: 46 additions & 76 deletions

File tree

lib/commands/new/buildsystems/general/unit-test-runners/jest.js

Lines changed: 45 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
const ProjectItem = require('../../../../../project-item').ProjectItem;
33

44
module.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
};

lib/dependencies.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
"jest-jasmine2": "^23.6.0",
6868
"jest-cli": "^23.6.0",
6969
"jest-matchers": "^20.0.3",
70+
"jest-transform-stub": "^2.0.0",
7071
"json-loader": "^0.5.7",
7172
"html-loader": "^0.5.5",
7273
"karma": "^3.0.0",

0 commit comments

Comments
 (0)