Browse Source

Merge branch 'dev' into source-code-download

pull/1822/head
Yunus Emre Kalkan 7 years ago
parent
commit
97540f9c2b
  1. 5
      docs/en/Multi-Tenancy.md
  2. 4
      docs/zh-Hans/Multi-Tenancy.md
  3. 20
      framework/src/Volo.Abp.Autofac/Microsoft/Extensions/Hosting/AbpAutofacHostBuilderExtensions.cs
  4. 1
      framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj
  5. 4
      framework/src/Volo.Abp.Core/Volo/Abp/Configuration/IConfigurationAccessor.cs
  6. 30
      npm/ng-packs/angular.json
  7. 30
      npm/ng-packs/apps/dev-app/e2e/protractor.conf.js
  8. 28
      npm/ng-packs/apps/dev-app/e2e/src/app.e2e-spec.ts
  9. 11
      npm/ng-packs/apps/dev-app/e2e/src/app.po.ts
  10. 9
      npm/ng-packs/apps/dev-app/e2e/tsconfig.json
  11. 32
      npm/ng-packs/apps/dev-app/karma.conf.js
  12. 14
      npm/ng-packs/apps/dev-app/src/test.ts
  13. 4
      npm/ng-packs/apps/dev-app/tsconfig.spec.json
  14. 19
      npm/ng-packs/jest.config.js
  15. 17
      npm/ng-packs/package.json
  16. 32
      npm/ng-packs/packages/account-config/karma.conf.js
  17. 21
      npm/ng-packs/packages/account-config/src/test.ts
  18. 14
      npm/ng-packs/packages/account-config/tsconfig.spec.json
  19. 32
      npm/ng-packs/packages/account/karma.conf.js
  20. 21
      npm/ng-packs/packages/account/src/test.ts
  21. 14
      npm/ng-packs/packages/account/tsconfig.spec.json
  22. 10
      npm/ng-packs/packages/core/jest.config.js
  23. 32
      npm/ng-packs/packages/core/karma.conf.js
  24. 10
      npm/ng-packs/packages/core/src/lib/services/rest.service.ts
  25. 10
      npm/ng-packs/packages/core/src/lib/tests/config.plugin.spec.ts
  26. 2
      npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts
  27. 4
      npm/ng-packs/packages/core/src/lib/tests/locale.provider.spec.ts
  28. 2
      npm/ng-packs/packages/core/src/lib/tests/localization.service.spec.ts
  29. 95
      npm/ng-packs/packages/core/src/lib/tests/rest.service.spec.ts
  30. 3
      npm/ng-packs/packages/core/src/lib/tests/router-outlet.component.spec.ts
  31. 21
      npm/ng-packs/packages/core/src/test.ts
  32. 9
      npm/ng-packs/packages/core/tsconfig.spec.json
  33. 32
      npm/ng-packs/packages/feature-management/karma.conf.js
  34. 21
      npm/ng-packs/packages/feature-management/src/test.ts
  35. 14
      npm/ng-packs/packages/feature-management/tsconfig.spec.json
  36. 32
      npm/ng-packs/packages/identity-config/karma.conf.js
  37. 21
      npm/ng-packs/packages/identity-config/src/test.ts
  38. 14
      npm/ng-packs/packages/identity-config/tsconfig.spec.json
  39. 32
      npm/ng-packs/packages/identity/karma.conf.js
  40. 21
      npm/ng-packs/packages/identity/src/test.ts
  41. 14
      npm/ng-packs/packages/identity/tsconfig.spec.json
  42. 32
      npm/ng-packs/packages/permission-management/karma.conf.js
  43. 21
      npm/ng-packs/packages/permission-management/src/test.ts
  44. 14
      npm/ng-packs/packages/permission-management/tsconfig.spec.json
  45. 32
      npm/ng-packs/packages/setting-management-config/karma.conf.js
  46. 21
      npm/ng-packs/packages/setting-management-config/src/test.ts
  47. 14
      npm/ng-packs/packages/setting-management-config/tsconfig.spec.json
  48. 32
      npm/ng-packs/packages/setting-management/karma.conf.js
  49. 21
      npm/ng-packs/packages/setting-management/src/test.ts
  50. 14
      npm/ng-packs/packages/setting-management/tsconfig.spec.json
  51. 32
      npm/ng-packs/packages/tenant-management-config/karma.conf.js
  52. 21
      npm/ng-packs/packages/tenant-management-config/src/test.ts
  53. 14
      npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json
  54. 32
      npm/ng-packs/packages/tenant-management/karma.conf.js
  55. 21
      npm/ng-packs/packages/tenant-management/src/test.ts
  56. 14
      npm/ng-packs/packages/tenant-management/tsconfig.spec.json
  57. 32
      npm/ng-packs/packages/theme-basic/karma.conf.js
  58. 21
      npm/ng-packs/packages/theme-basic/src/test.ts
  59. 14
      npm/ng-packs/packages/theme-basic/tsconfig.spec.json
  60. 10
      npm/ng-packs/packages/theme-shared/jest.config.js
  61. 32
      npm/ng-packs/packages/theme-shared/karma.conf.js
  62. 2
      npm/ng-packs/packages/theme-shared/src/lib/tests/button.component.spec.ts
  63. 10
      npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts
  64. 21
      npm/ng-packs/packages/theme-shared/src/test.ts
  65. 21
      npm/ng-packs/packages/theme-shared/tsconfig.spec.json
  66. 1
      npm/ng-packs/test-setup.ts
  67. 2
      npm/ng-packs/tsconfig.json
  68. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj
  69. 21
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs
  70. 13
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs
  71. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj
  72. 21
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs
  73. 13
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Startup.cs
  74. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj
  75. 21
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs
  76. 13
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Startup.cs
  77. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
  78. 21
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Program.cs
  79. 13
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Startup.cs
  80. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj
  81. 5
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs
  82. 23
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Program.cs
  83. 13
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Startup.cs
  84. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj
  85. 20
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs
  86. 10
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Startup.cs
  87. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj
  88. 20
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs
  89. 10
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Startup.cs
  90. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj
  91. 20
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Program.cs
  92. 13
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Startup.cs
  93. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj
  94. 1
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs
  95. 20
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Program.cs
  96. 13
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Startup.cs

