From fbbd40e3cdacc3ba59a88ea7aad3a78d31a79566 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 16:41:44 +0300 Subject: [PATCH 01/12] fix: use string as baseHref type in ABP.Test interface --- npm/ng-packs/packages/core/src/lib/models/common.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/models/common.ts b/npm/ng-packs/packages/core/src/lib/models/common.ts index 88bd75c027..7e828c9d2a 100644 --- a/npm/ng-packs/packages/core/src/lib/models/common.ts +++ b/npm/ng-packs/packages/core/src/lib/models/common.ts @@ -1,5 +1,5 @@ import { EventEmitter, Type } from '@angular/core'; -import { Router, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { Subject } from 'rxjs'; import { eLayoutType } from '../enums/common'; import { Environment } from './environment'; @@ -13,7 +13,7 @@ export namespace ABP { } export interface Test extends Partial { - baseHref?: Router; + baseHref?: string; routes?: Routes; } From 02e0ec5989cc363822e95448afb891ef4c26c368 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 16:44:19 +0300 Subject: [PATCH 02/12] use withConfig instead of forTest in CoreTestingModule --- .../packages/core/testing/src/lib/core-testing.module.ts | 2 +- .../theme-shared/src/lib/tests/confirmation.service.spec.ts | 4 ++-- .../packages/theme-shared/src/lib/tests/error.handler.spec.ts | 2 +- .../theme-shared/src/lib/tests/toaster.service.spec.ts | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts index 5a43aa9a4c..224992ed23 100644 --- a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts +++ b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts @@ -21,7 +21,7 @@ import { MockLocalizationPipe } from './pipes/mock-localization.pipe'; declarations: [MockLocalizationPipe], }) export class CoreTestingModule { - static forTest( + static withConfig( { baseHref = '/', routes = [], ...options } = {} as ABP.Test, ): ModuleWithProviders { return { diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts index 88813c44de..ab63cb3cb5 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts @@ -13,7 +13,7 @@ import { ConfirmationService } from '../services'; exports: [ConfirmationComponent], entryComponents: [ConfirmationComponent], declarations: [ConfirmationComponent], - imports: [CoreTestingModule.forTest()], + imports: [CoreTestingModule.withConfig()], }) export class MockModule {} @@ -22,7 +22,7 @@ describe('ConfirmationService', () => { let service: ConfirmationService; const createService = createServiceFactory({ service: ConfirmationService, - imports: [NgxsModule.forRoot(), CoreTestingModule.forTest(), MockModule], + imports: [NgxsModule.forRoot(), CoreTestingModule.withConfig(), MockModule], }); beforeEach(() => { 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 939f87e5ee..a6908e03bf 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 @@ -31,7 +31,7 @@ const CONFIRMATION_BUTTONS = { describe('ErrorHandler', () => { const createService = createServiceFactory({ service: ErrorHandler, - imports: [NgxsModule.forRoot([]), CoreTestingModule.forTest(), MockModule], + imports: [NgxsModule.forRoot([]), CoreTestingModule.withConfig(), MockModule], mocks: [OAuthService], providers: [ { provide: APP_BASE_HREF, useValue: '/' }, diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/toaster.service.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/toaster.service.spec.ts index fa6e0e578c..ab885726de 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/toaster.service.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/toaster.service.spec.ts @@ -11,7 +11,7 @@ import { ToasterService } from '../services/toaster.service'; exports: [ToastContainerComponent], entryComponents: [ToastContainerComponent], declarations: [ToastContainerComponent, ToastComponent], - imports: [CoreTestingModule.forTest()], + imports: [CoreTestingModule.withConfig()], }) export class MockModule {} const toastClassPrefix = 'abp-toast'; @@ -21,7 +21,7 @@ describe('ToasterService', () => { let service: ToasterService; const createService = createServiceFactory({ service: ToasterService, - imports: [NgxsModule.forRoot(), CoreTestingModule.forTest(), MockModule], + imports: [NgxsModule.forRoot(), CoreTestingModule.withConfig(), MockModule], }); beforeEach(() => { From 0a98cb6ee1819a924ec488e32fd53c23c8cccff3 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 16:45:27 +0300 Subject: [PATCH 03/12] create a BaseThemeSharedModule --- .../src/lib/theme-shared.module.ts | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts index c4647cbcd1..4bafe28925 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts @@ -27,7 +27,7 @@ import { initLazyStyleHandler } from './handlers/lazy-style.handler'; import { RootParams } from './models/common'; import { THEME_SHARED_ROUTE_PROVIDERS } from './providers/route.provider'; import { THEME_SHARED_APPEND_CONTENT } from './tokens/append-content.token'; -import { HTTP_ERROR_CONFIG, httpErrorConfigFactory } from './tokens/http-error.token'; +import { httpErrorConfigFactory, HTTP_ERROR_CONFIG } from './tokens/http-error.token'; import { DateParserFormatter } from './utils/date-parser-formatter'; const declarationsWithExports = [ @@ -48,17 +48,11 @@ const declarationsWithExports = [ LoadingDirective, TableSortDirective, ]; + @NgModule({ imports: [CoreModule, NgxDatatableModule, NgxValidateCoreModule, NgbPaginationModule], - declarations: [ - ...declarationsWithExports, - HttpErrorWrapperComponent, - ModalContainerComponent, - ], - exports: [ - NgxDatatableModule, - ...declarationsWithExports, - ], + declarations: [...declarationsWithExports, HttpErrorWrapperComponent, ModalContainerComponent], + exports: [NgxDatatableModule, ...declarationsWithExports], providers: [DatePipe], entryComponents: [ HttpErrorWrapperComponent, @@ -68,6 +62,12 @@ const declarationsWithExports = [ ConfirmationComponent, ], }) +export class BaseThemeSharedModule {} + +@NgModule({ + imports: [BaseThemeSharedModule], + exports: [BaseThemeSharedModule], +}) export class ThemeSharedModule { constructor(private errorHandler: ErrorHandler) {} From 37954a8c99927833c163e14dea14bd6048b84b39 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 16:46:08 +0300 Subject: [PATCH 04/12] add an entry point for theme shared testing --- npm/ng-packs/packages/theme-shared/testing/ng-package.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 npm/ng-packs/packages/theme-shared/testing/ng-package.json diff --git a/npm/ng-packs/packages/theme-shared/testing/ng-package.json b/npm/ng-packs/packages/theme-shared/testing/ng-package.json new file mode 100644 index 0000000000..7fc8d6067d --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/testing/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/theme-shared/testing", + "lib": { + "entryFile": "src/public-api.ts" + } +} From 394692d8a486cc56202fca35a516973af5847ebc Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 16:46:50 +0300 Subject: [PATCH 05/12] add ThemeSharedTestingModule --- .../src/lib/theme-shared-testing.module.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 npm/ng-packs/packages/theme-shared/testing/src/lib/theme-shared-testing.module.ts diff --git a/npm/ng-packs/packages/theme-shared/testing/src/lib/theme-shared-testing.module.ts b/npm/ng-packs/packages/theme-shared/testing/src/lib/theme-shared-testing.module.ts new file mode 100644 index 0000000000..323281046a --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/testing/src/lib/theme-shared-testing.module.ts @@ -0,0 +1,27 @@ +import { + BaseThemeSharedModule, + DateParserFormatter, + THEME_SHARED_ROUTE_PROVIDERS, +} from '@abp/ng.theme.shared'; +import { ModuleWithProviders, NgModule } from '@angular/core'; +import { RouterTestingModule } from '@angular/router/testing'; +import { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap'; + +/** + * ThemeSharedTestingModule is the module that will be used in tests + */ +@NgModule({ + exports: [RouterTestingModule, BaseThemeSharedModule], + imports: [RouterTestingModule, BaseThemeSharedModule], +}) +export class ThemeSharedTestingModule { + static withConfig(): ModuleWithProviders { + return { + ngModule: ThemeSharedTestingModule, + providers: [ + THEME_SHARED_ROUTE_PROVIDERS, + { provide: NgbDateParserFormatter, useClass: DateParserFormatter }, + ], + }; + } +} From 98cd7b001bcbb2c97a8975feaefe3a459a1c8776 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 16:46:58 +0300 Subject: [PATCH 06/12] make ThemeSharedTestingModule public --- npm/ng-packs/packages/theme-shared/testing/src/public-api.ts | 1 + 1 file changed, 1 insertion(+) create mode 100644 npm/ng-packs/packages/theme-shared/testing/src/public-api.ts diff --git a/npm/ng-packs/packages/theme-shared/testing/src/public-api.ts b/npm/ng-packs/packages/theme-shared/testing/src/public-api.ts new file mode 100644 index 0000000000..14355a8a28 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/testing/src/public-api.ts @@ -0,0 +1 @@ +export * from './lib/theme-shared-testing.module'; From 78980ed2731345450fb22cfb4f43a677e267020c Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 17:52:10 +0300 Subject: [PATCH 07/12] update yarn lock --- npm/ng-packs/yarn.lock | 106 ++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index 4ef0c07ef8..a3f300d1c8 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,12 +2,12 @@ # yarn lockfile v1 -"@abp/ng.core@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.1.0-rc.1.tgz#efbd35e8df0731e75b2195149269b0228ec4ae42" - integrity sha512-WhXHMlDSbYled+mW8faMW8qHUGVErh/E/3eOgfvhx4N2tGGs5w+A4EfjNVBBROcoLDwiX2q1L88WeNnrK1+OIQ== +"@abp/ng.core@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.1.0-rc.2.tgz#5fe53658965af66fae655dfce4bf6a7ad7105032" + integrity sha512-NcjOn1HYIdLTdHPbWTiLywPp1jQ+zmoeknnb0q/JfUUDn5r5kPrCf85xiZBUo8e+2ViB5vXvkM5lOOD5RfES6A== dependencies: - "@abp/utils" "^4.0.1" + "@abp/utils" "^4.1.0-rc.1" "@angular/localize" "~10.0.10" "@ngxs/store" "^3.7.0" angular-oauth2-oidc "^10.0.0" @@ -17,35 +17,35 @@ ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.1.0-rc.1.tgz#5237db2e5a0ea5a6511941864fa721a303b5612c" - integrity sha512-/9GP6ze127uMkHB2QxWJC2MXiEMTLtBhM0DXYlPZKI+Y+FrVOBoUTI3gNz+AqWFwbBAA4PqfVuThhoja5b29Sg== +"@abp/ng.feature-management@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.1.0-rc.2.tgz#02e760bfa913276e694dbff545e39210a69b21bd" + integrity sha512-vf//thBD3ve8tkmAIan2FqQeHrO/sP8NVV83noGVMTpqKIAWIu7PBuSL3YqcNVOVxHLsO6EIwr63OAJytlvH6A== dependencies: - "@abp/ng.theme.shared" "~4.1.0-rc.1" + "@abp/ng.theme.shared" "~4.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.identity@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.1.0-rc.1.tgz#932fd10482e82400a87927d200c2d3c850cccef4" - integrity sha512-uh7Fy+X2qGiNZ58g2c1GkmJL9VnMPLsKzg9EugNV2VxbGYg4/sNmVvAeIV66x2hpDXETHCjm+7lYuZsqI/5Vew== +"@abp/ng.identity@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.1.0-rc.2.tgz#381d956cebe2f3c272c59567ff424d3729adb6aa" + integrity sha512-4Wnx/iXAOgdexDYuNTV+DBdnjyfhcgca1ZiUSuEnSVDKePq0xvpGeKvpXzhhm9T3uXNsqYwqNq/X5jK3jd6mZg== dependencies: - "@abp/ng.permission-management" "~4.1.0-rc.1" - "@abp/ng.theme.shared" "~4.1.0-rc.1" + "@abp/ng.permission-management" "~4.1.0-rc.2" + "@abp/ng.theme.shared" "~4.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.permission-management@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.1.0-rc.1.tgz#de810f1d50f901cffb15f59756127e83109e79f7" - integrity sha512-AgPpmBKDYnMKmMXoiU9ewGKtn5hH9frO5tV0wjz46BjmO9kIwyap3BBeCFcZjhgVLxZnXi8D0WuzZW7mgQARIQ== +"@abp/ng.permission-management@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.1.0-rc.2.tgz#b74402241886e156a0e72baddfbc0ebebb7576aa" + integrity sha512-6/Z/8KGKkAflfk6CoXk92StEELuP0xkwj2dvvFvnGpr2od9ELGWWqtiJ5Pjz6i5FQvrLdqcHqPh8x/vgr7QV9w== dependencies: - "@abp/ng.theme.shared" "~4.1.0-rc.1" + "@abp/ng.theme.shared" "~4.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.schematics@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-4.1.0-rc.1.tgz#42173b847cfc2f293245a96fe4732a9049b8ab7c" - integrity sha512-FU5Mat3ki6ARDmOK5WC4/AMXJC+61EknuH44SE9Y9PraXAYkJk+2Ha+1qAg+VLBQcEEVWLxIqMp+2Soc6d6oow== +"@abp/ng.schematics@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-4.1.0-rc.2.tgz#31dada6fc1f69d0198f4fb3801b6009d6a0a0c09" + integrity sha512-yVi/C1IbwcOQfXUAe8FSlekdNfoqi/UQvTBQ19h/HGBBDxhqbv6QKjhkaVs/+EOAW8WHWCufyVtQ2/y/jrCeog== dependencies: "@angular-devkit/core" "~11.0.2" "@angular-devkit/schematics" "~11.0.2" @@ -53,37 +53,37 @@ jsonc-parser "^2.3.0" typescript "~3.9.2" -"@abp/ng.setting-management@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-4.1.0-rc.1.tgz#d35083c211089683c4fb07f88523c01e3e5d8ce0" - integrity sha512-qKLV2IWkHbK5ohHMxbdzPqE1pvPPatmV0EidE79Rk4j5+WZXOXtNz5GEA2vLmF3CsuVjX90cJQdtY1bdZpvdVQ== +"@abp/ng.setting-management@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-4.1.0-rc.2.tgz#4b61bff63fa9d68be5f1c7b8c47049cc1bd8b5a8" + integrity sha512-Df2QS0bsytytUSkQ0KrI/m4pVTpQS708fwl8t3KcpeQ4hlgdg6LtTmhUaY/j6k8M1RJHaKvjPE9Jg6R2daLNGg== dependencies: - "@abp/ng.theme.shared" "~4.1.0-rc.1" + "@abp/ng.theme.shared" "~4.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.tenant-management@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-4.1.0-rc.1.tgz#be6740c8a7ac844c7100a46fb88bc96ce386e17d" - integrity sha512-OymGkg5BzHiraUC0FcWPm6JN84FgYNZ3YuLTAZd/iHmqQVoj51ymTK8dBOn7sw49vWlAj/WvGN4Z9tT/JS40zg== +"@abp/ng.tenant-management@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-4.1.0-rc.2.tgz#b75b60db124e5246476821da2bfeebd5e5da09b6" + integrity sha512-AnDiMa/M4xSwiSXjyIsBY13BNxm+JMhWiIEb9WAPlk8IUaNDJZH9zHJH/HQSUHdy6dFCmutl5Ezi6U1J9ZHpPQ== dependencies: - "@abp/ng.feature-management" "~4.1.0-rc.1" - "@abp/ng.theme.shared" "~4.1.0-rc.1" + "@abp/ng.feature-management" "~4.1.0-rc.2" + "@abp/ng.theme.shared" "~4.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.theme.basic@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-4.1.0-rc.1.tgz#311e1ee4490803d43b1b1286620f1efa0fe3f459" - integrity sha512-nTf9UaupTxT0UgBx/SwaVuhtutUXFqGGq2dBKI0JNxltgfykLhDXUOTlUnymLlsyu09DJv8OIZbCX6PJAMV1GA== +"@abp/ng.theme.basic@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-4.1.0-rc.2.tgz#4c0ccb5386a09cf7d89efaee59c8920265032361" + integrity sha512-2NjHymzE/sgbZ8e+CJ4iMemB+mD6e/VSKA2EkCaekPpXDlp0Z3f2yyhm0jwYqCQPsmCjykdtTpR266yLQOs7ug== dependencies: - "@abp/ng.theme.shared" "~4.1.0-rc.1" + "@abp/ng.theme.shared" "~4.1.0-rc.2" tslib "^2.0.0" -"@abp/ng.theme.shared@~4.1.0-rc.1": - version "4.1.0-rc.1" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.1.0-rc.1.tgz#08c051cafd1364563943f7f8b6d067955227cc7e" - integrity sha512-oNPGXI6gyesDnzHq/x7QuXKr0ISwgz9YaKg2bvzZOCvyZ0usL2P4h/4sQvV9ThCYjDdkVKN+cdW+KNvalJ415w== +"@abp/ng.theme.shared@~4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.1.0-rc.2.tgz#eaf524ef26f5433ec7ea01d402ba071c42ce1aa6" + integrity sha512-d6dVhV2wer7eeHoT8Y91Bqf7m2r3FVexUp7R+/f93564swuceZGZWSsgntwpHkNdDJaxhLUJ8tG5XMe2deEGTQ== dependencies: - "@abp/ng.core" "~4.1.0-rc.1" + "@abp/ng.core" "~4.1.0-rc.2" "@fortawesome/fontawesome-free" "^5.14.0" "@ng-bootstrap/ng-bootstrap" "^7.0.0" "@ngx-validate/core" "^0.0.13" @@ -92,13 +92,6 @@ chart.js "^2.9.3" tslib "^2.0.0" -"@abp/utils@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.0.1.tgz#9a4cb420266c49d8084776bd31c86681d4d4d125" - integrity sha512-nI2ZyaNpvohr75p8jeMPWze+hX+mV47EHI+Zloa4GgGmJqrULdG71kYh45R+jGmMTbQL6huaXGnpz4gNF9TGyQ== - dependencies: - just-compare "^1.3.0" - "@abp/utils@^4.1.0-rc.1": version "4.1.0-rc.1" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.1.0-rc.1.tgz#2863867985db9d178a5ce4347309f060f1ce6142" @@ -106,6 +99,13 @@ dependencies: just-compare "^1.3.0" +"@abp/utils@^4.1.0-rc.2": + version "4.1.0-rc.2" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.1.0-rc.2.tgz#eb6dbf0ee493d0f050b37347d2d6d283098aedae" + integrity sha512-V2k5I89lVBoeGIKgg4p2H9GlMAcDWbctwKZPVwBEMVEVm1uTR2xQAWdTdSFd5Q8I8Xsf/aIG8ELM7l5j2h7/zQ== + dependencies: + just-compare "^1.3.0" + "@angular-builders/jest@^10.0.0": version "10.0.1" resolved "https://registry.yarnpkg.com/@angular-builders/jest/-/jest-10.0.1.tgz#a1a6fb5d11b5d54c051bdaa2012b5f046371560c" From ca96318427be3b734637fc46d2cca90c376e4bd1 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 17:52:44 +0300 Subject: [PATCH 08/12] inject ApplicationRef at runtime in ErrorHandler --- .../theme-shared/src/lib/handlers/error.handler.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts b/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts index 46652f8b25..97f9533cf7 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts @@ -74,7 +74,6 @@ export class ErrorHandler { private actions: Actions, private router: Router, private confirmationService: ConfirmationService, - private appRef: ApplicationRef, private cfRes: ComponentFactoryResolver, private rendererFactory: RendererFactory2, private injector: Injector, @@ -281,14 +280,16 @@ export class ErrorHandler { } this.componentRef.instance.hideCloseIcon = this.httpErrorConfig.errorScreen.hideCloseIcon; + const appRef = this.injector.get(ApplicationRef); + if (this.canCreateCustomError(instance.status as ErrorScreenErrorCodes)) { this.componentRef.instance.cfRes = this.cfRes; - this.componentRef.instance.appRef = this.appRef; + this.componentRef.instance.appRef = appRef; this.componentRef.instance.injector = this.injector; this.componentRef.instance.customComponent = this.httpErrorConfig.errorScreen.component; } - this.appRef.attachView(this.componentRef.hostView); + appRef.attachView(this.componentRef.hostView); renderer.appendChild(host, (this.componentRef.hostView as EmbeddedViewRef).rootNodes[0]); const destroy$ = new Subject(); From 0897bd30f9aeb99605e72e15971660fa567a75bd Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 17:53:15 +0300 Subject: [PATCH 09/12] use APP_INITIALIZER to instantiate ErrorHandler --- .../packages/theme-shared/src/lib/theme-shared.module.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts index 4bafe28925..6775c15e5a 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts @@ -69,12 +69,16 @@ export class BaseThemeSharedModule {} exports: [BaseThemeSharedModule], }) export class ThemeSharedModule { - constructor(private errorHandler: ErrorHandler) {} - static forRoot(options = {} as RootParams): ModuleWithProviders { return { ngModule: ThemeSharedModule, providers: [ + { + provide: APP_INITIALIZER, + multi: true, + deps: [ErrorHandler], + useFactory: noop, + }, THEME_SHARED_ROUTE_PROVIDERS, { provide: APP_INITIALIZER, From f37b52480a2b4aaf7a52424e21bcf454176e3492 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 18:46:33 +0300 Subject: [PATCH 10/12] change private props and methods to protected in RestService --- .../packages/core/src/lib/services/rest.service.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 204118aa56..d880c94e5a 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 @@ -15,13 +15,13 @@ import { EnvironmentService } from './environment.service'; }) export class RestService { constructor( - @Inject(CORE_OPTIONS) private options: ABP.Root, - private http: HttpClient, - private store: Store, - private environment: EnvironmentService, + @Inject(CORE_OPTIONS) protected options: ABP.Root, + protected http: HttpClient, + protected environment: EnvironmentService, + protected store: Store, ) {} - private getApiFromStore(apiName: string): string { + protected getApiFromStore(apiName: string): string { return this.environment.getApiUrl(apiName); } From ab0116cca7d19841e3973e11c068de4a84e8583d Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 18:47:07 +0300 Subject: [PATCH 11/12] create a mock rest service which doesn't report errors --- .../core/testing/src/lib/services/index.ts | 1 + .../src/lib/services/mock-rest.service.ts | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 npm/ng-packs/packages/core/testing/src/lib/services/index.ts create mode 100644 npm/ng-packs/packages/core/testing/src/lib/services/mock-rest.service.ts diff --git a/npm/ng-packs/packages/core/testing/src/lib/services/index.ts b/npm/ng-packs/packages/core/testing/src/lib/services/index.ts new file mode 100644 index 0000000000..24206d7c5d --- /dev/null +++ b/npm/ng-packs/packages/core/testing/src/lib/services/index.ts @@ -0,0 +1 @@ +export * from './mock-rest.service'; diff --git a/npm/ng-packs/packages/core/testing/src/lib/services/mock-rest.service.ts b/npm/ng-packs/packages/core/testing/src/lib/services/mock-rest.service.ts new file mode 100644 index 0000000000..b7b4066a4c --- /dev/null +++ b/npm/ng-packs/packages/core/testing/src/lib/services/mock-rest.service.ts @@ -0,0 +1,21 @@ +import { ABP, CORE_OPTIONS, EnvironmentService, RestService } from '@abp/ng.core'; +import { HttpClient } from '@angular/common/http'; +import { Inject, Injectable } from '@angular/core'; +import { Observable, throwError } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class MockRestService extends RestService { + constructor( + @Inject(CORE_OPTIONS) protected options: ABP.Root, + protected http: HttpClient, + protected environment: EnvironmentService, + ) { + super(options, http, environment, null); + } + + handleError(err: any): Observable { + return throwError(err); + } +} From 4fc4172b514f2fcd6950874fd02a3e5c334a6312 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Thu, 24 Dec 2020 18:47:23 +0300 Subject: [PATCH 12/12] provide mock rest service in CoreTestingModule --- .../packages/core/testing/src/lib/core-testing.module.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts index 224992ed23..9a7fc3eec0 100644 --- a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts +++ b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts @@ -4,12 +4,14 @@ import { coreOptionsFactory, CORE_OPTIONS, LocalizationPipe, + RestService, } from '@abp/ng.core'; import { APP_BASE_HREF } from '@angular/common'; import { ModuleWithProviders, NgModule } from '@angular/core'; import { provideRoutes } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { MockLocalizationPipe } from './pipes/mock-localization.pipe'; +import { MockRestService } from './services/mock-rest.service'; /** * CoreTestingModule is the module that will be used in tests @@ -41,6 +43,10 @@ export class CoreTestingModule { provide: LocalizationPipe, useClass: MockLocalizationPipe, }, + { + provide: RestService, + useClass: MockRestService, + }, provideRoutes(routes), ], };