@dbg-riskit/angular-testing
Version:
470 lines (446 loc) • 18.5 kB
TypeScript
import * as i0 from '@angular/core';
import { DebugElement, EventEmitter, Predicate } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';
import { RiskCSVDownloadMenuComponent } from '@dbg-riskit/angular-file';
import { Observable } from 'rxjs';
import { RiskDataTableComponent, OrderingCriteria, Row, RiskHighlighterDirective } from '@dbg-riskit/angular-datatable';
import { ValueGetter, AuthProvider, UserInfo, ErrorMessage } from '@dbg-riskit/common';
import { RiskLayoutComponent } from '@dbg-riskit/angular-view';
export { RiskLayoutComponent } from '@dbg-riskit/angular-view';
import { RouterLink, RouterStateSnapshot, Event, RouterState, NavigationExtras, UrlTree } from '@angular/router';
import { RiskLoginMenuComponent, RiskLoginComponent } from '@dbg-riskit/angular-login';
import { AuthFlow, WellKnown } from '@dbg-riskit/angular-auth';
import { Request, RequestWithData } from '@dbg-riskit/angular-common';
declare const COMPILE_TIMEOUT_INTERVAL: number;
declare function initTestEnvironment(): void;
declare class RiskMessageComponentDef {
debugElement: DebugElement;
constructor(debugElement: DebugElement);
get text(): string;
}
declare class Page<T> {
protected fixture: ComponentFixture<T>;
debugElement: DebugElement;
component: T;
private _timeOffset;
constructor(fixture: ComponentFixture<T>);
detectChanges(millis?: number): void;
advanceAndDetectChanges(millis?: number): void;
advanceHTTP(): void;
advanceAndDetectChangesUsingOffset(millis: number): void;
resetTimeOffset(): void;
destroy(): void;
setInput(inputName: string, value: unknown): void;
}
declare class PageWithLoading<T> extends Page<T> {
constructor(fixture: ComponentFixture<T>);
get initialLoadComponent(): RiskMessageComponentDef | null;
get noDataComponent(): RiskMessageComponentDef | null;
}
import Spy = jasmine.Spy;
declare class RiskCSVDownloadMenuPage extends Page<RiskCSVDownloadMenuComponent> {
constructor(fixture: ComponentFixture<RiskCSVDownloadMenuComponent>);
get downloadWindowsLink(): DownloadLink;
get downloadUnixLink(): DownloadLink;
}
declare class DownloadLink {
element: DebugElement;
private page;
private _saveBlobSpy?;
constructor(element: DebugElement, page: {
detectChanges: () => void;
});
private _blobSpy?;
get blobSpy(): Spy;
get saveSpy(): Spy;
click(): void;
private setupBlobConstructorSpy;
private setupSaveBlobSpy;
}
declare class DownloadTestComponent {
data: any | Observable<any>;
contentType?: string;
filename?: string;
static ɵfac: i0.ɵɵFactoryDeclaration<DownloadTestComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<DownloadTestComponent, "ng-component", never, {}, {}, never, never, true, never>;
}
declare class DownloadTestComponentPage extends Page<DownloadTestComponent> {
constructor(fixture: ComponentFixture<DownloadTestComponent>);
get downloadLink(): DownloadLink;
}
declare class RiskDataTableDefinition {
debugElement: DebugElement;
private page;
constructor(debugElement: DebugElement, page: {
detectChanges: () => void;
advanceAndDetectChanges: () => void;
});
get component(): RiskDataTableComponent<unknown, unknown>;
get data(): any[];
get element(): DebugElement;
get header(): TableHeader;
get sorting(): TableSorting;
get body(): TableBody;
get footer(): TableFooter;
get recordsCount(): RecordsCount;
get pager(): Pager;
}
declare class TableHeader {
element: DebugElement;
private page;
constructor(element: DebugElement, page: {
detectChanges: () => void;
});
get rows(): TableHeaderRow[];
get cells(): TableHeaderCell[];
}
declare class TableHeaderRow {
element: DebugElement;
private page;
constructor(element: DebugElement, page: {
detectChanges: () => void;
});
get cells(): TableHeaderCell[];
}
declare class TableHeaderCell {
element: DebugElement;
private page;
constructor(element: DebugElement, page: {
detectChanges: () => void;
});
get sortingHandle(): SortingHandle | null;
get tooltip(): string | null;
get title(): string;
get colspan(): number;
get rowspan(): number;
}
declare class TableSorting {
private table;
private page;
constructor(table: RiskDataTableDefinition, page: {
detectChanges: () => void;
});
get handles(): SortingHandle[];
get detailRowHandles(): SortingHandle[] | null;
get currentOrdering(): Array<OrderingCriteria<any>>;
checkSorting(firstNRows?: number, criterium?: OrderingCriteria<any>): void;
}
declare class SortingHandle {
private page;
private handle;
constructor(page: {
detectChanges: () => void;
}, handle: DebugElement);
click(): void;
}
declare class TableBody {
element: DebugElement;
private page;
constructor(element: DebugElement, page: {
detectChanges: () => void;
});
get rows(): TableBodyRow[];
get cells(): TableBodyCell[];
}
declare class TableBodyRow {
element: DebugElement;
private page;
constructor(element: DebugElement, page: {
detectChanges: () => void;
});
get expander(): RowExpander;
get cells(): TableBodyCell[];
get rowDetail(): TableBodyDetail | null;
get highlighted(): boolean;
expandRow(): void;
}
declare class RowExpander {
element: DebugElement;
constructor(element: DebugElement);
get icon(): string;
get opened(): boolean;
get closed(): boolean;
}
declare class TableBodyCell {
element: DebugElement;
constructor(element: DebugElement);
get colspan(): number;
get rowspan(): number;
}
declare class TableBodyDetail {
element: DebugElement;
private page;
constructor(element: DebugElement, page: {
detectChanges: () => void;
});
get body(): TableBodyDetailBody;
get highlighted(): boolean;
get colspan(): number;
header(): TableHeader;
}
declare class TableBodyDetailBody {
element: DebugElement;
constructor(element: DebugElement);
get rows(): TableBodyDetailRow[];
get cells(): TableBodyCell[];
}
declare class TableBodyDetailRow {
element: DebugElement;
constructor(element: DebugElement);
get cells(): TableBodyCell[];
}
declare class TableFooter {
element: DebugElement;
constructor(element: DebugElement);
get rows(): TableFooterRow[];
get cells(): TableBodyCell[];
}
declare class TableFooterRow {
element: DebugElement;
constructor(element: DebugElement);
get cells(): TableBodyCell[];
}
declare class RecordsCount {
element: DebugElement;
constructor(element: DebugElement);
get message(): string;
}
declare class Pager {
element: DebugElement;
private page;
constructor(element: DebugElement, page: {
detectChanges: () => void;
advanceAndDetectChanges: () => void;
});
get pageButtons(): DebugElement[];
expectLeadingButtonsDisabled(): void;
expectLeadingButtonsNotDisabled(): void;
expectTrailingButtonsDisabled(): void;
expectTrailingButtonsNotDisabled(): void;
expectButtonNumbers(numbers: number[]): void;
expectButtonActive(index: number): void;
click(index: number): void;
}
declare function chceckSorting(page: {
detectChanges: () => void;
dataTable: RiskDataTableDefinition;
}, criteria: Array<ValueGetter<any>>): void;
declare class DataTableDefinitionHosted extends Page<TestDataTableHostComponent> {
constructor(fixture: ComponentFixture<TestDataTableHostComponent>);
get dataTable(): RiskDataTableDefinition;
setData(data: any): void;
setPageSize(size: number): void;
}
declare class TestDataTableHostComponent {
private static readonly defaultData;
readonly data: i0.InputSignal<any[]>;
readonly pageSize: i0.InputSignal<number>;
readonly footer: i0.WritableSignal<any>;
readonly defaultOrdering: (((record: any) => any) | {
get: (record: any) => any;
descending: boolean;
})[];
readonly valueGetter: (record: any) => any;
static ɵfac: i0.ɵɵFactoryDeclaration<TestDataTableHostComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TestDataTableHostComponent, "ng-component", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}
declare class RiskHighLighterDirectiveTestComponent {
context?: {
row: any;
storage?: any;
index: number;
enabled: boolean;
};
trackBy(index: number, row: Row<any>): any;
static ɵfac: i0.ɵɵFactoryDeclaration<RiskHighLighterDirectiveTestComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<RiskHighLighterDirectiveTestComponent, "ng-component", never, {}, {}, never, never, true, never>;
}
declare class HighLighterDirectivePage extends Page<RiskHighLighterDirectiveTestComponent> {
constructor(fixture: ComponentFixture<RiskHighLighterDirectiveTestComponent>);
get highlightedElement(): DebugElement;
get classList(): DOMTokenList;
get highlighter(): RiskHighlighterDirective<unknown>;
}
declare class RiskLayoutComponentDefinition {
debugElement: DebugElement;
private page;
constructor(debugElement: DebugElement, page: {
advanceAndDetectChanges: (milis?: number) => void;
});
get component(): RiskLayoutComponent;
get headToolbar(): DebugElement;
get logo(): DebugElement;
get menu(): DebugElement[];
get sideNavContainer(): DebugElement;
get sideNav(): DebugElement;
get sideNavMenu(): DebugElement[];
get content(): DebugElement;
openSideNav(): void;
closeSideNav(): void;
}
declare class RiskLayoutTestComponentHostPage extends Page<RiskLayoutTestHostComponent> {
get layoutComponent(): RiskLayoutComponentDefinition;
}
declare class RiskLayoutTestHostComponent {
static ɵfac: i0.ɵɵFactoryDeclaration<RiskLayoutTestHostComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<RiskLayoutTestHostComponent, "ng-component", never, {}, {}, never, never, true, never>;
}
declare class LinkDefinition {
private page;
link: DebugElement;
constructor(page: Page<any>, link: DebugElement);
get stub(): RouterLink;
get text(): string;
click(): void;
}
declare class LinkOnlyPage<T> extends Page<T> {
constructor(fixture: ComponentFixture<T>);
get link(): LinkDefinition;
}
declare class LoginMenuPage extends Page<RiskLoginMenuComponent> {
get menuTrigger(): DebugElement;
clickMenuTrigger(): void;
waitForMenu(): void;
get loginLink(): LinkDefinition;
get logoutLink(): LinkDefinition;
}
declare class RiskLoginPage extends Page<RiskLoginComponent> {
constructor(fixture: ComponentFixture<RiskLoginComponent>);
get formElement(): DebugElement;
get usernameElement(): DebugElement;
set username(username: string);
get passwordElement(): DebugElement;
set password(password: string);
get loginButtonElement(): DebugElement;
get successMessage(): RiskMessageComponentDef | null;
get errorMessage(): RiskMessageComponentDef | null;
clickLogin(): void;
}
declare class TestMessageHostComponent {
message: string;
static ɵfac: i0.ɵɵFactoryDeclaration<TestMessageHostComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TestMessageHostComponent, "ng-component", never, {}, {}, never, never, true, never>;
}
declare class MessageHostedPage extends Page<TestMessageHostComponent> {
constructor(fixture: ComponentFixture<TestMessageHostComponent>);
get error(): RiskMessageComponentDef;
get good(): RiskMessageComponentDef;
get info(): RiskMessageComponentDef;
get message(): RiskMessageComponentDef;
get warn(): RiskMessageComponentDef;
get initialLoad(): RiskMessageComponentDef;
get noData(): RiskMessageComponentDef;
get updateFailed(): RiskMessageComponentDef;
}
declare const storage: {
authRequestedPath: string | null;
};
declare class AuthRoutingFlowServiceStub {
private authServiceStub;
private readonly authConfig;
constructor();
get authFlow(): AuthFlow;
get authorizationCodeFlow(): boolean;
get implicitFlow(): boolean;
get hybridFlow(): boolean;
get directFlow(): boolean;
logout(): Observable<boolean>;
login(username?: string, password?: string): Observable<boolean>;
loginViaService(): Observable<boolean>;
storeRequestedPath(state?: RouterStateSnapshot): void;
static ɵfac: i0.ɵɵFactoryDeclaration<AuthRoutingFlowServiceStub, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<AuthRoutingFlowServiceStub>;
}
declare class AuthServiceStub implements AuthProvider {
private user?;
private readonly _loggedInStream;
get loggedIn(): Observable<boolean>;
get userProfile(): Observable<UserInfo | undefined>;
get loggedInStream(): Observable<boolean>;
loginViaAuthService(): Observable<boolean>;
checkLocationForLoginData(): Observable<boolean>;
directLogin(username: string, password: string): Observable<boolean>;
logout(): Observable<never>;
emitLoginStatusChange(status: boolean): void;
refreshToken(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<AuthServiceStub, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<AuthServiceStub>;
}
declare const WELL_KNOWN: WellKnown;
declare class WellKnownServiceStub {
get wellKnown(): Observable<WellKnown>;
static ɵfac: i0.ɵɵFactoryDeclaration<WellKnownServiceStub, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<WellKnownServiceStub>;
}
declare const FAKE_HTTP_ASYNC_TIMEOUT = 1000;
declare class HttpServiceStub<T> {
private value;
private error;
unauthorized: EventEmitter<ErrorMessage>;
returnValue(value: T): void;
popReturnValue(): T | undefined;
shiftReturnValue(): T | undefined;
throwError(value: ErrorMessage): void;
get(request: Request<T>): Observable<T | undefined>;
post(request: RequestWithData<T>): Observable<T | undefined>;
static ɵfac: i0.ɵɵFactoryDeclaration<HttpServiceStub<any>, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<HttpServiceStub<any>>;
}
declare class HttpAsyncServiceStub<T> extends HttpServiceStub<T> {
get(request: Request<T>, auth?: boolean): Observable<T | undefined>;
post(request: RequestWithData<T>): Observable<T | undefined>;
static ɵfac: i0.ɵɵFactoryDeclaration<HttpAsyncServiceStub<any>, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<HttpAsyncServiceStub<any>>;
}
/**
* A lightweight Router stub for testing that doesn't require actual routing infrastructure.
* Use this when you want complete isolation from the Router and only need to verify navigation calls.
*/
declare class RouterStub {
private _url;
private _events$;
get url(): string;
get events(): Observable<Event | null>;
get routerState(): RouterState;
navigate(commands: unknown[], _extras?: NavigationExtras): Promise<boolean>;
navigateByUrl(url: string | UrlTree, _extras?: NavigationExtras): Promise<boolean>;
createUrlTree(_commands: unknown[], _navigationExtras?: NavigationExtras): UrlTree;
serializeUrl(_url: UrlTree): string;
parseUrl(_url: string): UrlTree;
isActive(_url: string | UrlTree, _exact: boolean): boolean;
static ɵfac: i0.ɵɵFactoryDeclaration<RouterStub, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<RouterStub>;
}
declare class RiskLoginMenuStubComponent {
readonly orientation: i0.InputSignal<"row" | "column">;
static ɵfac: i0.ɵɵFactoryDeclaration<RiskLoginMenuStubComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<RiskLoginMenuStubComponent, "risk-login-menu", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}
declare class ByUtil {
static and<T>(...predicates: Array<Predicate<T>>): Predicate<T>;
static or<T>(...predicates: Array<Predicate<T>>): Predicate<T>;
static not<T>(predicate: Predicate<T>): Predicate<T>;
}
/** Button events to pass to `DebugElement.triggerEventHandler` for RouterLink event handler */
declare const BUTTON_CLICK_EVENTS: {
left: {
button: number;
};
right: {
button: number;
};
};
/** Simulate element click. Defaults to mouse left-button click event. */
declare function click(el: DebugElement | HTMLElement, eventObj?: any): void;
declare function setNgModelValue(element: DebugElement, value: string, realAsync?: boolean): void;
declare function setNgModelSelectValue(element: DebugElement, selectedIndex: number, realAsync?: boolean): void;
declare function dispatchEvent(element: DebugElement | HTMLElement | Window, eventName: string): void;
/**
* Create custom DOM event the old fashioned way
*
* https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent
* Although officially deprecated, some browsers (phantom) don't accept the preferred "new Event(eventName)"
*/
declare function newEvent(eventName: string, bubbles?: boolean, cancelable?: boolean): CustomEvent;
declare function compileTestBed(compileFunction: () => Promise<any>, destroyFunction?: () => void, stubMatchMedia?: boolean): void;
export { AuthRoutingFlowServiceStub, AuthServiceStub, BUTTON_CLICK_EVENTS, ByUtil, COMPILE_TIMEOUT_INTERVAL, DataTableDefinitionHosted, DownloadLink, DownloadTestComponent, DownloadTestComponentPage, FAKE_HTTP_ASYNC_TIMEOUT, HighLighterDirectivePage, HttpAsyncServiceStub, HttpServiceStub, LinkDefinition, LinkOnlyPage, LoginMenuPage, MessageHostedPage, Page, PageWithLoading, Pager, RecordsCount, RiskCSVDownloadMenuPage, RiskDataTableDefinition, RiskHighLighterDirectiveTestComponent, RiskLayoutComponentDefinition, RiskLayoutTestComponentHostPage, RiskLayoutTestHostComponent, RiskLoginMenuStubComponent, RiskLoginPage, RiskMessageComponentDef, RouterStub, RowExpander, SortingHandle, TableBody, TableBodyCell, TableBodyDetail, TableBodyDetailBody, TableBodyDetailRow, TableBodyRow, TableFooter, TableFooterRow, TableHeader, TableHeaderCell, TableHeaderRow, TableSorting, TestDataTableHostComponent, TestMessageHostComponent, WELL_KNOWN, WellKnownServiceStub, chceckSorting, click, compileTestBed, dispatchEvent, initTestEnvironment, newEvent, setNgModelSelectValue, setNgModelValue, storage };