5
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. * **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. * **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: "__tenant" parameter name can be changed using AspNetCoreMultiTenancyOptions. Example:
````C# ````C#

4
docs/zh-Hans/Multi-Tenancy.md

@ -308,6 +308,10 @@ Volo.Abp.AspNetCore.MultiTenancy 添加了下面这些租户解析器,从当前W
* **HeaderTenantResolver**: 尝试从HTTP header中获取当前租户,默认的header名称是"__tenant". * **HeaderTenantResolver**: 尝试从HTTP header中获取当前租户,默认的header名称是"__tenant".
* **CookieTenantResolver**: 尝试从当前cookie中获取当前租户.默认的Cookie名称是"__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".例如: 可以使用AspNetCoreMultiTenancyOptions修改默认的参数名"__tenant".例如:
````C# ````C#

20
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));
}
}
}

1
framework/src/Volo.Abp.Autofac/Volo.Abp.Autofac.csproj

@ -16,6 +16,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="4.5.0" /> <PackageReference Include="Autofac.Extras.DynamicProxy" Version="4.5.0" />
<PackageReference Include="Autofac" Version="4.9.4" /> <PackageReference Include="Autofac" Version="4.9.4" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

4
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 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 public interface IConfigurationAccessor
{ {
IConfigurationRoot Configuration { get; } IConfigurationRoot Configuration { get; }

30
npm/ng-packs/angular.json

@ -17,11 +17,9 @@
} }
}, },
"test": { "test": {
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular-builders/jest:run",
"options": { "options": {
"main": "packages/core/src/test.ts", "coverage": true
"tsConfig": "packages/core/tsconfig.spec.json",
"karmaConfig": "packages/core/karma.conf.js"
} }
}, },
"lint": { "lint": {
@ -48,11 +46,9 @@
} }
}, },
"test": { "test": {
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular-builders/jest:run",
"options": { "options": {
"main": "packages/theme-shared/src/test.ts", "coverage": true
"tsConfig": "packages/theme-shared/tsconfig.spec.json",
"karmaConfig": "packages/theme-shared/karma.conf.js"
} }
}, },
"lint": { "lint": {
@ -532,25 +528,9 @@
"lint": { "lint": {
"builder": "@angular-devkit/build-angular:tslint", "builder": "@angular-devkit/build-angular:tslint",
"options": { "options": {
"tsConfig": [ "tsConfig": ["apps/dev-app/tsconfig.app.json", "apps/dev-app/tsconfig.spec.json"],
"apps/dev-app/tsconfig.app.json",
"apps/dev-app/tsconfig.spec.json",
"apps/dev-app/e2e/tsconfig.json"
],
"exclude": ["**/node_modules/**"] "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"
}
}
} }
} }
} }

