UNPKG

soda-test

Version:

Package for Unit and API tests

397 lines (396 loc) 13.3 kB
/// <reference types="node" /> import { EventEmitter } from 'events'; import { argumentDecorator } from '.'; export declare const TestBed: TestBedInterface; export declare function getInitTestBedFunction(): () => void; export interface FixtureOptions { declarations?: unknown[]; imports?: unknown[]; inputs?: string[]; outputs?: string[]; events?: string[]; } export declare function fixture<T>(component: Type<T>, options?: FixtureOptions): argumentDecorator; export declare function component<T>(component: Type<T>): argumentDecorator; type ANY = any; type AFunction = Function; export declare function createFixture<T>(component: Type<T>, options: FixtureOptions): SodaFixture<T>; export declare function addEvents(...names: string[]): void; export declare function createComponent<T>(component: Type<T>): T; export interface TestBedInterface { get platform(): PlatformRef; get ngModule(): Type<ANY> | Type<ANY>[]; initTestEnvironment(ngModule: Type<ANY> | Type<ANY>[], platform: PlatformRef, options?: TestEnvironmentOptions): void; resetTestEnvironment(): void; resetTestingModule(): TestBedInterface; configureCompiler(config: { providers?: ANY[]; useJit?: boolean; }): void; configureTestingModule(moduleDef: TestModuleMetadata): TestBedInterface; compileComponents(): Promise<ANY>; inject<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T; inject<T>(token: ProviderToken<T>, notFoundValue: null, flags?: InjectFlags): T | null; /** @deprecated from v9.0.0 use TestBed.inject */ get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): ANY; /** @deprecated from v9.0.0 use TestBed.inject */ get(token: ANY, notFoundValue?: ANY): ANY; execute(tokens: ANY[], fn: AFunction, context?: ANY): ANY; overrideModule(ngModule: Type<ANY>, override: MetadataOverride<NgModule>): TestBedInterface; overrideComponent(component: Type<ANY>, override: MetadataOverride<Component>): TestBedInterface; overrideDirective(directive: Type<ANY>, override: MetadataOverride<Directive>): TestBedInterface; overridePipe(pipe: Type<ANY>, override: MetadataOverride<Pipe>): TestBedInterface; overrideTemplate(component: Type<ANY>, template: string): TestBedInterface; overrideProvider(token: ANY, provider: { useFactory: AFunction; deps: ANY[]; }): TestBedInterface; overrideProvider(token: ANY, provider: { useValue: ANY; }): TestBedInterface; overrideProvider(token: ANY, provider: { useFactory?: AFunction; useValue?: ANY; deps?: ANY[]; }): TestBedInterface; overrideTemplateUsingTestingModule(component: Type<ANY>, template: string): TestBedInterface; createComponent<T>(component: Type<T>): ComponentFixture<T>; } export interface ComponentFixture<T, DET = DebugElement> { ngZone: NgZone | null; debugElement: DET; componentInstance: T; nativeElement: ANY; detectChanges(checkNoChanges?: boolean): void; checkNoChanges(): void; autoDetectChanges(autoDetect?: boolean): void; isStable(): boolean; whenStable(): Promise<ANY>; whenRenderingDone(): Promise<ANY>; destroy(): void; } export interface CommonEvents { click(eventObj?: PointerEvent): void; input(eventObj?: InputEvent): void; ngModelChange(text: string): void; } export interface SodaFixture<T, E = CommonEvents> extends ComponentFixture<T, SodaDebugElement<E>> { queryByCss<E1 = E>(selector: string): SodaDebugElement<E1>; get inputs(): { [key: string]: ANY; }; get events(): EventEmitter; } export interface ComponentRef<C> { setInput(name: string, value: unknown): void; get location(): ElementRef; get injector(): Injector; get instance(): C; get hostView(): ViewRef; get changeDetectorRef(): ChangeDetectorRef; get componentType(): Type<ANY>; destroy(): void; onDestroy(callback: AFunction): void; } export interface NgZone { readonly hasPendingMacrotasks: boolean; readonly hasPendingMicrotasks: boolean; readonly isStable: boolean; readonly onUnstable: EventEmitter; readonly onMicrotaskEmpty: EventEmitter; readonly onStable: EventEmitter; readonly onError: EventEmitter; run<T>(fn: (...args: ANY[]) => T, applyThis?: ANY, applyArgs?: ANY[]): T; runTask<T>(fn: (...args: ANY[]) => T, applyThis?: ANY, applyArgs?: ANY[], name?: string): T; runGuarded<T>(fn: (...args: ANY[]) => T, applyThis?: ANY, applyArgs?: ANY[]): T; runOutsideAngular<T>(fn: (...args: ANY[]) => T): T; } interface DebugElementBase<DET> extends DebugNode<DET> { get nativeElement(): HTMLElement; get name(): string; get properties(): { [key: string]: ANY; }; get attributes(): { [key: string]: string | null; }; get styles(): { [key: string]: string | null; }; get classes(): { [key: string]: boolean; }; get childNodes(): DebugNode<DET>[]; get children(): DET[]; } export interface DebugElement extends DebugElementBase<DebugElement> { query(predicate: Predicate<DebugElement>): DebugElement; queryAll(predicate: Predicate<DebugElement>): DebugElement[]; queryAllNodes(predicate: Predicate<DebugNode<DebugElement>>): DebugNode<DebugElement>[]; triggerEventHandler(eventName: string, eventObj?: unknown): void; } export interface SodaDebugElement<E = CommonEvents> extends DebugElementBase<SodaDebugElement> { text: string; query: { by: { css<E1 = E>(selector: string): SodaDebugElement<E1>; }; }; queryAll: { by: { css<E1 = E>(selector: string): SodaDebugElement<E1>[]; }; }; queryAllNodes: { by: { directive<E1 = E>(type: Type<ANY>): DebugNode<SodaDebugElement<E1>>[]; all<E1 = E>(): DebugNode<SodaDebugElement<E1>>[]; }; }; triggerEventHandler: E; } export interface ElementRef<T = ANY> { nativeElement: T; } export interface ChangeDetectorRef { markForCheck(): void; detach(): void; detectChanges(): void; checkNoChanges(): void; reattach(): void; } export interface Injector { get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T; get(token: ANY, notFoundValue?: ANY): ANY; } export interface ViewRef extends ChangeDetectorRef { destroy(): void; get destroyed(): boolean; onDestroy(callback: AFunction): ANY; } export interface DebugNode<DET> { readonly nativeNode: ANY; get parent(): DET | null; get injector(): Injector; get componentInstance(): ANY; get context(): ANY; get listeners(): DebugEventListener[]; get references(): { [key: string]: ANY; }; get providerTokens(): ANY[]; } export interface DebugEventListener { name: string; callback: AFunction; } export interface Type<T> extends AFunction { new (...args: unknown[]): T; } export declare enum InjectFlags { Default = 0, Host = 1, Self = 2, SkipSelf = 4, Optional = 8 } export interface PlatformRef { bootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>, options?: BootstrapOptions): Promise<NgModuleRef<M>>; bootstrapModule<M>(moduleType: Type<M>, compilerOptions?: (CompilerOptions & BootstrapOptions) | Array<CompilerOptions & BootstrapOptions>): Promise<NgModuleRef<M>>; onDestroy(callback: () => void): void; get injector(): Injector; destroy(): void; get destroyed(): boolean; } export interface NgModuleFactory<T> { get moduleType(): Type<T>; create(parentInjector: Injector | null): NgModuleRef<T>; } export interface NgModuleRef<T> { get injector(): EnvironmentInjector; get componentFactoryResolver(): ComponentFactoryResolver; get instance(): T; destroy(): void; onDestroy(callback: () => void): void; } export interface EnvironmentInjector extends Injector { get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T; get(token: ANY, notFoundValue?: ANY): ANY; runInContext<ReturnT>(fn: () => ReturnT): ReturnT; destroy(): void; } export interface ComponentFactoryResolver { resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>; } export interface ComponentFactory<C> { get selector(): string; componentType(): Type<ANY>; get ngContentSelectors(): string[]; get inputs(): { propName: string; templateName: string; }[]; get outputs(): { propName: string; templateName: string; }[]; create(injector: Injector, projectableNodes?: ANY[][], rootSelectorOrNode?: string | ANY, environmentInjector?: EnvironmentInjector | NgModuleRef<ANY>): ComponentRef<C>; } export interface NgModule { providers?: Provider[]; declarations?: Array<Type<ANY> | ANY[]>; imports?: Array<Type<ANY> | ModuleWithProviders<ANY> | ANY[]>; exports?: Array<Type<ANY> | ANY[]>; entryComponents?: Array<Type<ANY> | ANY[]>; bootstrap?: Array<Type<ANY> | ANY[]>; schemas?: Array<SchemaMetadata | ANY[]>; id?: string; jit?: true; } export interface Component extends Directive { changeDetection?: ChangeDetectionStrategy; viewProviders?: Provider[]; moduleId?: string; templateUrl?: string; template?: string; styleUrls?: string[]; styles?: string[]; animations?: ANY[]; encapsulation?: ViewEncapsulation; interpolation?: [string, string]; entryComponents?: Array<Type<ANY> | ANY[]>; preserveWhitespaces?: boolean; standalone?: boolean; imports?: (Type<ANY> | ANY[])[]; schemas?: SchemaMetadata[]; } export interface Directive { selector?: string; inputs?: string[]; outputs?: string[]; providers?: Provider[]; exportAs?: string; queries?: { [key: string]: ANY; }; host?: { [key: string]: string; }; jit?: true; standalone?: boolean; } export interface Pipe { name: string; pure?: boolean; standalone?: boolean; } export declare enum ChangeDetectionStrategy { OnPush = 0, Default = 1 } export declare enum ViewEncapsulation { Emulated = 0, None = 2, ShadowDom = 3 } export interface TestModuleMetadata { providers?: ANY[]; declarations?: ANY[]; imports?: ANY[]; schemas?: Array<SchemaMetadata | ANY[]>; teardown?: ModuleTeardownOptions; errorOnUnknownElements?: boolean; errorOnUnknownProperties?: boolean; } interface ModuleTeardownOptions { destroyAfterEach: boolean; rethrowErrors?: boolean; } export type MetadataOverride<T> = { add?: Partial<T>; remove?: Partial<T>; set?: Partial<T>; }; export interface TestEnvironmentOptions { teardown?: ModuleTeardownOptions; errorOnUnknownElements?: boolean; errorOnUnknownProperties?: boolean; } export interface Predicate<T> { (value: T): boolean; } export type ProviderToken<T> = Type<T> | AbstractType<T>; interface AbstractType<T> extends AFunction { prototype: T; } export interface BootstrapOptions { ngZone?: NgZone | 'zone.js' | 'noop'; ngZoneEventCoalescing?: boolean; ngZoneRunCoalescing?: boolean; } export type CompilerOptions = { useJit?: boolean; defaultEncapsulation?: ViewEncapsulation; providers?: StaticProvider[]; missingTranslation?: MissingTranslationStrategy; preserveWhitespaces?: boolean; }; type StaticProvider = ValueProvider | ExistingProvider | StaticClassProvider | ConstructorProvider | FactoryProvider | ANY[]; interface ValueProvider extends ValueSansProvider { provide: ANY; multi?: boolean; } interface ValueSansProvider { useValue: ANY; } interface ExistingProvider extends ExistingSansProvider { provide: ANY; multi?: boolean; } interface ExistingSansProvider { useExisting: ANY; } interface StaticClassProvider extends StaticClassSansProvider { provide: ANY; multi?: boolean; } interface StaticClassSansProvider { useClass: Type<ANY>; deps: ANY[]; } interface ConstructorProvider extends ConstructorSansProvider { provide: Type<ANY>; multi?: boolean; } interface ConstructorSansProvider { deps?: ANY[]; } interface FactoryProvider extends FactorySansProvider { provide: ANY; multi?: boolean; } interface FactorySansProvider { useFactory: AFunction; deps?: ANY[]; } declare enum MissingTranslationStrategy { Error = 0, Warning = 1, Ignore = 2 } export type Provider = Type<ANY> | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | ANY[]; interface ClassProvider extends ClassSansProvider { provide: ANY; multi?: boolean; } interface ClassSansProvider { useClass: Type<ANY>; } export interface ModuleWithProviders<T> { ngModule: Type<T>; providers?: Provider[]; } export interface SchemaMetadata { name: string; } export {};