From 19c487bf8f87d2359b827c5556c1cc0e7e951166 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 10 Oct 2019 11:34:10 +0300 Subject: [PATCH] feat(core): implement jest to core and add @angular-builders/jest:run --- npm/ng-packs/angular.json | 8 +-- npm/ng-packs/apps/dev-app/tsconfig.app.json | 52 +++++++++---------- npm/ng-packs/jest.config.js | 18 +++++++ npm/ng-packs/package.json | 10 ++-- npm/ng-packs/packages/core/jest.config.js | 9 ++++ .../tests/dynamic-layout.component.spec.ts | 2 +- .../src/lib/tests/locale.provider.spec.ts | 2 +- .../core/src/lib/tests/rest.service.spec.ts | 2 +- npm/ng-packs/packages/core/tsconfig.spec.json | 11 ++-- npm/ng-packs/{setupJest.ts => test-setup.ts} | 0 npm/ng-packs/tsconfig.json | 2 +- 11 files changed, 70 insertions(+), 46 deletions(-) create mode 100644 npm/ng-packs/jest.config.js create mode 100644 npm/ng-packs/packages/core/jest.config.js rename npm/ng-packs/{setupJest.ts => test-setup.ts} (100%) diff --git a/npm/ng-packs/angular.json b/npm/ng-packs/angular.json index 0a7736ac8d..e849d7dafa 100644 --- a/npm/ng-packs/angular.json +++ b/npm/ng-packs/angular.json @@ -17,12 +17,8 @@ } }, "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "packages/core/src/test.ts", - "tsConfig": "packages/core/tsconfig.spec.json", - "karmaConfig": "packages/core/karma.conf.js" - } + "builder": "@angular-builders/jest:run", + "options": {} }, "lint": { "builder": "@angular-devkit/build-angular:tslint", diff --git a/npm/ng-packs/apps/dev-app/tsconfig.app.json b/npm/ng-packs/apps/dev-app/tsconfig.app.json index 6570e8f04a..cc22d70d1c 100644 --- a/npm/ng-packs/apps/dev-app/tsconfig.app.json +++ b/npm/ng-packs/apps/dev-app/tsconfig.app.json @@ -4,32 +4,32 @@ "outDir": "../../out-tsc/app", "types": [], "paths": { - // "@abp/ng.core": ["packages/core/src/public-api.ts"], - // "@abp/ng.core/*": ["packages/core/src/lib/*"], - // // "@abp/ng.theme.shared": ["packages/theme-shared/src/public-api.ts"], - // // "@abp/ng.theme.shared/*": ["packages/theme-shared/src/lib/*"], - // "@abp/ng.theme.basic": ["packages/theme-basic/src/public-api.ts"], - // "@abp/ng.theme.basic/*": ["packages/theme-basic/src/lib/*"], - // "@abp/ng.account": ["packages/account/src/public-api.ts"], - // "@abp/ng.account/*": ["packages/account/src/lib/*"], - // "@abp/ng.account.config": ["packages/account-config/src/public-api.ts"], - // "@abp/ng.account.config/*": ["packages/account-config/src/lib/*"], - // "@abp/ng.identity": ["packages/identity/src/public-api.ts"], - // "@abp/ng.identity/*": ["packages/identity/src/lib/*"], - // "@abp/ng.identity.config": ["packages/identity-config/src/public-api.ts"], - // "@abp/ng.identity.config/*": ["packages/identity-config/src/lib/*"], - // "@abp/ng.tenant-management": ["packages/tenant-management/src/public-api.ts"], - // "@abp/ng.tenant-management/*": ["packages/tenant-management/src/lib/*"], - // "@abp/ng.tenant-management.config": ["packages/tenant-management-config/src/public-api.ts"], - // "@abp/ng.tenant-management.config/*": ["packages/tenant-management-config/src/lib/*"], - // "@abp/ng.setting-management": ["packages/setting-management/src/public-api.ts"], - // "@abp/ng.setting-management/*": ["packages/setting-management/src/lib/*"], - // "@abp/ng.setting-management.config": ["packages/setting-management-config/src/public-api.ts"], - // "@abp/ng.setting-management.config/*": ["packages/setting-management-config/src/lib/*"], - // "@abp/ng.permission-management": ["packages/permission-management/src/public-api.ts"], - // "@abp/ng.permission-management/*": ["packages/permission-management/src/lib/*"], - // "@abp/ng.feature-management": ["packages/feature-management/src/public-api.ts"], - // "@abp/ng.feature-management/*": ["packages/feature-management/src/lib/*"] + "@abp/ng.core": ["packages/core/src/public-api.ts"], + "@abp/ng.core/*": ["packages/core/src/lib/*"], + // "@abp/ng.theme.shared": ["packages/theme-shared/src/public-api.ts"], + // "@abp/ng.theme.shared/*": ["packages/theme-shared/src/lib/*"], + "@abp/ng.theme.basic": ["packages/theme-basic/src/public-api.ts"], + "@abp/ng.theme.basic/*": ["packages/theme-basic/src/lib/*"], + "@abp/ng.account": ["packages/account/src/public-api.ts"], + "@abp/ng.account/*": ["packages/account/src/lib/*"], + "@abp/ng.account.config": ["packages/account-config/src/public-api.ts"], + "@abp/ng.account.config/*": ["packages/account-config/src/lib/*"], + "@abp/ng.identity": ["packages/identity/src/public-api.ts"], + "@abp/ng.identity/*": ["packages/identity/src/lib/*"], + "@abp/ng.identity.config": ["packages/identity-config/src/public-api.ts"], + "@abp/ng.identity.config/*": ["packages/identity-config/src/lib/*"], + "@abp/ng.tenant-management": ["packages/tenant-management/src/public-api.ts"], + "@abp/ng.tenant-management/*": ["packages/tenant-management/src/lib/*"], + "@abp/ng.tenant-management.config": ["packages/tenant-management-config/src/public-api.ts"], + "@abp/ng.tenant-management.config/*": ["packages/tenant-management-config/src/lib/*"], + "@abp/ng.setting-management": ["packages/setting-management/src/public-api.ts"], + "@abp/ng.setting-management/*": ["packages/setting-management/src/lib/*"], + "@abp/ng.setting-management.config": ["packages/setting-management-config/src/public-api.ts"], + "@abp/ng.setting-management.config/*": ["packages/setting-management-config/src/lib/*"], + "@abp/ng.permission-management": ["packages/permission-management/src/public-api.ts"], + "@abp/ng.permission-management/*": ["packages/permission-management/src/lib/*"], + "@abp/ng.feature-management": ["packages/feature-management/src/public-api.ts"], + "@abp/ng.feature-management/*": ["packages/feature-management/src/lib/*"] } }, "files": ["src/main.ts", "src/polyfills.ts"], diff --git a/npm/ng-packs/jest.config.js b/npm/ng-packs/jest.config.js new file mode 100644 index 0000000000..d9294d5935 --- /dev/null +++ b/npm/ng-packs/jest.config.js @@ -0,0 +1,18 @@ +module.exports = { + globals: { + 'ts-jest': { + allowSyntheticDefaultImports: true, + }, + }, + transform: { + '^.+\\.(ts|js|html)$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageReporters: ['html'], + preset: 'jest-preset-angular', + setupFilesAfterEnv: ['/test-setup.ts'], + snapshotSerializers: [ + 'jest-preset-angular/AngularSnapshotSerializer.js', + 'jest-preset-angular/HTMLCommentSerializer.js', + ], +}; diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 3eba277234..f432ab97d9 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -2,7 +2,7 @@ "scripts": { "start": "ng serve dev-app", "ng": "ng", - "test": "jest", + "test": "ng test", "symlink": "symlink", "abpng": "abpng", "commit": "git-cz && node scripts/push.js", @@ -15,6 +15,7 @@ "@abp/ng.theme.shared": "^0.9.0", "@angular-devkit/build-angular": "~0.803.6", "@angular-devkit/build-ng-packagr": "~0.803.6", + "@angular-builders/jest": "^8.2.0", "@angular/animations": "~8.2.8", "@angular/cdk": "^8.2.2", "@angular/cli": "~8.3.6", @@ -28,7 +29,7 @@ "@angular/platform-browser-dynamic": "~8.2.8", "@angular/router": "~8.2.8", "@ng-bootstrap/ng-bootstrap": "^5.1.0", - "@ngneat/spectator": "^4.3.2", + "@ngneat/spectator": "^4.4.0", "@ngx-validate/core": "^0.0.5", "@ngxs/devtools-plugin": "^3.5.1", "@ngxs/router-plugin": "^3.5.1", @@ -65,6 +66,7 @@ "zone.js": "~0.9.1" }, "dependencies": { + "@briebug/jest": "^1.3.1", "tslib": "^1.10.0" }, "config": { @@ -87,9 +89,5 @@ "tslint --fix", "git add" ] - }, - "jest": { - "preset": "jest-preset-angular", - "setupTestFrameworkScriptFile": "/setupJest.ts" } } diff --git a/npm/ng-packs/packages/core/jest.config.js b/npm/ng-packs/packages/core/jest.config.js new file mode 100644 index 0000000000..c46ff0a2da --- /dev/null +++ b/npm/ng-packs/packages/core/jest.config.js @@ -0,0 +1,9 @@ +const { pathsToModuleNameMapper } = require('ts-jest/utils'); +const { compilerOptions } = require('./tsconfig.spec'); + +module.exports = { + name: 'core', + testMatch: ['/packages/core/**/+(*.)+(spec|test).+(ts|js)?(x)'], + coverageDirectory: '../../coverage/libs/core', + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '/' } */), +}; diff --git a/npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts index e752829eb2..d2ac2c3c50 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts @@ -7,7 +7,7 @@ import { NgxsResetPluginModule, StateOverwrite } from 'ngxs-reset-plugin'; import { LAYOUTS, ThemeBasicModule } from '../../../../theme-basic/src/public-api'; import { eLayoutType } from '../enums'; import { ABP } from '../models'; -import { RouterOutletComponent, CoreModule, DynamicLayoutComponent, ConfigState } from '../../public-api'; +import { RouterOutletComponent, CoreModule, DynamicLayoutComponent, ConfigState } from '@abp/ng.core'; import { ThemeSharedModule } from '../../../../theme-shared/src/public-api'; import { MessageService } from 'primeng/components/common/messageservice'; diff --git a/npm/ng-packs/packages/core/src/lib/tests/locale.provider.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/locale.provider.spec.ts index 3ff3516c6e..b5c788635d 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/locale.provider.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/locale.provider.spec.ts @@ -24,7 +24,7 @@ describe('LocaleProvider', () => { }); describe('#LOCALE_ID', () => { - it('should equal to localizationService.currentLang', async () => { + test('should equal to currentLang', async () => { spectator = createComponent(); const localizationService = spectator.get(LocalizationService); diff --git a/npm/ng-packs/packages/core/src/lib/tests/rest.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/rest.service.spec.ts index db37d673ae..f91fbcef3e 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/rest.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/rest.service.spec.ts @@ -15,7 +15,7 @@ describe('HttpClient testing', () => { store.selectSnapshot.andReturn(api); }); - it('should send a GET request with params', () => { + test('should send a GET request with params', () => { spectator.service.request({ method: HttpMethod.GET, url: '/test', params: { id: 1 } }).subscribe(); spectator.expectOne(api + '/test?id=1', HttpMethod.GET); }); diff --git a/npm/ng-packs/packages/core/tsconfig.spec.json b/npm/ng-packs/packages/core/tsconfig.spec.json index cd178e12ee..d2fb1e6cb3 100644 --- a/npm/ng-packs/packages/core/tsconfig.spec.json +++ b/npm/ng-packs/packages/core/tsconfig.spec.json @@ -1,11 +1,14 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": ["node", "jest"], "emitDecoratorMetadata": true, - "esModuleInterop": true + "esModuleInterop": true, + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"], + "paths": { + "@abp/ng.core/*": ["packages/core/src/lib/*"] + } }, - "files": [], "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/setupJest.ts b/npm/ng-packs/test-setup.ts similarity index 100% rename from npm/ng-packs/setupJest.ts rename to npm/ng-packs/test-setup.ts diff --git a/npm/ng-packs/tsconfig.json b/npm/ng-packs/tsconfig.json index 9c996dd271..ac9e9e8eea 100644 --- a/npm/ng-packs/tsconfig.json +++ b/npm/ng-packs/tsconfig.json @@ -13,7 +13,7 @@ "target": "es2015", "typeRoots": ["node_modules/@types"], "lib": ["es2018", "dom"], - "paths": {} + "types": ["jest"] }, "angularCompilerOptions": { "fullTemplateTypeCheck": true,