30
npm/ng-packs/apps/dev-app/e2e/protractor.conf.js

@ -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 } }));
},
};

28
npm/ng-packs/apps/dev-app/e2e/src/app.e2e-spec.ts

@ -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),
);
});
});

11
npm/ng-packs/apps/dev-app/e2e/src/app.po.ts

@ -1,11 +0,0 @@
import { browser, by, element } from 'protractor';
export class AppPage {
navigateTo() {
return browser.get(browser.baseUrl) as Promise<any>;
}
getTitleText() {
return element(by.css('app-root .content span')).getText() as Promise<string>;
}
}

9
npm/ng-packs/apps/dev-app/e2e/tsconfig.json

@ -1,9 +0,0 @@
{
"extends": "../../../tsconfig.json",
"compilerOptions": {
"outDir": "../../../out-tsc/e2e",
"module": "commonjs",
"target": "es5",
"types": ["jasmine", "jasminewd2", "node"]
}
}

32
npm/ng-packs/apps/dev-app/karma.conf.js

@ -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,
});
};

14
npm/ng-packs/apps/dev-app/src/test.ts

@ -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);

4
npm/ng-packs/apps/dev-app/tsconfig.spec.json

@ -2,8 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "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"] "include": ["src/**/*.spec.ts", "src/**/*.d.ts"]
} }

19
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: '<rootDir>/coverage',
coverageReporters: ['html'],
preset: 'jest-preset-angular',
setupFilesAfterEnv: ['<rootDir>/test-setup.ts'],
snapshotSerializers: [
'jest-preset-angular/AngularSnapshotSerializer.js',
'jest-preset-angular/HTMLCommentSerializer.js',
],
};

17
npm/ng-packs/package.json

