"makePretty": "pretty-quick --staged"
},
"private": true,
+ "jest": {
+ "preset": "jest-preset-angular",
+ "setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts",
+ "transformIgnorePatterns": ["node_modules/(?!@ngrx|ngx-bootstrap|@progress)"],
+ "transform": {
+ "^.+\\.(ts|html)$": "<rootDir>/node_modules/jest-preset-angular/preprocessor.js",
+ "^.+\\.js$": "babel-jest"
+ },
+ "setupFiles": ["jest-canvas-mock"],
+ "coverageReporters" : [
+ "text",
+ "cobertura"
+ ]
+ },
"dependencies": {
"@angular/animations": "^5.0.0",
"@angular/common": "^5.0.0",
"@angular/language-service": "^5.0.0",
"@types/jasmine": "~2.5.53",
"@types/jasminewd2": "~2.0.2",
+ "@types/jest": "^22.2.3",
"@types/node": "~6.0.60",
+ "babel-preset-env": "^1.7.0",
"codelyzer": "^4.0.1",
"copy-webpack-plugin": "4.3.0",
"jasmine-core": "~2.6.2",
"jasmine-spec-reporter": "~4.1.0",
+ "jest": "^22.4.3",
+ "jest-canvas-mock": "^1.0.2",
+ "jest-preset-angular": "^5.2.2",
"karma": "~1.7.0",
"karma-chrome-launcher": "~2.1.1",
"karma-cli": "~1.0.1",
--- /dev/null
+const mock = () => {
+ let storage = {};
+ return {
+ getItem: key => key in storage ? storage[key] : null,
+ setItem: (key, value) => storage[key] = value || '',
+ removeItem: key => delete storage[key],
+ clear: () => storage = {},
+ };
+};
+
+Object.defineProperty(window, 'localStorage', {value: mock()});
+Object.defineProperty(window, 'sessionStorage', {value: mock()});
+Object.defineProperty(window, 'getComputedStyle', {
+ value: () => ['-webkit-appearance']
+});
--- /dev/null
+import 'jest-preset-angular';
+import 'jest-zone-patch';
+
+// common rxjs imports
+import 'rxjs/add/observable/throw';
+import 'rxjs/add/operator/catch';
+import 'rxjs/add/operator/do';
+import 'rxjs/add/operator/map';
+import 'rxjs/add/operator/switchMap';
+// ...
+
+import './jestGlobalMocks';
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
- "typeRoots": [
- "node_modules/@types"
- ],
- "lib": [
- "es2017",
- "dom"
- ]
+ "typeRoots": ["node_modules/@types"],
+ "lib": ["es2017", "dom"],
+ "allowJs": true
}
}