diff --git a/docs/en/Multi-Tenancy.md b/docs/en/Multi-Tenancy.md index 0ad3c66b26..c69e2cb299 100644 --- a/docs/en/Multi-Tenancy.md +++ b/docs/en/Multi-Tenancy.md @@ -307,6 +307,11 @@ Volo.Abp.AspNetCore.MultiTenancy package adds following tenant resolvers to dete * **HeaderTenantResolver**: Tries to find current tenant id from HTTP header. Header name is "__tenant" by default. * **CookieTenantResolver**: Tries to find current tenant id from cookie values. Cookie name is "__tenant" by default. +> If you use nginx as a reverse proxy server, please note that if `TenantKey` contains an underscore or other special characters, there may be a problem, please refer to: +http://nginx.org/en/docs/http/ngx_http_core_module.html#ignore_invalid_headers +http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers + + "__tenant" parameter name can be changed using AspNetCoreMultiTenancyOptions. Example: ````C# diff --git a/docs/zh-Hans/Multi-Tenancy.md b/docs/zh-Hans/Multi-Tenancy.md index 352190d5cd..f42fd73454 100644 --- a/docs/zh-Hans/Multi-Tenancy.md +++ b/docs/zh-Hans/Multi-Tenancy.md @@ -308,6 +308,10 @@ Volo.Abp.AspNetCore.MultiTenancy 添加了下面这些租户解析器,从当前W * **HeaderTenantResolver**: 尝试从HTTP header中获取当前租户,默认的header名称是"__tenant". * **CookieTenantResolver**: 尝试从当前cookie中获取当前租户.默认的Cookie名称是"__tenant". +> 如果你使用nginx作为反向代理服务器,请注意如果`TenantKey`包含下划线或其他特殊字符可能存在问题, 请参考: +http://nginx.org/en/docs/http/ngx_http_core_module.html#ignore_invalid_headers +http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers + 可以使用AspNetCoreMultiTenancyOptions修改默认的参数名"__tenant".例如: ````C# diff --git a/framework/src/Volo.Abp.Autofac/Microsoft/Extensions/Hosting/AbpAutofacHostBuilderExtensions.cs b/framework/src/Volo.Abp.Autofac/Microsoft/Extensions/Hosting/AbpAutofacHostBuilderExtensions.cs new file mode 100644 index 0000000000..65b008ecf4 --- /dev/null +++ b/framework/src/Volo.Abp.Autofac/Microsoft/Extensions/Hosting/AbpAutofacHostBuilderExtensions.cs @@ -0,0 +1,20 @@ +using Autofac; +using Volo.Abp.Autofac; +using Microsoft.Extensions.DependencyInjection; + +namespace Microsoft.Extensions.Hosting +{ + public static class AbpAutofacHostBuilderExtensions + { + public static IHostBuilder UseAutofac(this IHostBuilder hostBuilder) + { + var containerBuilder = new ContainerBuilder(); + + return hostBuilder.ConfigureServices((_, services) => + { + services.AddObjectAccessor(containerBuilder); + }) + .UseServiceProviderFactory(new AbpAutofacServiceProviderFactory(containerBuilder)); + } + } +} diff --git a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj index bc7c696c3d..fdb7318e30 100644 --- a/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj +++ b/framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj @@ -16,6 +16,7 @@ + diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Configuration/IConfigurationAccessor.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Configuration/IConfigurationAccessor.cs index c8ae448be2..34e5d96692 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Configuration/IConfigurationAccessor.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Configuration/IConfigurationAccessor.cs @@ -1,7 +1,9 @@ -using Microsoft.Extensions.Configuration; +using System; +using Microsoft.Extensions.Configuration; namespace Volo.Abp.Configuration { + [Obsolete("IConfigurationAccessor will be removed in v1.0. Use IConfiguration instead (be use that you are using generic host just like the startup templates).")] public interface IConfigurationAccessor { IConfigurationRoot Configuration { get; } diff --git a/npm/ng-packs/angular.json b/npm/ng-packs/angular.json index a06c34c90e..f1c7d18a46 100644 --- a/npm/ng-packs/angular.json +++ b/npm/ng-packs/angular.json @@ -17,11 +17,9 @@ } }, "test": { - "builder": "@angular-devkit/build-angular:karma", + "builder": "@angular-builders/jest:run", "options": { - "main": "packages/core/src/test.ts", - "tsConfig": "packages/core/tsconfig.spec.json", - "karmaConfig": "packages/core/karma.conf.js" + "coverage": true } }, "lint": { @@ -48,11 +46,9 @@ } }, "test": { - "builder": "@angular-devkit/build-angular:karma", + "builder": "@angular-builders/jest:run", "options": { - "main": "packages/theme-shared/src/test.ts", - "tsConfig": "packages/theme-shared/tsconfig.spec.json", - "karmaConfig": "packages/theme-shared/karma.conf.js" + "coverage": true } }, "lint": { @@ -532,25 +528,9 @@ "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { - "tsConfig": [ - "apps/dev-app/tsconfig.app.json", - "apps/dev-app/tsconfig.spec.json", - "apps/dev-app/e2e/tsconfig.json" - ], + "tsConfig": ["apps/dev-app/tsconfig.app.json", "apps/dev-app/tsconfig.spec.json"], "exclude": ["**/node_modules/**"] } - }, - "e2e": { - "builder": "@angular-devkit/build-angular:protractor", - "options": { - "protractorConfig": "apps/dev-app/e2e/protractor.conf.js", - "devServerTarget": "dev-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "dev-app:serve:production" - } - } } } } diff --git a/npm/ng-packs/apps/dev-app/e2e/protractor.conf.js b/npm/ng-packs/apps/dev-app/e2e/protractor.conf.js deleted file mode 100644 index 5c23d8477d..0000000000 --- a/npm/ng-packs/apps/dev-app/e2e/protractor.conf.js +++ /dev/null @@ -1,30 +0,0 @@ -// @ts-check -// Protractor configuration file, see link for more information -// https://github.com/angular/protractor/blob/master/lib/config.ts - -const { SpecReporter } = require('jasmine-spec-reporter'); - -/** - * @type { import("protractor").Config } - */ -exports.config = { - allScriptsTimeout: 11000, - specs: ['./src/**/*.e2e-spec.ts'], - capabilities: { - browserName: 'chrome', - }, - directConnect: true, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {}, - }, - onPrepare() { - require('ts-node').register({ - project: require('path').join(__dirname, './tsconfig.json'), - }); - jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); - }, -}; diff --git a/npm/ng-packs/apps/dev-app/e2e/src/app.e2e-spec.ts b/npm/ng-packs/apps/dev-app/e2e/src/app.e2e-spec.ts deleted file mode 100644 index 96edba0042..0000000000 --- a/npm/ng-packs/apps/dev-app/e2e/src/app.e2e-spec.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { AppPage } from './app.po'; -import { browser, logging } from 'protractor'; - -describe('workspace-project App', () => { - let page: AppPage; - - beforeEach(() => { - page = new AppPage(); - }); - - it('should display welcome message', () => { - page.navigateTo(); - expect(page.getTitleText()).toEqual('dev-app app is running!'); - }); - - afterEach(async () => { - // Assert that there are no errors emitted from the browser - const logs = await browser - .manage() - .logs() - .get(logging.Type.BROWSER); - expect(logs).not.toContain( - jasmine.objectContaining({ - level: logging.Level.SEVERE, - } as logging.Entry), - ); - }); -}); diff --git a/npm/ng-packs/apps/dev-app/e2e/src/app.po.ts b/npm/ng-packs/apps/dev-app/e2e/src/app.po.ts deleted file mode 100644 index b8498c26f2..0000000000 --- a/npm/ng-packs/apps/dev-app/e2e/src/app.po.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { browser, by, element } from 'protractor'; - -export class AppPage { - navigateTo() { - return browser.get(browser.baseUrl) as Promise; - } - - getTitleText() { - return element(by.css('app-root .content span')).getText() as Promise; - } -} diff --git a/npm/ng-packs/apps/dev-app/e2e/tsconfig.json b/npm/ng-packs/apps/dev-app/e2e/tsconfig.json deleted file mode 100644 index 201351434e..0000000000 --- a/npm/ng-packs/apps/dev-app/e2e/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../../tsconfig.json", - "compilerOptions": { - "outDir": "../../../out-tsc/e2e", - "module": "commonjs", - "target": "es5", - "types": ["jasmine", "jasminewd2", "node"] - } -} diff --git a/npm/ng-packs/apps/dev-app/karma.conf.js b/npm/ng-packs/apps/dev-app/karma.conf.js deleted file mode 100644 index 54492af159..0000000000 --- a/npm/ng-packs/apps/dev-app/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function(config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma'), - ], - client: { - clearContext: false, // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/dev-app'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true, - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true, - }); -}; diff --git a/npm/ng-packs/apps/dev-app/src/test.ts b/npm/ng-packs/apps/dev-app/src/test.ts deleted file mode 100644 index da9049dc63..0000000000 --- a/npm/ng-packs/apps/dev-app/src/test.ts +++ /dev/null @@ -1,14 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/apps/dev-app/tsconfig.spec.json b/npm/ng-packs/apps/dev-app/tsconfig.spec.json index 8eec07d40a..e487d98612 100644 --- a/npm/ng-packs/apps/dev-app/tsconfig.spec.json +++ b/npm/ng-packs/apps/dev-app/tsconfig.spec.json @@ -2,8 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": ["jasmine", "node"] + "types": ["node", "jest"] }, - "files": ["src/test.ts", "src/polyfills.ts"], + "files": ["src/polyfills.ts"], "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] } diff --git a/npm/ng-packs/jest.config.js b/npm/ng-packs/jest.config.js new file mode 100644 index 0000000000..580ba0bcdf --- /dev/null +++ b/npm/ng-packs/jest.config.js @@ -0,0 +1,19 @@ +module.exports = { + globals: { + 'ts-jest': { + allowSyntheticDefaultImports: true, + }, + }, + transform: { + '^.+\\.(ts|js|html)$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '/coverage', + 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 5e4a254863..f432ab97d9 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -2,6 +2,7 @@ "scripts": { "start": "ng serve dev-app", "ng": "ng", + "test": "ng test", "symlink": "symlink", "abpng": "abpng", "commit": "git-cz && node scripts/push.js", @@ -14,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", @@ -27,14 +29,13 @@ "@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", "@ngxs/storage-plugin": "^3.5.1", "@ngxs/store": "^3.5.1", - "@types/jasmine": "~3.3.8", - "@types/jasminewd2": "~2.0.3", + "@types/jest": "^24.0.18", "@types/node": "~8.9.4", "angular-oauth2-oidc": "^8.0.1", "bootstrap": "^4.3.1", @@ -43,15 +44,10 @@ "cz-conventional-changelog": "3.0.2", "font-awesome": "^4.7.0", "husky": "^3.0.7", - "jasmine-core": "~3.4.0", - "jasmine-spec-reporter": "~4.2.1", + "jest": "^24.9.0", + "jest-preset-angular": "^7.1.1", "just-clone": "3.1.0", "just-compare": "^1.3.0", - "karma": "~4.1.0", - "karma-chrome-launcher": "~2.2.0", - "karma-coverage-istanbul-reporter": "~2.0.1", - "karma-jasmine": "~2.0.1", - "karma-jasmine-html-reporter": "^1.4.0", "lint-staged": "^9.4.0", "ng-packagr": "^5.5.0", "ngx-perfect-scrollbar": "^8.0.0", @@ -70,6 +66,7 @@ "zone.js": "~0.9.1" }, "dependencies": { + "@briebug/jest": "^1.3.1", "tslib": "^1.10.0" }, "config": { diff --git a/npm/ng-packs/packages/account-config/karma.conf.js b/npm/ng-packs/packages/account-config/karma.conf.js deleted file mode 100644 index e74978b4ca..0000000000 --- a/npm/ng-packs/packages/account-config/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/account-config'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/account-config/src/test.ts b/npm/ng-packs/packages/account-config/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/account-config/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/account-config/tsconfig.spec.json b/npm/ng-packs/packages/account-config/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/account-config/tsconfig.spec.json +++ b/npm/ng-packs/packages/account-config/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/account/karma.conf.js b/npm/ng-packs/packages/account/karma.conf.js deleted file mode 100644 index ccfa764753..0000000000 --- a/npm/ng-packs/packages/account/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/account'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/account/src/test.ts b/npm/ng-packs/packages/account/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/account/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/account/tsconfig.spec.json b/npm/ng-packs/packages/account/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/account/tsconfig.spec.json +++ b/npm/ng-packs/packages/account/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.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..2e294cf4e6 --- /dev/null +++ b/npm/ng-packs/packages/core/jest.config.js @@ -0,0 +1,10 @@ +const { pathsToModuleNameMapper } = require('ts-jest/utils'); +const { compilerOptions } = require('./tsconfig.spec'); +const jestConfig = require('../../jest.config'); + +module.exports = { + ...jestConfig, + name: 'core', + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '/' } */), + 'ts-jest': { allowSyntheticDefaultImports: true }, +}; diff --git a/npm/ng-packs/packages/core/karma.conf.js b/npm/ng-packs/packages/core/karma.conf.js deleted file mode 100644 index 46e0cb1d0a..0000000000 --- a/npm/ng-packs/packages/core/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/core'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/core/src/lib/services/rest.service.ts b/npm/ng-packs/packages/core/src/lib/services/rest.service.ts index 611b208b35..4057a4a29a 100644 --- a/npm/ng-packs/packages/core/src/lib/services/rest.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/rest.service.ts @@ -2,7 +2,7 @@ import { HttpClient, HttpRequest } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Store } from '@ngxs/store'; import { Observable, throwError } from 'rxjs'; -import { catchError, take } from 'rxjs/operators'; +import { catchError, take, tap } from 'rxjs/operators'; import { RestOccurError } from '../actions/rest.actions'; import { Rest } from '../models/rest'; import { ConfigState } from '../states/config.state'; @@ -19,12 +19,14 @@ export class RestService { return throwError(err); } - request(request: HttpRequest | Rest.Request, config: Rest.Config = {}, api?: string): Observable { + request(request: HttpRequest | Rest.Request, config?: Rest.Config, api?: string): Observable { + config = config || ({} as Rest.Config); const { observe = Rest.Observe.Body, skipHandleError } = config; - const url = api || this.store.selectSnapshot(ConfigState.getApiUrl()) + request.url; + const url = (api || this.store.selectSnapshot(ConfigState.getApiUrl())) + request.url; const { method, ...options } = request; + return this.http.request(method, url, { observe, ...options } as any).pipe( - observe === Rest.Observe.Body ? take(1) : null, + observe === Rest.Observe.Body ? take(1) : tap(), catchError(err => { if (skipHandleError) { return throwError(err); diff --git a/npm/ng-packs/packages/core/src/lib/tests/config.plugin.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/config.plugin.spec.ts index 293dd4bf79..da851a5369 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/config.plugin.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/config.plugin.spec.ts @@ -1,14 +1,14 @@ import { RouterTestingModule } from '@angular/router/testing'; -import { createServiceFactory, SpectatorService } from '@ngneat/spectator'; -import { NGXS_PLUGINS, NgxsModule, InitState, Store } from '@ngxs/store'; +import { createServiceFactory, SpectatorService } from '@ngneat/spectator/jest'; +import { NgxsModule, NGXS_PLUGINS, Store } from '@ngxs/store'; import { environment } from '../../../../../apps/dev-app/src/environments/environment'; import { LAYOUTS } from '../../../../theme-basic/src/public-api'; -import { ABP } from '../models'; -import { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from '../plugins'; import { RouterOutletComponent } from '../components'; -import { ConfigState } from '../states'; import { CoreModule } from '../core.module'; import { eLayoutType } from '../enums/common'; +import { ABP } from '../models'; +import { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from '../plugins'; +import { ConfigState } from '../states'; import { addAbpRoutes } from '../utils'; addAbpRoutes([ 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 bfd2762760..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 @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; -import { createRoutingFactory, SpectatorRouting, SpyObject } from '@ngneat/spectator'; +import { createRoutingFactory, SpectatorRouting, SpyObject } from '@ngneat/spectator/jest'; import { NgxsModule, Store } from '@ngxs/store'; import { OAuthService } from 'angular-oauth2-oidc'; import { NgxsResetPluginModule, StateOverwrite } from 'ngxs-reset-plugin'; 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 e82e89d4a0..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 @@ -1,5 +1,5 @@ import { Component, LOCALE_ID } from '@angular/core'; -import { createRoutingFactory, SpectatorHost, SpectatorRouting } from '@ngneat/spectator'; +import { createRoutingFactory, SpectatorHost, SpectatorRouting } from '@ngneat/spectator/jest'; import { LocalizationService } from '../services'; import { LocaleProvider, LocaleId } from '../providers'; import localesMapping from '../constants/different-locales'; @@ -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/localization.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/localization.service.spec.ts index 8c0dbebb40..7f613543d6 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/localization.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/localization.service.spec.ts @@ -1,5 +1,5 @@ import { Router } from '@angular/router'; -import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spectator'; +import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spectator/jest'; import { Store } from '@ngxs/store'; import { Observable, of } from 'rxjs'; import { LocalizationService } from '../services/localization.service'; 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 new file mode 100644 index 0000000000..6a06ec2c12 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/tests/rest.service.spec.ts @@ -0,0 +1,95 @@ +import { createHttpFactory, HttpMethod, SpectatorHttp, SpyObject } from '@ngneat/spectator/jest'; +import { Store } from '@ngxs/store'; +import { Subscription, timer, interval, throwError, of } from 'rxjs'; +import { mapTo, catchError } from 'rxjs/operators'; +import { RestService } from '../services/rest.service'; +import { Rest } from '../models'; +import { RestOccurError } from '../actions'; + +describe('HttpClient testing', () => { + let spectator: SpectatorHttp; + let store: SpyObject; + const api = 'https://abp.io'; + + const createHttp = createHttpFactory({ dataService: RestService, mocks: [Store] }); + + beforeEach(() => { + spectator = createHttp(); + store = spectator.get(Store); + store.selectSnapshot.andReturn(api); + }); + + 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); + }); + + test('should send a POST request with body', () => { + spectator.service.request({ method: HttpMethod.POST, url: '/test', body: { id: 1 } }).subscribe(); + const req = spectator.expectOne(api + '/test', HttpMethod.POST); + expect(req.request.body['id']).toEqual(1); + }); + + test('should use the specific api', () => { + spectator.service.request({ method: HttpMethod.GET, url: '/test' }, null, 'http://test.api').subscribe(); + spectator.expectOne('http://test.api' + '/test', HttpMethod.GET); + }); + + test('should close the subscriber when observe equal to body', done => { + jest.spyOn(spectator.httpClient, 'request').mockReturnValue(interval(50)); + + const subscriber: Subscription = spectator.service + .request({ method: HttpMethod.GET, url: '/test' }, { observe: Rest.Observe.Body }) + .subscribe(); + + timer(51).subscribe(() => { + expect(subscriber.closed).toBe(true); + done(); + }); + }); + + test('should open the subscriber when observe not equal to body', done => { + jest.spyOn(spectator.httpClient, 'request').mockReturnValue(interval(50)); + + const subscriber: Subscription = spectator.service + .request({ method: HttpMethod.GET, url: '/test' }, { observe: Rest.Observe.Events }) + .subscribe(); + + timer(51).subscribe(() => { + expect(subscriber.closed).toBe(false); + done(); + }); + }); + + test('should handle the error', () => { + jest.spyOn(spectator.httpClient, 'request').mockReturnValue(throwError('An error')); + const spy = jest.spyOn(store, 'dispatch'); + + spectator.service + .request({ method: HttpMethod.GET, url: '/test' }, { observe: Rest.Observe.Events }) + .pipe( + catchError(err => { + expect(err).toBeTruthy(); + expect(spy.mock.calls[0][0] instanceof RestOccurError).toBe(true); + return of(null); + }), + ) + .subscribe(); + }); + + test('should not handle the error when skipHandleError is true', () => { + jest.spyOn(spectator.httpClient, 'request').mockReturnValue(throwError('An error')); + const spy = jest.spyOn(store, 'dispatch'); + + spectator.service + .request({ method: HttpMethod.GET, url: '/test' }, { observe: Rest.Observe.Events, skipHandleError: true }) + .pipe( + catchError(err => { + expect(err).toBeTruthy(); + expect(spy.mock.calls).toHaveLength(0); + return of(null); + }), + ) + .subscribe(); + }); +}); diff --git a/npm/ng-packs/packages/core/src/lib/tests/router-outlet.component.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/router-outlet.component.spec.ts index 6707432c03..b7e79b9c08 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/router-outlet.component.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/router-outlet.component.spec.ts @@ -1,4 +1,4 @@ -import { Spectator, createComponentFactory, createHostFactory } from '@ngneat/spectator'; +import { Spectator, createComponentFactory, createHostFactory } from '@ngneat/spectator/jest'; import { RouterTestingModule } from '@angular/router/testing'; import { RouterOutletComponent } from '../components/router-outlet.component'; @@ -8,7 +8,6 @@ describe('RouterOutletComponent', () => { it('should have a router-outlet element', () => { spectator = createHost(''); - console.log((spectator.debugElement.nativeElement as HTMLElement).children); expect((spectator.debugElement.nativeElement as HTMLElement).children.length).toBe(1); expect((spectator.debugElement.nativeElement as HTMLElement).children[0].tagName).toBe('ROUTER-OUTLET'); }); diff --git a/npm/ng-packs/packages/core/src/test.ts b/npm/ng-packs/packages/core/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/core/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/core/tsconfig.spec.json b/npm/ng-packs/packages/core/tsconfig.spec.json index b86d4b4cce..d2fb1e6cb3 100644 --- a/npm/ng-packs/packages/core/tsconfig.spec.json +++ b/npm/ng-packs/packages/core/tsconfig.spec.json @@ -1,13 +1,14 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": ["jasmine", "node"], + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"], "paths": { - "@abp/ng.core": ["packages/core/src/public-api.ts"], "@abp/ng.core/*": ["packages/core/src/lib/*"] } }, - "files": ["src/test.ts"], "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/feature-management/karma.conf.js b/npm/ng-packs/packages/feature-management/karma.conf.js deleted file mode 100644 index 65f905a52e..0000000000 --- a/npm/ng-packs/packages/feature-management/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/feature-management'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/feature-management/src/test.ts b/npm/ng-packs/packages/feature-management/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/feature-management/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/feature-management/tsconfig.spec.json b/npm/ng-packs/packages/feature-management/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/feature-management/tsconfig.spec.json +++ b/npm/ng-packs/packages/feature-management/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/identity-config/karma.conf.js b/npm/ng-packs/packages/identity-config/karma.conf.js deleted file mode 100644 index 47f6e498d2..0000000000 --- a/npm/ng-packs/packages/identity-config/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/identity-config'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/identity-config/src/test.ts b/npm/ng-packs/packages/identity-config/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/identity-config/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/identity-config/tsconfig.spec.json b/npm/ng-packs/packages/identity-config/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/identity-config/tsconfig.spec.json +++ b/npm/ng-packs/packages/identity-config/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/identity/karma.conf.js b/npm/ng-packs/packages/identity/karma.conf.js deleted file mode 100644 index 96fe6c9293..0000000000 --- a/npm/ng-packs/packages/identity/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/identity'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/identity/src/test.ts b/npm/ng-packs/packages/identity/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/identity/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/identity/tsconfig.spec.json b/npm/ng-packs/packages/identity/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/identity/tsconfig.spec.json +++ b/npm/ng-packs/packages/identity/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/permission-management/karma.conf.js b/npm/ng-packs/packages/permission-management/karma.conf.js deleted file mode 100644 index 9bbd5907ef..0000000000 --- a/npm/ng-packs/packages/permission-management/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/permission-management'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/permission-management/src/test.ts b/npm/ng-packs/packages/permission-management/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/permission-management/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/permission-management/tsconfig.spec.json b/npm/ng-packs/packages/permission-management/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/permission-management/tsconfig.spec.json +++ b/npm/ng-packs/packages/permission-management/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/setting-management-config/karma.conf.js b/npm/ng-packs/packages/setting-management-config/karma.conf.js deleted file mode 100644 index 7ff4863cb0..0000000000 --- a/npm/ng-packs/packages/setting-management-config/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/setting-management-config'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/setting-management-config/src/test.ts b/npm/ng-packs/packages/setting-management-config/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/setting-management-config/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/setting-management-config/tsconfig.spec.json b/npm/ng-packs/packages/setting-management-config/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/setting-management-config/tsconfig.spec.json +++ b/npm/ng-packs/packages/setting-management-config/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/setting-management/karma.conf.js b/npm/ng-packs/packages/setting-management/karma.conf.js deleted file mode 100644 index 51ccc0578d..0000000000 --- a/npm/ng-packs/packages/setting-management/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/setting-management'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/setting-management/src/test.ts b/npm/ng-packs/packages/setting-management/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/setting-management/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/setting-management/tsconfig.spec.json b/npm/ng-packs/packages/setting-management/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/setting-management/tsconfig.spec.json +++ b/npm/ng-packs/packages/setting-management/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/tenant-management-config/karma.conf.js b/npm/ng-packs/packages/tenant-management-config/karma.conf.js deleted file mode 100644 index 850929cc06..0000000000 --- a/npm/ng-packs/packages/tenant-management-config/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/tenant-management-config'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/tenant-management-config/src/test.ts b/npm/ng-packs/packages/tenant-management-config/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/tenant-management-config/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json b/npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json +++ b/npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/tenant-management/karma.conf.js b/npm/ng-packs/packages/tenant-management/karma.conf.js deleted file mode 100644 index eb6cfa24b4..0000000000 --- a/npm/ng-packs/packages/tenant-management/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/tenant-management'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/tenant-management/src/test.ts b/npm/ng-packs/packages/tenant-management/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/tenant-management/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/tenant-management/tsconfig.spec.json b/npm/ng-packs/packages/tenant-management/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/tenant-management/tsconfig.spec.json +++ b/npm/ng-packs/packages/tenant-management/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/theme-basic/karma.conf.js b/npm/ng-packs/packages/theme-basic/karma.conf.js deleted file mode 100644 index e04be0a193..0000000000 --- a/npm/ng-packs/packages/theme-basic/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/theme-basic'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/npm/ng-packs/packages/theme-basic/src/test.ts b/npm/ng-packs/packages/theme-basic/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/theme-basic/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/theme-basic/tsconfig.spec.json b/npm/ng-packs/packages/theme-basic/tsconfig.spec.json index 16da33db07..ebce9b9fdb 100644 --- a/npm/ng-packs/packages/theme-basic/tsconfig.spec.json +++ b/npm/ng-packs/packages/theme-basic/tsconfig.spec.json @@ -2,16 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "types": ["node", "jest"] }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "files": [], + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/packages/theme-shared/jest.config.js b/npm/ng-packs/packages/theme-shared/jest.config.js new file mode 100644 index 0000000000..718fcfe21b --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/jest.config.js @@ -0,0 +1,10 @@ +const { pathsToModuleNameMapper } = require('ts-jest/utils'); +const { compilerOptions } = require('./tsconfig.spec'); +const jestConfig = require('../../jest.config'); + +module.exports = { + ...jestConfig, + name: 'theme-shared', + moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths /*, { prefix: '/' } */), + 'ts-jest': { allowSyntheticDefaultImports: true }, +}; diff --git a/npm/ng-packs/packages/theme-shared/karma.conf.js b/npm/ng-packs/packages/theme-shared/karma.conf.js deleted file mode 100644 index 5703b124a6..0000000000 --- a/npm/ng-packs/packages/theme-shared/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function(config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma'), - ], - client: { - clearContext: false, // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/theme-shared'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true, - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true, - }); -}; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/button.component.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/button.component.spec.ts index 67526e271f..59d49e68c4 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/button.component.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/button.component.spec.ts @@ -1,4 +1,4 @@ -import { createHostFactory, SpectatorHost } from '@ngneat/spectator'; +import { createHostFactory, SpectatorHost } from '@ngneat/spectator/jest'; import { ButtonComponent } from '../components'; describe('ButtonComponent', () => { diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts index f64b7d73e2..764197f1e3 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts @@ -2,7 +2,7 @@ import { CoreModule, RestOccurError, RouterOutletComponent } from '@abp/ng.core' import { Location } from '@angular/common'; import { HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { Component } from '@angular/core'; -import { createRoutingFactory, SpectatorRouting } from '@ngneat/spectator'; +import { createRoutingFactory, SpectatorRouting } from '@ngneat/spectator/jest'; import { NgxsModule, Store } from '@ngxs/store'; import { DEFAULT_ERROR_MESSAGES, ErrorHandler } from '../handlers'; import { ThemeSharedModule } from '../theme-shared.module'; @@ -35,7 +35,9 @@ describe('ErrorHandler', () => { store.dispatch(new RestOccurError(new HttpErrorResponse({ status: 500 }))); spectator.detectChanges(); expect(document.querySelector('.error-template')).toHaveText(DEFAULT_ERROR_MESSAGES.defaultError500.title); - expect(document.querySelector('.error-details')).toHaveText(DEFAULT_ERROR_MESSAGES.defaultError500.details); + expect(document.querySelector('.error-details')).toHaveText( + DEFAULT_ERROR_MESSAGES.defaultError500.details.defaultValue, + ); }); it('should display the error component when authorize error occurs', () => { @@ -49,7 +51,9 @@ describe('ErrorHandler', () => { store.dispatch(new RestOccurError(new HttpErrorResponse({ status: 0, statusText: 'Unknown Error' }))); spectator.detectChanges(); expect(document.querySelector('.error-template')).toHaveText(DEFAULT_ERROR_MESSAGES.defaultErrorUnknown.title); - expect(document.querySelector('.error-details')).toHaveText(DEFAULT_ERROR_MESSAGES.defaultErrorUnknown.details); + expect(document.querySelector('.error-details')).toHaveText( + DEFAULT_ERROR_MESSAGES.defaultErrorUnknown.details.defaultValue, + ); }); it('should display the confirmation when not found error occurs', () => { diff --git a/npm/ng-packs/packages/theme-shared/src/test.ts b/npm/ng-packs/packages/theme-shared/src/test.ts deleted file mode 100644 index 978c64fb83..0000000000 --- a/npm/ng-packs/packages/theme-shared/src/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/npm/ng-packs/packages/theme-shared/tsconfig.spec.json b/npm/ng-packs/packages/theme-shared/tsconfig.spec.json index 16da33db07..f87ea306f2 100644 --- a/npm/ng-packs/packages/theme-shared/tsconfig.spec.json +++ b/npm/ng-packs/packages/theme-shared/tsconfig.spec.json @@ -1,17 +1,14 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": [ - "jasmine", - "node" - ] + "emitDecoratorMetadata": true, + "esModuleInterop": true, + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"], + "paths": { + "@abp/ng.theme-shared/*": ["packages/theme-shared/src/lib/*"] + } }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] + "include": ["**/*.spec.ts", "**/*.d.ts"] } diff --git a/npm/ng-packs/test-setup.ts b/npm/ng-packs/test-setup.ts new file mode 100644 index 0000000000..8d88704e8f --- /dev/null +++ b/npm/ng-packs/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular'; 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, diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index a6e9f78048..a0d90bf695 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -9,7 +9,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs index c4a5b7a007..b9a7094c54 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs @@ -1,6 +1,6 @@ using System; -using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName try { Log.Information("Starting MyCompanyName.MyProjectName.HttpApi.Host."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName } } - public static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs index 896211a175..644425b274 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs @@ -1,22 +1,15 @@ -using System; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace MyCompanyName.MyProjectName { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj index c8f15b6820..3a566c6563 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj @@ -9,7 +9,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs index c4a5b7a007..b9a7094c54 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs @@ -1,6 +1,6 @@ using System; -using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName try { Log.Information("Starting MyCompanyName.MyProjectName.HttpApi.Host."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName } } - public static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Startup.cs index 896211a175..644425b274 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Startup.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Startup.cs @@ -1,22 +1,15 @@ -using System; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace MyCompanyName.MyProjectName { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index bdd8139f79..6ccc50b140 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -31,7 +31,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs index 31b888e68d..3264de7167 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs @@ -1,6 +1,6 @@ using System; -using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName try { Log.Information("Starting MyCompanyName.MyProjectName.IdentityServer."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName } } - internal static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs index dd8727554f..7fd62325bd 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs @@ -1,20 +1,13 @@ -using System; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; -using Volo.Abp; namespace MyCompanyName.MyProjectName { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index ca8202b42a..d8f91dfd0d 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -15,7 +15,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Program.cs index 0fdbda7bf9..5143e37164 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Program.cs @@ -1,6 +1,6 @@ using System; -using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName.Web try { Log.Information("Starting web host."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName.Web } } - public static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs index db5c45e654..9428c74114 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs @@ -1,21 +1,14 @@ -using System; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace MyCompanyName.MyProjectName.Web { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj index 9bfeded944..8c65e90c25 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj @@ -31,7 +31,7 @@ - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index c41aa762d8..25a59a3d07 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -1,5 +1,7 @@ -using System.IO; +using System; +using System.IO; using Localization.Resources.AbpUi; +using Microsoft.AspNetCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; @@ -22,6 +24,7 @@ using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.Autofac; using Volo.Abp.AutoMapper; +using Volo.Abp.Configuration; using Volo.Abp.FeatureManagement; using Volo.Abp.Identity.Web; using Volo.Abp.Localization; diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Program.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Program.cs index 47b0ced597..5143e37164 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Program.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Program.cs @@ -1,6 +1,6 @@ using System; -using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -16,7 +16,7 @@ namespace MyCompanyName.MyProjectName.Web #else .MinimumLevel.Information() #endif - .MinimumLevel.Override("Microsoft", LogEventLevel.Debug) + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) .Enrich.FromLogContext() .WriteTo.Async(c => c.File("Logs/logs.txt")) .CreateLogger(); @@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName.Web try { Log.Information("Starting web host."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName.Web } } - public static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Startup.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Startup.cs index db5c45e654..9428c74114 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Startup.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Startup.cs @@ -1,21 +1,14 @@ -using System; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace MyCompanyName.MyProjectName.Web { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj index efcb7e857a..6a2ee611da 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj @@ -9,7 +9,7 @@ - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs index 639e485a38..31537b2398 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs @@ -1,6 +1,7 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -24,7 +25,7 @@ namespace MyCompanyName.MyProjectName try { Log.Information("Starting web host."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -38,14 +39,13 @@ namespace MyCompanyName.MyProjectName } } - public static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs index 19fe569013..dc9807e4a0 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs @@ -3,20 +3,14 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace MyCompanyName.MyProjectName { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj index 5586141e5a..f0431dce74 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj @@ -7,7 +7,7 @@ - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs index 639e485a38..31537b2398 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs @@ -1,6 +1,7 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -24,7 +25,7 @@ namespace MyCompanyName.MyProjectName try { Log.Information("Starting web host."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -38,14 +39,13 @@ namespace MyCompanyName.MyProjectName } } - public static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Startup.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Startup.cs index ff2a868a60..5efb1ca00d 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Startup.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Startup.cs @@ -3,20 +3,14 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace MyCompanyName.MyProjectName { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj index f98264ed74..4a6578146d 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj @@ -9,7 +9,7 @@ - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Program.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Program.cs index 639e485a38..31537b2398 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Program.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Program.cs @@ -1,6 +1,7 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -24,7 +25,7 @@ namespace MyCompanyName.MyProjectName try { Log.Information("Starting web host."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -38,14 +39,13 @@ namespace MyCompanyName.MyProjectName } } - public static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Startup.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Startup.cs index be06102769..1c5ffbe462 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Startup.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Startup.cs @@ -1,21 +1,14 @@ -using System; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace MyCompanyName.MyProjectName { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj index acf0fcb8c3..3c597f160c 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj @@ -9,7 +9,7 @@ - + diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs index 004c00d3c1..ccfc845eaf 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs @@ -1,6 +1,5 @@ using System.IO; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using MyCompanyName.MyProjectName.EntityFrameworkCore; diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Program.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Program.cs index c1e595c693..e196a31cb4 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Program.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Program.cs @@ -1,6 +1,7 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; @@ -20,7 +21,7 @@ namespace MyCompanyName.MyProjectName try { Log.Information("Starting web host."); - BuildWebHostInternal(args).Run(); + CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) @@ -34,14 +35,13 @@ namespace MyCompanyName.MyProjectName } } - public static IWebHost BuildWebHostInternal(string[] args) => - new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIIS() - .UseIISIntegration() - .UseStartup() - .UseSerilog() - .Build(); + internal static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }) + .UseAutofac() + .UseSerilog(); } } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Startup.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Startup.cs index 0dbb22e4e6..e052534eb7 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Startup.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Startup.cs @@ -1,22 +1,15 @@ -using System; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Volo.Abp; namespace MyCompanyName.MyProjectName { public class Startup { - public IServiceProvider ConfigureServices(IServiceCollection services) + public void ConfigureServices(IServiceCollection services) { - services.AddApplication(options => - { - options.UseAutofac(); - }); - - return services.BuildServiceProviderFromFactory(); + services.AddApplication(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)