@ -2,6 +2,7 @@
"scripts": { "scripts": {
"start": "ng serve dev-app", "start": "ng serve dev-app",
"ng": "ng", "ng": "ng",
"test": "ng test",
"symlink": "symlink", "symlink": "symlink",
"abpng": "abpng", "abpng": "abpng",
"commit": "git-cz && node scripts/push.js", "commit": "git-cz && node scripts/push.js",
@ -14,6 +15,7 @@
"@abp/ng.theme.shared": "^0.9.0", "@abp/ng.theme.shared": "^0.9.0",
"@angular-devkit/build-angular": "~0.803.6", "@angular-devkit/build-angular": "~0.803.6",
"@angular-devkit/build-ng-packagr": "~0.803.6", "@angular-devkit/build-ng-packagr": "~0.803.6",
"@angular-builders/jest": "^8.2.0",
"@angular/animations": "~8.2.8", "@angular/animations": "~8.2.8",
"@angular/cdk": "^8.2.2", "@angular/cdk": "^8.2.2",
"@angular/cli": "~8.3.6", "@angular/cli": "~8.3.6",
@ -27,14 +29,13 @@
"@angular/platform-browser-dynamic": "~8.2.8", "@angular/platform-browser-dynamic": "~8.2.8",
"@angular/router": "~8.2.8", "@angular/router": "~8.2.8",
"@ng-bootstrap/ng-bootstrap": "^5.1.0", "@ng-bootstrap/ng-bootstrap": "^5.1.0",
"@ngneat/spectator": "^4.3.2", "@ngneat/spectator": "^4.4.0",
"@ngx-validate/core": "^0.0.5", "@ngx-validate/core": "^0.0.5",
"@ngxs/devtools-plugin": "^3.5.1", "@ngxs/devtools-plugin": "^3.5.1",
"@ngxs/router-plugin": "^3.5.1", "@ngxs/router-plugin": "^3.5.1",
"@ngxs/storage-plugin": "^3.5.1", "@ngxs/storage-plugin": "^3.5.1",
"@ngxs/store": "^3.5.1", "@ngxs/store": "^3.5.1",
"@types/jasmine": "~3.3.8", "@types/jest": "^24.0.18",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4", "@types/node": "~8.9.4",
"angular-oauth2-oidc": "^8.0.1", "angular-oauth2-oidc": "^8.0.1",
"bootstrap": "^4.3.1", "bootstrap": "^4.3.1",
@ -43,15 +44,10 @@
"cz-conventional-changelog": "3.0.2", "cz-conventional-changelog": "3.0.2",
"font-awesome": "^4.7.0", "font-awesome": "^4.7.0",
"husky": "^3.0.7", "husky": "^3.0.7",
"jasmine-core": "~3.4.0", "jest": "^24.9.0",
"jasmine-spec-reporter": "~4.2.1", "jest-preset-angular": "^7.1.1",
"just-clone": "3.1.0", "just-clone": "3.1.0",
"just-compare": "^1.3.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", "lint-staged": "^9.4.0",
"ng-packagr": "^5.5.0", "ng-packagr": "^5.5.0",
"ngx-perfect-scrollbar": "^8.0.0", "ngx-perfect-scrollbar": "^8.0.0",
@ -70,6 +66,7 @@
"zone.js": "~0.9.1" "zone.js": "~0.9.1"
}, },
"dependencies": { "dependencies": {
"@briebug/jest": "^1.3.1",
"tslib": "^1.10.0" "tslib": "^1.10.0"
}, },
"config": { "config": {

32
npm/ng-packs/packages/account-config/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/account-config/src/test.ts

@ -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);

14
npm/ng-packs/packages/account-config/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/account/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/account/src/test.ts

@ -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);

14
npm/ng-packs/packages/account/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

10
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: '<rootDir>/' } */),
'ts-jest': { allowSyntheticDefaultImports: true },
};

32
npm/ng-packs/packages/core/karma.conf.js

@ -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
});
};

