Browse Source

Merge pull request #6824 from abpframework/testing/6823

Angular UI: Improved testing with CoreModule
pull/6826/head
Muhammed Altuğ 6 years ago
committed by GitHub
parent
commit
56eebefe9d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      npm/ng-packs/packages/core/src/lib/core.module.ts
  2. 1
      npm/ng-packs/packages/core/src/lib/models/common.ts
  3. 19
      npm/ng-packs/packages/core/src/lib/services/list.service.ts
  4. 15
      npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts
  5. 1
      npm/ng-packs/packages/core/testing/src/lib/pipes/index.ts
  6. 12
      npm/ng-packs/packages/core/testing/src/lib/pipes/mock-localization.pipe.ts
  7. 1
      npm/ng-packs/packages/core/testing/src/public-api.ts

8
npm/ng-packs/packages/core/src/lib/core.module.ts

@ -52,6 +52,7 @@ export function storageFactory(): OAuthStorage {
FormsModule,
ReactiveFormsModule,
RouterModule,
LocalizationModule,
AbstractNgModelComponent,
AutofocusDirective,
@ -76,6 +77,7 @@ export function storageFactory(): OAuthStorage {
FormsModule,
ReactiveFormsModule,
RouterModule,
LocalizationModule,
],
declarations: [
AbstractNgModelComponent,
@ -94,6 +96,7 @@ export function storageFactory(): OAuthStorage {
StopPropagationDirective,
VisibilityDirective,
],
providers: [LocalizationPipe],
entryComponents: [
RouterOutletComponent,
DynamicLayoutComponent,
@ -125,9 +128,8 @@ export class RootCoreModule {}
* CoreModule is the module that is publicly available
*/
@NgModule({
exports: [BaseCoreModule, LocalizationModule],
imports: [BaseCoreModule, LocalizationModule],
providers: [LocalizationPipe],
exports: [BaseCoreModule],
imports: [BaseCoreModule],
})
export class CoreModule {
static forRoot(options = {} as ABP.Root): ModuleWithProviders<RootCoreModule> {

1
npm/ng-packs/packages/core/src/lib/models/common.ts

@ -14,6 +14,7 @@ export namespace ABP {
export interface Test extends Partial<Root> {
baseHref?: string;
listQueryDebounceTime?: number;
routes?: Routes;
}

19
npm/ng-packs/packages/core/src/lib/services/list.service.ts

@ -1,5 +1,12 @@
import { Inject, Injectable, OnDestroy, Optional } from '@angular/core';
import { BehaviorSubject, Observable, of, ReplaySubject, Subject } from 'rxjs';
import { Injectable, Injector, OnDestroy } from '@angular/core';
import {
BehaviorSubject,
MonoTypeOperatorFunction,
Observable,
of,
ReplaySubject,
Subject,
} from 'rxjs';
import {
catchError,
debounceTime,
@ -68,7 +75,7 @@ export class ListService<QueryParamsType = ABP.PageQueryParams> implements OnDes
get query$(): Observable<QueryParamsType> {
return this._query$
.asObservable()
.pipe(debounceTime(this.delay || 300), shareReplay({ bufferSize: 1, refCount: true }));
.pipe(this.delay, shareReplay({ bufferSize: 1, refCount: true }));
}
private _isLoading$ = new BehaviorSubject(false);
@ -89,7 +96,11 @@ export class ListService<QueryParamsType = ABP.PageQueryParams> implements OnDes
} as any) as QueryParamsType);
};
constructor(@Optional() @Inject(LIST_QUERY_DEBOUNCE_TIME) private delay: number) {
private delay: MonoTypeOperatorFunction<QueryParamsType>;
constructor(injector: Injector) {
const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);
this.delay = delay ? debounceTime(delay) : tap();
this.get();
}

15
npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts

@ -3,14 +3,14 @@ import {
BaseCoreModule,
coreOptionsFactory,
CORE_OPTIONS,
LocalizationPipe,
LIST_QUERY_DEBOUNCE_TIME,
RestService,
} from '@abp/ng.core';
import { APP_BASE_HREF } from '@angular/common';
import { ModuleWithProviders, NgModule } from '@angular/core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
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';
/**
@ -18,13 +18,12 @@ import { MockRestService } from './services/mock-rest.service';
* and it provides mock alternatives
*/
@NgModule({
exports: [RouterTestingModule, BaseCoreModule, MockLocalizationPipe],
imports: [RouterTestingModule, BaseCoreModule],
declarations: [MockLocalizationPipe],
exports: [RouterTestingModule, BaseCoreModule],
imports: [NoopAnimationsModule, RouterTestingModule, BaseCoreModule],
})
export class CoreTestingModule {
static withConfig(
{ baseHref = '/', routes = [], ...options } = {} as ABP.Test,
{ baseHref = '/', listQueryDebounceTime = 0, routes = [], ...options } = {} as ABP.Test,
): ModuleWithProviders<CoreTestingModule> {
return {
ngModule: CoreTestingModule,
@ -40,8 +39,8 @@ export class CoreTestingModule {
deps: ['CORE_OPTIONS'],
},
{
provide: LocalizationPipe,
useClass: MockLocalizationPipe,
provide: LIST_QUERY_DEBOUNCE_TIME,
useValue: listQueryDebounceTime,
},
{
provide: RestService,

1
npm/ng-packs/packages/core/testing/src/lib/pipes/index.ts

@ -1 +0,0 @@
export * from './mock-localization.pipe';

12
npm/ng-packs/packages/core/testing/src/lib/pipes/mock-localization.pipe.ts

@ -1,12 +0,0 @@
import { Config } from '@abp/ng.core';
import { Injectable, Pipe, PipeTransform } from '@angular/core';
@Injectable()
@Pipe({
name: 'abpLocalization',
})
export class MockLocalizationPipe implements PipeTransform {
transform(value: string | Config.LocalizationWithDefault = '', ..._: string[]) {
return typeof value === 'string' ? value : value.defaultValue;
}
}

1
npm/ng-packs/packages/core/testing/src/public-api.ts

@ -1,2 +1 @@
export * from './lib/core-testing.module';
export * from './lib/pipes';

Loading…
Cancel
Save