10
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 { Injectable } from '@angular/core';
import { Store } from '@ngxs/store'; import { Store } from '@ngxs/store';
import { Observable, throwError } from 'rxjs'; 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 { RestOccurError } from '../actions/rest.actions';
import { Rest } from '../models/rest'; import { Rest } from '../models/rest';
import { ConfigState } from '../states/config.state'; import { ConfigState } from '../states/config.state';
@ -19,12 +19,14 @@ export class RestService {
return throwError(err); return throwError(err);
} }
request<T, R>(request: HttpRequest<T> | Rest.Request<T>, config: Rest.Config = {}, api?: string): Observable<R> { request<T, R>(request: HttpRequest<T> | Rest.Request<T>, config?: Rest.Config, api?: string): Observable<R> {
config = config || ({} as Rest.Config);
const { observe = Rest.Observe.Body, skipHandleError } = 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; const { method, ...options } = request;
return this.http.request<T>(method, url, { observe, ...options } as any).pipe( return this.http.request<T>(method, url, { observe, ...options } as any).pipe(
observe === Rest.Observe.Body ? take(1) : null, observe === Rest.Observe.Body ? take(1) : tap(),
catchError(err => { catchError(err => {
if (skipHandleError) { if (skipHandleError) {
return throwError(err); return throwError(err);

10
npm/ng-packs/packages/core/src/lib/tests/config.plugin.spec.ts

@ -1,14 +1,14 @@
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { createServiceFactory, SpectatorService } from '@ngneat/spectator'; import { createServiceFactory, SpectatorService } from '@ngneat/spectator/jest';
import { NGXS_PLUGINS, NgxsModule, InitState, Store } from '@ngxs/store'; import { NgxsModule, NGXS_PLUGINS, Store } from '@ngxs/store';
import { environment } from '../../../../../apps/dev-app/src/environments/environment'; import { environment } from '../../../../../apps/dev-app/src/environments/environment';
import { LAYOUTS } from '../../../../theme-basic/src/public-api'; 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 { RouterOutletComponent } from '../components';
import { ConfigState } from '../states';
import { CoreModule } from '../core.module'; import { CoreModule } from '../core.module';
import { eLayoutType } from '../enums/common'; 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'; import { addAbpRoutes } from '../utils';
addAbpRoutes([ addAbpRoutes([

2
npm/ng-packs/packages/core/src/lib/tests/dynamic-layout.component.spec.ts

@ -1,6 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; 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 { NgxsModule, Store } from '@ngxs/store';
import { OAuthService } from 'angular-oauth2-oidc'; import { OAuthService } from 'angular-oauth2-oidc';
import { NgxsResetPluginModule, StateOverwrite } from 'ngxs-reset-plugin'; import { NgxsResetPluginModule, StateOverwrite } from 'ngxs-reset-plugin';

4
npm/ng-packs/packages/core/src/lib/tests/locale.provider.spec.ts

@ -1,5 +1,5 @@
import { Component, LOCALE_ID } from '@angular/core'; 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 { LocalizationService } from '../services';
import { LocaleProvider, LocaleId } from '../providers'; import { LocaleProvider, LocaleId } from '../providers';
import localesMapping from '../constants/different-locales'; import localesMapping from '../constants/different-locales';
@ -24,7 +24,7 @@ describe('LocaleProvider', () => {
}); });
describe('#LOCALE_ID', () => { describe('#LOCALE_ID', () => {
it('should equal to localizationService.currentLang', async () => { test('should equal to currentLang', async () => {
spectator = createComponent(); spectator = createComponent();
const localizationService = spectator.get(LocalizationService); const localizationService = spectator.get(LocalizationService);

2
npm/ng-packs/packages/core/src/lib/tests/localization.service.spec.ts

@ -1,5 +1,5 @@
import { Router } from '@angular/router'; 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 { Store } from '@ngxs/store';
import { Observable, of } from 'rxjs'; import { Observable, of } from 'rxjs';
import { LocalizationService } from '../services/localization.service'; import { LocalizationService } from '../services/localization.service';

95
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<RestService>;
let store: SpyObject<Store>;
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();
});
});

3
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 { RouterTestingModule } from '@angular/router/testing';
import { RouterOutletComponent } from '../components/router-outlet.component'; import { RouterOutletComponent } from '../components/router-outlet.component';
@ -8,7 +8,6 @@ describe('RouterOutletComponent', () => {
it('should have a router-outlet element', () => { it('should have a router-outlet element', () => {
spectator = createHost('<abp-router-outlet></abp-router-outlet>'); spectator = createHost('<abp-router-outlet></abp-router-outlet>');
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.length).toBe(1);
expect((spectator.debugElement.nativeElement as HTMLElement).children[0].tagName).toBe('ROUTER-OUTLET'); expect((spectator.debugElement.nativeElement as HTMLElement).children[0].tagName).toBe('ROUTER-OUTLET');
}); });

21
npm/ng-packs/packages/core/src/test.ts

@ -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);

9
npm/ng-packs/packages/core/tsconfig.spec.json

@ -1,13 +1,14 @@
{ {
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "emitDecoratorMetadata": true,
"types": ["jasmine", "node"], "esModuleInterop": true,
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"],
"paths": { "paths": {
"@abp/ng.core": ["packages/core/src/public-api.ts"],
"@abp/ng.core/*": ["packages/core/src/lib/*"] "@abp/ng.core/*": ["packages/core/src/lib/*"]
} }
}, },
"files": ["src/test.ts"],
"include": ["**/*.spec.ts", "**/*.d.ts"] "include": ["**/*.spec.ts", "**/*.d.ts"]
} }

32
npm/ng-packs/packages/feature-management/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/feature-management/src/test.ts

@ -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);

14
npm/ng-packs/packages/feature-management/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/identity-config/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/identity-config/src/test.ts

@ -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);

14
npm/ng-packs/packages/identity-config/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/identity/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/identity/src/test.ts

@ -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);

14
npm/ng-packs/packages/identity/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/permission-management/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/permission-management/src/test.ts

@ -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);

14
npm/ng-packs/packages/permission-management/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/setting-management-config/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/setting-management-config/src/test.ts

@ -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);

14
npm/ng-packs/packages/setting-management-config/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/setting-management/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/setting-management/src/test.ts

@ -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);

14
npm/ng-packs/packages/setting-management/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/tenant-management-config/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/tenant-management-config/src/test.ts

@ -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);

14
npm/ng-packs/packages/tenant-management-config/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/tenant-management/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/tenant-management/src/test.ts

@ -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);

14
npm/ng-packs/packages/tenant-management/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

32
npm/ng-packs/packages/theme-basic/karma.conf.js

@ -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
});
};

21
npm/ng-packs/packages/theme-basic/src/test.ts

@ -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);

14
npm/ng-packs/packages/theme-basic/tsconfig.spec.json

@ -2,16 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "outDir": "../../out-tsc/spec",
"types": [ "types": ["node", "jest"]
"jasmine",
"node"
]
}, },
"files": [ "files": [],
"src/test.ts" "include": ["**/*.spec.ts", "**/*.d.ts"]
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

10
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: '<rootDir>/' } */),
'ts-jest': { allowSyntheticDefaultImports: true },
};

32
npm/ng-packs/packages/theme-shared/karma.conf.js

@ -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,
});
};

2
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'; import { ButtonComponent } from '../components';
describe('ButtonComponent', () => { describe('ButtonComponent', () => {

10
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 { Location } from '@angular/common';
import { HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { HttpErrorResponse, HttpHeaders } from '@angular/common/http';
import { Component } from '@angular/core'; 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 { NgxsModule, Store } from '@ngxs/store';
import { DEFAULT_ERROR_MESSAGES, ErrorHandler } from '../handlers'; import { DEFAULT_ERROR_MESSAGES, ErrorHandler } from '../handlers';
import { ThemeSharedModule } from '../theme-shared.module'; import { ThemeSharedModule } from '../theme-shared.module';
@ -35,7 +35,9 @@ describe('ErrorHandler', () => {
store.dispatch(new RestOccurError(new HttpErrorResponse({ status: 500 }))); store.dispatch(new RestOccurError(new HttpErrorResponse({ status: 500 })));
spectator.detectChanges(); spectator.detectChanges();
expect(document.querySelector('.error-template')).toHaveText(DEFAULT_ERROR_MESSAGES.defaultError500.title); 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', () => { 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' }))); store.dispatch(new RestOccurError(new HttpErrorResponse({ status: 0, statusText: 'Unknown Error' })));
spectator.detectChanges(); spectator.detectChanges();
expect(document.querySelector('.error-template')).toHaveText(DEFAULT_ERROR_MESSAGES.defaultErrorUnknown.title); 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', () => { it('should display the confirmation when not found error occurs', () => {

21
npm/ng-packs/packages/theme-shared/src/test.ts

@ -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);

21
npm/ng-packs/packages/theme-shared/tsconfig.spec.json

@ -1,17 +1,14 @@
{ {
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/spec", "emitDecoratorMetadata": true,
"types": [ "esModuleInterop": true,
"jasmine", "outDir": "../../dist/out-tsc",
"node" "module": "commonjs",
] "types": ["jest", "node"],
"paths": {
"@abp/ng.theme-shared/*": ["packages/theme-shared/src/lib/*"]
}
}, },
"files": [ "include": ["**/*.spec.ts", "**/*.d.ts"]
"src/test.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
} }

1
npm/ng-packs/test-setup.ts

@ -0,0 +1 @@
import 'jest-preset-angular';

2
npm/ng-packs/tsconfig.json

@ -13,7 +13,7 @@
"target": "es2015", "target": "es2015",
"typeRoots": ["node_modules/@types"], "typeRoots": ["node_modules/@types"],
"lib": ["es2018", "dom"], "lib": ["es2018", "dom"],
"paths": {} "types": ["jest"]
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"fullTemplateTypeCheck": true, "fullTemplateTypeCheck": true,

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj

@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />

21
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs

@ -1,6 +1,6 @@
using System; using System;
using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName
try try
{ {
Log.Information("Starting MyCompanyName.MyProjectName.HttpApi.Host."); Log.Information("Starting MyCompanyName.MyProjectName.HttpApi.Host.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName
} }
} }
public static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

13
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.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameHttpApiHostModule>(options => services.AddApplication<MyProjectNameHttpApiHostModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyCompanyName.MyProjectName.HttpApi.HostWithIds.csproj

@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />

21
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/Program.cs

@ -1,6 +1,6 @@
using System; using System;
using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName
try try
{ {
Log.Information("Starting MyCompanyName.MyProjectName.HttpApi.Host."); Log.Information("Starting MyCompanyName.MyProjectName.HttpApi.Host.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName
} }
} }
public static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

13
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.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameHttpApiHostModule>(options => services.AddApplication<MyProjectNameHttpApiHostModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj

@ -31,7 +31,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.0.0" /> <PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.0.0" />

21
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/Program.cs

@ -1,6 +1,6 @@
using System; using System;
using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName
try try
{ {
Log.Information("Starting MyCompanyName.MyProjectName.IdentityServer."); Log.Information("Starting MyCompanyName.MyProjectName.IdentityServer.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName
} }
} }
internal static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

13
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 Microsoft.Extensions.DependencyInjection;
using Volo.Abp;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameIdentityServerModule>(options => services.AddApplication<MyProjectNameIdentityServerModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app) public void Configure(IApplicationBuilder app)

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj

@ -15,7 +15,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />

21
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/Program.cs

@ -1,6 +1,6 @@
using System; using System;
using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName.Web
try try
{ {
Log.Information("Starting web host."); Log.Information("Starting web host.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName.Web
} }
} }
public static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

13
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.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp;
namespace MyCompanyName.MyProjectName.Web namespace MyCompanyName.MyProjectName.Web
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameWebModule>(options => services.AddApplication<MyProjectNameWebModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj

@ -31,7 +31,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" /> <PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />

5
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 Localization.Resources.AbpUi;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration; 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.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.Autofac; using Volo.Abp.Autofac;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Volo.Abp.Configuration;
using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement;
using Volo.Abp.Identity.Web; using Volo.Abp.Identity.Web;
using Volo.Abp.Localization; using Volo.Abp.Localization;

23
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/Program.cs

@ -1,6 +1,6 @@
using System; using System;
using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -16,7 +16,7 @@ namespace MyCompanyName.MyProjectName.Web
#else #else
.MinimumLevel.Information() .MinimumLevel.Information()
#endif #endif
.MinimumLevel.Override("Microsoft", LogEventLevel.Debug) .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext() .Enrich.FromLogContext()
.WriteTo.Async(c => c.File("Logs/logs.txt")) .WriteTo.Async(c => c.File("Logs/logs.txt"))
.CreateLogger(); .CreateLogger();
@ -24,7 +24,7 @@ namespace MyCompanyName.MyProjectName.Web
try try
{ {
Log.Information("Starting web host."); Log.Information("Starting web host.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -38,14 +38,13 @@ namespace MyCompanyName.MyProjectName.Web
} }
} }
public static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

13
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.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp;
namespace MyCompanyName.MyProjectName.Web namespace MyCompanyName.MyProjectName.Web
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameWebModule>(options => services.AddApplication<MyProjectNameWebModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj

@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.0" /> <PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.0" />

20
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.HttpApi.Host/Program.cs

@ -1,6 +1,7 @@
using System; using System;
using System.IO; using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -24,7 +25,7 @@ namespace MyCompanyName.MyProjectName
try try
{ {
Log.Information("Starting web host."); Log.Information("Starting web host.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -38,14 +39,13 @@ namespace MyCompanyName.MyProjectName
} }
} }
public static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

10
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.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameHttpApiHostModule>(options => services.AddApplication<MyProjectNameHttpApiHostModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/MyCompanyName.MyProjectName.IdentityServer.csproj

@ -7,7 +7,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.0" /> <PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.0" />

20
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Program.cs

@ -1,6 +1,7 @@
using System; using System;
using System.IO; using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -24,7 +25,7 @@ namespace MyCompanyName.MyProjectName
try try
{ {
Log.Information("Starting web host."); Log.Information("Starting web host.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -38,14 +39,13 @@ namespace MyCompanyName.MyProjectName
} }
} }
public static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

10
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/Startup.cs

@ -3,20 +3,14 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameIdentityServerModule>(options => services.AddApplication<MyProjectNameIdentityServerModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/MyCompanyName.MyProjectName.Web.Host.csproj

@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="3.0.0" />

20
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Host/Program.cs

@ -1,6 +1,7 @@
using System; using System;
using System.IO; using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -24,7 +25,7 @@ namespace MyCompanyName.MyProjectName
try try
{ {
Log.Information("Starting web host."); Log.Information("Starting web host.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -38,14 +39,13 @@ namespace MyCompanyName.MyProjectName
} }
} }
public static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

13
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.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameWebHostModule>(options => services.AddApplication<MyProjectNameWebHostModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyCompanyName.MyProjectName.Web.Unified.csproj

@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> <PackageReference Include="Serilog.Extensions.Hosting" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0" />

1
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/MyProjectNameWebUnifiedModule.cs

@ -1,6 +1,5 @@
using System.IO; using System.IO;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using MyCompanyName.MyProjectName.EntityFrameworkCore; using MyCompanyName.MyProjectName.EntityFrameworkCore;

20
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Web.Unified/Program.cs

@ -1,6 +1,7 @@
using System; using System;
using System.IO; using System.IO;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog; using Serilog;
using Serilog.Events; using Serilog.Events;
@ -20,7 +21,7 @@ namespace MyCompanyName.MyProjectName
try try
{ {
Log.Information("Starting web host."); Log.Information("Starting web host.");
BuildWebHostInternal(args).Run(); CreateHostBuilder(args).Build().Run();
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
@ -34,14 +35,13 @@ namespace MyCompanyName.MyProjectName
} }
} }
public static IWebHost BuildWebHostInternal(string[] args) => internal static IHostBuilder CreateHostBuilder(string[] args) =>
new WebHostBuilder() Host.CreateDefaultBuilder(args)
.UseKestrel() .ConfigureWebHostDefaults(webBuilder =>
.UseContentRoot(Directory.GetCurrentDirectory()) {
.UseIIS() webBuilder.UseStartup<Startup>();
.UseIISIntegration() })
.UseStartup<Startup>() .UseAutofac()
.UseSerilog() .UseSerilog();
.Build();
} }
} }

13
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.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
{ {
public class Startup public class Startup
{ {
public IServiceProvider ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddApplication<MyProjectNameWebUnifiedModule>(options => services.AddApplication<MyProjectNameWebUnifiedModule>();
{
options.UseAutofac();
});
return services.BuildServiceProviderFromFactory();
} }
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

Loading…
Cancel
Save