{"version":3,"file":"dbg-riskit-angular-testing.mjs","sources":["../../../../pkg/dbg-riskit/angular-testing/src/lib/environment.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/events.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/http.service.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/message.def.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/page.base.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/download.menu.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/data.table.definition.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/highlighter.directive.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/by.util.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/layout.component.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/router/router.link.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/link.definition.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/link.only.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/login.menu.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/login.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/definitions/message.page.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/auth/auth.routing.flow.service.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/auth/well.known.service.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/auth/auth.service.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/login.menu.stub.component.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/router/activated.route.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/router/router.outlet.stub.component.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/router/router.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/stubs/router/router.module.stub.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/utils.ts","../../../../pkg/dbg-riskit/angular-testing/src/lib/testing.module.ts","../../../../pkg/dbg-riskit/angular-testing/src/public_api.ts","../../../../pkg/dbg-riskit/angular-testing/src/dbg-riskit-angular-testing.ts"],"sourcesContent":["// Has to be first in this order\nimport '@dbg-riskit/angular-polyfill';\nimport 'zone.js/testing';\n\n// Other modules follow\nimport {getTestBed} from '@angular/core/testing';\nimport {BrowserDynamicTestingModule, platformBrowserDynamicTesting} from '@angular/platform-browser-dynamic/testing';\n\nexport const COMPILE_TIMEOUT_INTERVAL = Math.pow(2, 31) - 1;\n\nexport function initTestEnvironment() {\n    Error.stackTraceLimit = 10;\n\n    jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000;\n\n    // TODO: Quick fix for memory leaks\n    window.addEventListener = () => {\n        return;\n    };\n    window.document.addEventListener = () => {\n        return;\n    };\n\n    // First, initialize the Angular testing environment.\n    getTestBed().initTestEnvironment(\n        BrowserDynamicTestingModule,\n        platformBrowserDynamicTesting(), {\n            teardown: {destroyAfterEach: false}\n        }\n    );\n}\n","import {DebugElement} from '@angular/core';\n\nimport {tick} from '@angular/core/testing';\n\n/** Button events to pass to `DebugElement.triggerEventHandler` for RouterLink event handler */\nexport const BUTTON_CLICK_EVENTS = {\n    left : {button: 0},\n    right: {button: 2}\n};\n\n/** Simulate element click. Defaults to mouse left-button click event. */\nexport function click(el: DebugElement | HTMLElement, eventObj: any = BUTTON_CLICK_EVENTS.left): void {\n    if (el instanceof HTMLElement) {\n        el.click();\n    } else {\n        el.triggerEventHandler('click', eventObj);\n    }\n}\n\nexport function setNgModelValue(element: DebugElement, value: string, realAsync = false): void {\n    if (!(element.nativeElement instanceof HTMLInputElement)) {\n        throw new Error('Not an instance of HTMLInputElement');\n    }\n    const input: HTMLInputElement = element.nativeElement;\n    input.value = value;\n\n    dispatchEvent(input, 'input'); // tell Angular\n    if (!realAsync) {\n        tick();\n    }\n}\n\nexport function setNgModelSelectValue(element: DebugElement, selectedIndex: number, realAsync = false): void {\n    if (!(element.nativeElement instanceof HTMLSelectElement)) {\n        throw new Error('Not an instance of HTMLInputElement');\n    }\n    const input: HTMLSelectElement = element.nativeElement;\n    input.selectedIndex = selectedIndex;\n\n    dispatchEvent(input, 'change'); // tell Angular\n    if (!realAsync) {\n        tick();\n    }\n}\n\nexport function dispatchEvent(element: DebugElement | HTMLElement | Window, eventName: string): void {\n    if (element instanceof HTMLElement) {\n        element.dispatchEvent(newEvent(eventName));\n    } else if (element instanceof Window) {\n        element.dispatchEvent(newEvent(eventName));\n    } else {\n        element.nativeElement.dispatchEvent(newEvent(eventName));\n    }\n}\n\n/**\n * Create custom DOM event the old fashioned way\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Event/initEvent\n * Although officially deprecated, some browsers (phantom) don't accept the preferred \"new Event(eventName)\"\n */\nexport function newEvent(eventName: string, bubbles = false, cancelable = false): CustomEvent {\n    const evt = document.createEvent('CustomEvent');  // MUST be 'CustomEvent'\n    evt.initCustomEvent(eventName, bubbles, cancelable, null);\n    return evt;\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {Request, RequestWithData} from '@dbg-riskit/angular-common';\nimport {ErrorMessage} from '@dbg-riskit/common';\nimport {Observable, of, throwError as _throwError, timer} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\n\nexport const FAKE_HTTP_ASYNC_TIMEOUT = 1000;\n\n@Injectable()\nexport class HttpServiceStub<T> {\n\n    private value: T[] = [];\n    private error: ErrorMessage[] = [];\n\n    public unauthorized: EventEmitter<ErrorMessage> = new EventEmitter();\n\n    public returnValue(value: T) {\n        this.value.push(value);\n    }\n\n    public popReturnValue(): T | undefined {\n        return this.value.pop();\n    }\n\n    public shiftReturnValue(): T | undefined {\n        return this.value.shift();\n    }\n\n    public throwError(value: ErrorMessage) {\n        this.error.push(value);\n    }\n\n    public get(request: Request<T>): Observable<T | undefined> {\n        if (this.error.length) {\n            const error = this.error.shift();\n            return _throwError(error);\n        }\n        const value: T | undefined = this.value.shift();\n        return of(value);\n    }\n\n    public post(request: RequestWithData<T>): Observable<T | undefined> {\n        return this.get(request);\n    }\n}\n\n@Injectable()\nexport class HttpAsyncServiceStub<T> extends HttpServiceStub<T> {\n\n    public get(request: Request<T>, auth = true): Observable<T | undefined> {\n        return timer(FAKE_HTTP_ASYNC_TIMEOUT).pipe(\n            switchMap(() => super.get(request))\n        );\n    }\n\n    public post(request: RequestWithData<T>): Observable<T | undefined> {\n        return this.get(request);\n    }\n}\n","import {DebugElement} from '@angular/core';\nimport {MatCard} from '@angular/material/card';\nimport {By} from '@angular/platform-browser';\n\nexport class MessageComponentDef {\n\n    public constructor(public debugElement: DebugElement) {\n        if (debugElement == null) {\n            throw new Error('Debug element not found!');\n        }\n    }\n\n    public get text(): string {\n        return this.debugElement.query(By.directive(MatCard)).nativeElement.textContent.replace(/\\n\\s*/g, ' ')\n            .replace(/\\r\\s*/g, ' ').trim();\n    }\n}\n","import {DebugElement} from '@angular/core';\nimport {ComponentFixture, discardPeriodicTasks, tick} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {RISK_INITIAL_LOAD_SELECTOR, RISK_NO_DATA_SELECTOR} from '@dbg-riskit/angular-view';\nimport {FAKE_HTTP_ASYNC_TIMEOUT} from '../stubs/http.service.stub';\nimport {MessageComponentDef} from './message.def';\n\nexport class Page<T> {\n\n    public debugElement: DebugElement;\n    public component: T;\n    private _timeOffset = 0;\n\n    public constructor(protected fixture: ComponentFixture<T>) {\n        this.debugElement = fixture.debugElement;\n        this.component = this.debugElement.componentInstance;\n    }\n\n    public detectChanges(millis = 0): void {\n        this.fixture.detectChanges();\n        tick(millis);\n        this._timeOffset += millis;\n    }\n\n    public advanceAndDetectChanges(millis = 0): void {\n        tick(millis);\n        this._timeOffset += millis;\n        this.detectChanges();\n    }\n\n    public advanceHTTP(): void {\n        this.advanceAndDetectChanges(FAKE_HTTP_ASYNC_TIMEOUT);\n    }\n\n    public advanceAndDetectChangesUsingOffset(millis: number): void {\n        this.advanceAndDetectChanges(millis - this._timeOffset);\n        this.resetTimeOffset();\n    }\n\n    public resetTimeOffset(): void {\n        this._timeOffset = 0;\n    }\n\n    public destroy() {\n        this.fixture.destroy();\n        try {\n            // Move a lot into fututre ;)\n            tick(60 * 60 * 1000);\n            discardPeriodicTasks();\n        } catch (ignore) {\n            // Nothing to do...\n        }\n    }\n}\n\nexport class PageWithLoading<T> extends Page<T> {\n\n    public constructor(fixture: ComponentFixture<T>) {\n        super(fixture);\n    }\n\n    public get initialLoadComponent(): MessageComponentDef | null {\n        const element = this.debugElement.query(By.css(RISK_INITIAL_LOAD_SELECTOR));\n        if (element) {\n            return new MessageComponentDef(element);\n        }\n        return null;\n    }\n\n    public get noDataComponent(): MessageComponentDef | null {\n        const element = this.debugElement.query(By.css(RISK_NO_DATA_SELECTOR));\n        if (element) {\n            return new MessageComponentDef(element);\n        }\n        return null;\n    }\n}\n","import {Component, DebugElement} from '@angular/core';\nimport {ComponentFixture} from '@angular/core/testing';\nimport {MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\nimport {By} from '@angular/platform-browser';\nimport {\n    AbstractFileDownloadDirective,\n    CSVDownloadMenuComponent,\n    CSVFileDownloadDirective,\n    FileDownloadDirective\n} from '@dbg-riskit/angular-file';\nimport * as fileSaver from 'file-saver';\nimport {Observable} from 'rxjs';\nimport {click} from '../events';\nimport {Page} from './page.base';\nimport Spy = jasmine.Spy;\n\nexport class CSVDownloadMenuPage extends Page<CSVDownloadMenuComponent> {\n\n    public constructor(fixture: ComponentFixture<CSVDownloadMenuComponent>) {\n        super(fixture);\n    }\n\n    public get downloadWindowsLink(): DownloadLink {\n        // Open the menu first\n        click(this.debugElement.query(By.directive(MatMenuTrigger)));\n        this.detectChanges(500);\n\n        return new DownloadLink(this.debugElement.queryAll(By.directive(MatMenuItem))[0], this);\n    }\n\n    public get downloadUnixLink(): DownloadLink {\n        // Open the menu first\n        click(this.debugElement.query(By.directive(MatMenuTrigger)));\n        this.detectChanges(500);\n\n        return new DownloadLink(this.debugElement.queryAll(By.directive(MatMenuItem))[1], this);\n    }\n}\n\nexport class DownloadLink {\n    private _blobSpy?: jasmine.Spy;\n    private _saveBlobSpy?: jasmine.Spy;\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public click(): void {\n        this.setupBlobConstructorSpy();\n        this.setupSaveBlobSpy();\n        click(this.element);\n        this.page.detectChanges();\n    }\n\n    public get blobSpy(): Spy {\n        this.setupBlobConstructorSpy();\n        return this._blobSpy!;\n    }\n\n    private setupBlobConstructorSpy() {\n        if (!this._blobSpy) {\n            let downloadDirective: AbstractFileDownloadDirective<unknown>;\n            try {\n                downloadDirective = this.element.injector.get(CSVFileDownloadDirective);\n            } catch (_) {\n                downloadDirective = this.element.injector.get(FileDownloadDirective);\n            }\n            this._blobSpy = spyOn(downloadDirective, 'createBlob').and.callThrough();\n        }\n    }\n\n    public get saveSpy(): Spy {\n        this.setupSaveBlobSpy();\n        return this._saveBlobSpy!;\n    }\n\n    private setupSaveBlobSpy() {\n        if (!this._saveBlobSpy) {\n            this._saveBlobSpy = spyOn(fileSaver, 'saveAs');\n        }\n    }\n}\n\n@Component({\n    template: `\n        <a [risk-download]=\"data\"\n           [risk-download-content-type]=\"contentType\"\n           [risk-download-filename]=\"filename\">Download</a>\n    `\n})\nexport class DownloadTestComponent {\n    public data: any | Observable<any>;\n\n    public contentType?: string;\n\n    public filename?: string;\n}\n\nexport class DownloadTestComponentPage extends Page<DownloadTestComponent> {\n\n    public constructor(fixture: ComponentFixture<DownloadTestComponent>) {\n        super(fixture);\n    }\n\n    public get downloadLink(): DownloadLink {\n        return new DownloadLink(this.debugElement.query(By.directive(FileDownloadDirective)), this);\n    }\n}\n","import {Component, DebugElement, DebugNode} from '@angular/core';\nimport {ComponentFixture} from '@angular/core/testing';\nimport {MatAnchor, MatButton} from '@angular/material/button';\nimport {MatButtonToggle} from '@angular/material/button-toggle';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {By} from '@angular/platform-browser';\nimport {ValueGetter, secureRandom} from '@dbg-riskit/common';\nimport {\n    DataTableComponent,\n    DataTableRowDetailExpanderComponent,\n    HIGHLIGHTER_CLASS,\n    OrderingCriteria,\n    PagingComponent\n} from '@dbg-riskit/angular-datatable';\nimport {click} from '../events';\nimport {Page} from './page.base';\n\nexport class DataTableDefinition {\n\n    public constructor(public debugElement: DebugElement,\n                       private page: { detectChanges: () => void, advanceAndDetectChanges: () => void }) {\n    }\n\n    public get component(): DataTableComponent<unknown, unknown> {\n        return this.debugElement.componentInstance;\n    }\n\n    public get data(): any[] {\n        return this.component.plainData;\n    }\n\n    public get element(): DebugElement {\n        return this.debugElement.query(By.css('.risk-data-table-wrapper > table'));\n    }\n\n    public get header(): TableHeader {\n        return new TableHeader(this.debugElement.query((de) => de.references.mainHeader), this.page);\n    }\n\n    public get sorting(): TableSorting {\n        return new TableSorting(this, this.page);\n    }\n\n    public get body(): TableBody {\n        return new TableBody(this.debugElement.query((de) => de.references.mainBody), this.page);\n    }\n\n    public get footer(): TableFooter {\n        return new TableFooter(this.debugElement.query((de) => de.references.mainFooter));\n    }\n\n    public get recordsCount(): RecordsCount {\n        return new RecordsCount(this.debugElement.query(By.css('.risk-data-table-page-count')));\n    }\n\n    public get pager(): Pager {\n        return new Pager(this.debugElement.query(By.directive(PagingComponent)), this.page);\n    }\n}\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Table header\">\n\nexport class TableHeader {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get rows(): TableHeaderRow[] {\n        return this.element.queryAll(By.css('tr')).map((element: DebugElement) => {\n            return new TableHeaderRow(element, this.page);\n        });\n    }\n\n    public get cells(): TableHeaderCell[] {\n        return this.element.queryAll(By.css('th')).map((element: DebugElement) => {\n            return new TableHeaderCell(element, this.page);\n        });\n    }\n\n}\n\nexport class TableHeaderRow {\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get cells(): TableHeaderCell[] {\n        return this.element.queryAll(By.css('th')).map((element: DebugElement) => {\n            return new TableHeaderCell(element, this.page);\n        });\n    }\n}\n\nexport class TableHeaderCell {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get sortingHandle(): SortingHandle | null {\n        const handle = this.element.query(By.directive(MatButton));\n        if (handle) {\n            return new SortingHandle(this.page, handle);\n        }\n        return null;\n    }\n\n    public get tooltip(): string | null {\n        const handle = this.element.query(By.directive(MatTooltip));\n        if (handle) {\n            return handle.injector.get(MatTooltip).message;\n        }\n        return null;\n    }\n\n    public get title(): string {\n        const textNode = this.element.childNodes.find((node: DebugNode) => node.nativeNode.nodeType === Node.TEXT_NODE);\n        if (textNode != null) {\n            return textNode\n                .nativeNode.textContent.trim();\n        }\n        return '';\n    }\n\n    public get colspan(): number {\n        return this.element.nativeElement.colspan;\n    }\n\n    public get rowspan(): number {\n        return this.element.nativeElement.rowspan;\n    }\n\n}\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Sorting\">\n\nexport class TableSorting {\n\n    public constructor(private table: DataTableDefinition, private page: { detectChanges: () => void }) {\n    }\n\n    public get handles(): SortingHandle[] {\n        const handles = this.table.debugElement.query((de) => de.references.mainHeader)\n            .queryAll(By.directive(MatButton));\n        if (!handles) {\n            return [];\n        }\n        return handles.map((handle: DebugElement) => {\n            return new SortingHandle(this.page, handle);\n        });\n    }\n\n    public get detailRowHandles(): SortingHandle[] | null {\n        const handles = this.table.debugElement.query(By.css('.risk-data-table-detail')).query(By.css('thead'))\n            .queryAll(By.directive(MatButton));\n        if (!handles) {\n            return null;\n        }\n        return handles.map((handle: DebugElement) => {\n            return new SortingHandle(this.page, handle);\n        });\n    }\n\n    public get currentOrdering(): Array<OrderingCriteria<any>> {\n        return (this.table.component as any).ordering;\n    }\n\n    public checkSorting(firstNRows: number = this.table.component.rows.length,\n                        criterium?: OrderingCriteria<any>): void {\n        // WARN: call data once as it calls .map on all table rows\n        const data = this.table.data;\n\n        let ordering: Array<OrderingCriteria<any>>;\n        if (criterium) {\n            ordering = [criterium].concat((this.table.component as any)._defaultOrdering);\n        } else {\n            ordering = this.currentOrdering;\n        }\n        for (let i = 1; i < Math.min(data.length, firstNRows); i++) {\n            ordering.some((criteria: OrderingCriteria<any>) => {\n                //noinspection EqualityComparisonWithCoercionJS\n                const valueA: any = criteria.get(data[i - 1]);\n                const valueB: any = criteria.get(data[i]);\n                if (valueA == null && valueB == null) {\n                    return false;\n                }\n                expect(valueA).not.toBeNull();\n                expect(valueA).not.toBeUndefined();\n                if (valueB != null) {\n                    if (criteria.descending) {\n                        expect(valueA >= valueB)\n                            .toBeTruthy('Expect: ' + valueA + ' >= '\n                                        + valueB);\n                    } else {\n                        expect(valueA <= valueB)\n                            .toBeTruthy('Expect: ' + valueA + ' <= '\n                                        + valueB);\n                    }\n                }\n                return valueA !== valueB;\n            });\n        }\n    }\n}\n\nexport class SortingHandle {\n\n    public constructor(private page: { detectChanges: () => void }, private handle: DebugElement) {\n    }\n\n    public click() {\n        click(this.handle);\n        this.page.detectChanges();\n    }\n}\n\n// </editor-fold>\n\n// </editor-fold>\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Table body\">\n\nexport class TableBody {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public get rows(): TableBodyRow[] {\n        return this.element.queryAll((de) => de.references.masterRow).map((element: DebugElement) => {\n            return new TableBodyRow(element, this.page);\n        });\n    }\n\n    public get cells(): TableBodyCell[] {\n        let cells: TableBodyCell[] = [];\n        this.element.queryAll((de) => de.references.masterRow).forEach((row: DebugElement) => {\n            cells = cells.concat(row.queryAll(By.css('td')).map((cell: DebugElement) => {\n                return new TableBodyCell(cell);\n            }));\n        });\n        return cells;\n    }\n}\n\nexport class TableBodyRow {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public expandRow(): void {\n        click(this.element);\n        this.page.detectChanges();\n    }\n\n    public get expander(): RowExpander {\n        return new RowExpander(\n            this.element.query(By.directive(DataTableRowDetailExpanderComponent)).query(By.directive(MatAnchor)));\n    }\n\n    public get cells(): TableBodyCell[] {\n        return this.element.queryAll(By.css('td')).map((element: DebugElement) => {\n            return new TableBodyCell(element);\n        });\n    }\n\n    public get rowDetail(): TableBodyDetail | null {\n        const parent = this.element.parent;\n        if (parent != null) {\n            const next = parent.children[parent.children.indexOf(this.element) + 1];\n            if (next && !next.references.masterRow) {\n                return new TableBodyDetail(next, this.page);\n            }\n        }\n        return null;\n    }\n\n    public get highlighted(): boolean {\n        return this.element.nativeElement.classList.contains(HIGHLIGHTER_CLASS);\n    }\n}\n\nexport class RowExpander {\n    public constructor(public element: DebugElement) {\n    }\n\n    public get icon(): string {\n        return this.element.query(By.directive(MatIcon)).nativeElement.textContent.trim();\n    }\n\n    public get opened(): boolean {\n        return this.icon === 'expand_less';\n    }\n\n    public get closed(): boolean {\n        return this.icon === 'expand_more';\n    }\n}\n\nexport class TableBodyCell {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get colspan(): number {\n        return this.element.nativeElement.colspan;\n    }\n\n    public get rowspan(): number {\n        return this.element.nativeElement.rowspan;\n    }\n}\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Row detail\">\n\nexport class TableBodyDetail {\n\n    public constructor(public element: DebugElement, private page: { detectChanges: () => void }) {\n    }\n\n    public header(): TableHeader {\n        return new TableHeader(this.element.query(By.css('thead')), this.page);\n    }\n\n    public get body(): TableBodyDetailBody {\n        return new TableBodyDetailBody(this.element.query(By.css('tbody')));\n    }\n\n    public get highlighted(): boolean {\n        return this.element.nativeElement.classList.contains(HIGHLIGHTER_CLASS);\n    }\n\n    public get colspan(): number {\n        return this.element.children[0].nativeElement.colspan;\n    }\n}\n\nexport class TableBodyDetailBody {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get rows(): TableBodyDetailRow[] {\n        return this.element.queryAll(By.css('tr')).map((element: DebugElement) => {\n            return new TableBodyDetailRow(element);\n        });\n    }\n\n    public get cells(): TableBodyCell[] {\n        let cells: TableBodyCell[] = [];\n        this.element.queryAll(By.css('tr')).forEach((row: DebugElement) => {\n            cells = cells.concat(row.queryAll(By.css('td')).map((cell: DebugElement) => {\n                return new TableBodyCell(cell);\n            }));\n        });\n        return cells;\n    }\n}\n\nexport class TableBodyDetailRow {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get cells(): TableBodyCell[] {\n        return this.element.queryAll(By.css('td')).map((element: DebugElement) => {\n            return new TableBodyCell(element);\n        });\n    }\n}\n\n// </editor-fold>\n\n// </editor-fold>\n\n// <editor-fold defaultstate=\"collapsed\" desc=\"Table footer\">\n\nexport class TableFooter {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get rows(): TableFooterRow[] {\n        return this.element.queryAll(By.css('tr')).map((element: DebugElement) => {\n            return new TableFooterRow(element);\n        });\n    }\n\n    public get cells(): TableBodyCell[] {\n        let cells: TableBodyCell[] = [];\n        this.element.queryAll(By.css('tr')).forEach((row: DebugElement) => {\n            cells = cells.concat(row.queryAll(By.css('th')).map((cell: DebugElement) => {\n                return new TableBodyCell(cell);\n            }));\n        });\n        return cells;\n    }\n}\n\nexport class TableFooterRow {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get cells(): TableBodyCell[] {\n        return this.element.queryAll(By.css('th')).map((element: DebugElement) => {\n            return new TableBodyCell(element);\n        });\n    }\n}\n\n// </editor-fold>\n\nexport class RecordsCount {\n\n    public constructor(public element: DebugElement) {\n    }\n\n    public get message(): string {\n        return this.element.nativeElement.textContent;\n    }\n}\n\nexport class Pager {\n\n    public constructor(public element: DebugElement,\n                       private page: { detectChanges: () => void, advanceAndDetectChanges: () => void }) {\n    }\n\n    public get pageButtons(): DebugElement[] {\n        return this.element.queryAll(By.directive(MatButtonToggle));\n    }\n\n    public expectLeadingButtonsDisabled() {\n        for (let i = 0; i < 2; i++) {\n            expect(this.pageButtons[i].classes['mat-button-toggle-disabled'])\n                .toBe(true, 'First two are disabled.');\n        }\n    }\n\n    public expectLeadingButtonsNotDisabled() {\n        for (let i = 0; i < 2; i++) {\n            expect(this.pageButtons[i].classes['mat-button-toggle-disabled'])\n                .not.toBe(true, 'First two are not disabled.');\n        }\n    }\n\n    public expectTrailingButtonsDisabled() {\n        for (let i = this.pageButtons.length - 1; i > this.pageButtons.length - 3; i--) {\n            expect(this.pageButtons[i].classes['mat-button-toggle-disabled'])\n                .toBe(true, 'Last two are disabled.');\n        }\n    }\n\n    public expectTrailingButtonsNotDisabled() {\n        for (let i = this.pageButtons.length - 1; i > this.pageButtons.length - 3; i--) {\n            expect(this.pageButtons[i].classes['mat-button-toggle-disabled'])\n                .not.toBe(true, 'Last two are not disabled.');\n        }\n    }\n\n    public expectButtonNumbers(numbers: number[]) {\n        for (let i = 0; i < numbers.length; i++) {\n            expect(this.pageButtons[i + 2].query(By.css('.mat-button-toggle-label-content'))\n                .nativeElement.textContent.trim())\n                .toEqual(numbers[i] + '', 'Button numbers are correct');\n        }\n    }\n\n    public expectButtonActive(index: number) {\n        expect(this.pageButtons[index].classes['mat-button-toggle-checked'])\n            .toBe(true, 'Button is active.');\n    }\n\n    public click(index: number) {\n        click(this.pageButtons[index].query(By.css('.mat-button-toggle-label-content')).nativeElement);\n        this.page.detectChanges();\n        this.page.advanceAndDetectChanges();\n    }\n}\n\nexport function chceckSorting(page: { detectChanges: () => void, dataTable: DataTableDefinition },\n                              criteria: Array<ValueGetter<any>>) {\n    page.dataTable.sorting.checkSorting(150);\n\n    page.dataTable.sorting.handles.forEach((handle: SortingHandle, index: number) => {\n        // Tigger sort based on a handle\n        handle.click();\n        page.detectChanges();\n\n        // Check the sorting\n        page.dataTable.sorting.checkSorting(150, {\n            get: criteria[index]\n        });\n\n        // Tigger sort based on a handle\n        handle.click();\n        page.detectChanges();\n\n        // Check the sorting\n        page.dataTable.sorting.checkSorting(150, {\n            get       : criteria[index],\n            descending: true\n        });\n    });\n}\n\nexport class DataTableDefinitionHosted extends Page<TestDataTableHostComponent> {\n\n    public constructor(fixture: ComponentFixture<TestDataTableHostComponent>) {\n        super(fixture);\n    }\n\n    public get dataTable(): DataTableDefinition {\n        return new DataTableDefinition(this.debugElement.query(By.directive(DataTableComponent)), this);\n    }\n}\n\n@Component({\n    template: `\n        <risk-data-table [data]=\"data\"\n                         [footer]=\"footer\"\n                         [pageSize]=\"20\"\n                         [defaultOrdering]=\"defaultOrdering\"\n                         [striped]=\"true\">\n            <risk-data-table-column title=\"Test Column 1\"\n                                    [sortingKey]=\"valueGetter\">\n                <ng-template let-record=\"row\" risk-data-table-cell>\n                    {{record.value1}}\n                </ng-template>\n            </risk-data-table-column>\n            <risk-data-table-column>\n                <ng-template risk-data-table-cell let-record=\"row\" let-expanded=\"expanded\">\n                    <risk-data-table-detail-expander [expanded]=\"expanded\"></risk-data-table-detail-expander>\n                </ng-template>\n                <ng-template risk-data-table-footer-cell let-footer=\"footer\">\n                    {{footer.value1}}\n                </ng-template>\n            </risk-data-table-column>\n            <!-- Sub detail -->\n            <risk-data-table-detail-row>\n                <risk-data-table-column-group>\n                    <risk-data-table-column title=\"Test Detail Column 1\"\n                                            [sortingKey]=\"valueGetter\">\n                        <ng-template risk-data-table-cell let-record=\"row\">\n                            {{record.value1}}\n                        </ng-template>\n                    </risk-data-table-column>\n                </risk-data-table-column-group>\n                <risk-data-table-column-group>\n                    <risk-data-table-column title=\"Test Detail Column 2\">\n                        <ng-template risk-data-table-cell let-record=\"row\">\n                            {{record.value2}}\n                        </ng-template>\n                    </risk-data-table-column>\n                    <risk-data-table-column title=\"Test Detail Column 3\">\n                        <ng-template risk-data-table-cell let-record=\"row\">\n                            {{record.value3}}\n                        </ng-template>\n                    </risk-data-table-column>\n                </risk-data-table-column-group>\n                <risk-data-table-column-group></risk-data-table-column-group>\n            </risk-data-table-detail-row>\n        </risk-data-table>`\n})\nexport class TestDataTableHostComponent {\n\n    public data: any[];\n\n    public footer: any;\n\n    public constructor() {\n        this.data = [];\n        for (let i = 0; i < 500; i++) {\n            this.data.push({\n                value1: Math.floor(secureRandom() * 20) + ' - value 1',\n                value2: Math.floor(secureRandom() * 20) + ' - value 2',\n                value3: Math.floor(secureRandom() * 20) + ' - value 3'\n            });\n        }\n        this.footer = this.data[0];\n    }\n\n    public get defaultOrdering(): Array<OrderingCriteria<any> | ValueGetter<any>> {\n        return [\n            {\n                get       : (record: any) => {\n                    return record.value3;\n                },\n                descending: true\n            },\n            (record: any) => {\n                return record.value2;\n            }\n        ];\n    }\n\n    public get valueGetter(): (record: any) => any {\n        return (record: any) => {\n            return record.value1;\n        };\n    }\n}\n","import {Component, DebugElement} from '@angular/core';\nimport {ComponentFixture} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {HighlighterDirective, Row} from '@dbg-riskit/angular-datatable';\nimport {Page} from './page.base';\n\n@Component({\n    template: `\n        <div [risk-data-table-highlighter]=\"trackBy\" [risk-data-table-highlighter-context]=\"context\"></div>`\n})\nexport class HighLighterDirectiveTestComponent {\n\n    public context?: { row: any, storage?: any, index: number, enabled: boolean };\n\n    public trackBy(index: number, row: Row<any>): any {\n        return row.rowData;\n    }\n}\n\nexport class HighLighterDirectivePage extends Page<HighLighterDirectiveTestComponent> {\n\n    public constructor(fixture: ComponentFixture<HighLighterDirectiveTestComponent>) {\n        super(fixture);\n    }\n\n    public get highlightedElement(): DebugElement {\n        return this.debugElement.query(By.directive(HighlighterDirective));\n    }\n\n    public get classList(): DOMTokenList {\n        return this.highlightedElement.nativeElement.classList;\n    }\n\n    public get highlighter(): HighlighterDirective<unknown> {\n        return this.highlightedElement.injector.get(HighlighterDirective);\n    }\n}\n","import {Predicate} from '@angular/core';\n\n// @dynamic\nexport class ByUtil {\n\n    public static and<T>(...predicates: Array<Predicate<T>>): Predicate<T> {\n        return (val: T) => {\n            return predicates.every((predicate: Predicate<T>) => predicate(val));\n        };\n    }\n\n    public static or<T>(...predicates: Array<Predicate<T>>): Predicate<T> {\n        return (val: T) => {\n            return predicates.some((predicate: Predicate<T>) => predicate(val));\n        };\n    }\n\n    public static not<T>(predicate: Predicate<T>): Predicate<T> {\n        return (val: T) => {\n            return !predicate(val);\n        };\n    }\n}\n","import {Component, DebugElement} from '@angular/core';\nimport {MatSidenav, MatSidenavContainer} from '@angular/material/sidenav';\nimport {MatToolbar} from '@angular/material/toolbar';\nimport {By} from '@angular/platform-browser';\nimport {LayoutComponent} from '@dbg-riskit/angular-view';\nimport {ByUtil} from '../by.util';\nimport {Page} from './page.base';\n\nexport class LayoutComponentDefinition {\n\n    public constructor(public debugElement: DebugElement,\n                       private page: { advanceAndDetectChanges: (milis?: number) => void }) {\n    }\n\n    public get component(): LayoutComponent {\n        return this.debugElement.componentInstance;\n    }\n\n    public get headToolbar(): DebugElement {\n        return this.debugElement.query(ByUtil.and(By.directive(MatToolbar), By.css('.mat-elevation-z2')));\n    }\n\n    public get logo(): DebugElement {\n        return this.headToolbar.query(By.css('.risk-layout-logo'));\n    }\n\n    public get menu(): DebugElement[] {\n        return this.headToolbar.queryAll(ByUtil.or(\n            By.css('[menu-horizontal]'),\n            By.css('risk-layout-horizontal')));\n    }\n\n    public get sideNavContainer(): DebugElement {\n        return this.debugElement.query(By.directive(MatSidenavContainer));\n    }\n\n    public get sideNav(): DebugElement {\n        return this.sideNavContainer.query(By.directive(MatSidenav));\n    }\n\n    public openSideNav(): void {\n        (this.sideNav.componentInstance as MatSidenav).open();\n        this.page.advanceAndDetectChanges();\n    }\n\n    public closeSideNav(): void {\n        (this.sideNav.componentInstance as MatSidenav).close();\n        this.page.advanceAndDetectChanges(1);\n    }\n\n    public get sideNavMenu(): DebugElement[] {\n        return this.sideNav.queryAll(ByUtil.or(\n            By.css('[menu-vertical]'),\n            By.css('risk-layout-vertical')));\n    }\n\n    public get content(): DebugElement {\n        return this.sideNavContainer.query(By.css('.risk-layout-content'));\n    }\n\n}\n\nexport class TestLayoutComponentHostPage extends Page<TestLayoutHostComponent> {\n\n    public get layoutComponent(): LayoutComponentDefinition {\n        return new LayoutComponentDefinition(this.debugElement.query(By.directive(LayoutComponent)), this);\n    }\n}\n\n@Component({\n    template: `\n        <risk-layout>\n            <!--  menu-horizontal -->\n            <risk-layout-horizontal>\n                HorizontalMenu\n            </risk-layout-horizontal>\n            <!--  menu-horizontal -->\n\n            <!--  menu-vertical -->\n            <risk-layout-vertical>\n                Vertical menu\n            </risk-layout-vertical>\n\n            <span>Content</span>\n        </risk-layout>\n    `\n})\nexport class TestLayoutHostComponent {\n\n}\n","import {Directive, Injector, Input, OnChanges} from '@angular/core';\nimport {Router, UrlTree} from '@angular/router';\n\nimport {RouterStub} from './router.stub';\n\n@Directive({\n    /* eslint-disable @angular-eslint/directive-selector */\n    selector: '[routerLink]',\n    /* eslint-enable */\n    host    : {\n        '(click)': 'onClick()'\n    }\n})\nexport class RouterLinkStubDirective implements OnChanges {\n\n    @Input('routerLink')\n    public linkParams: any;\n\n    public navigatedTo: any = null;\n    private _urlTree: UrlTree | null = null;\n\n    private routerStub: RouterStub;\n\n    public constructor(injector: Injector) {\n        this.routerStub = injector.get(Router, null) as any;\n    }\n\n    public ngOnChanges(): void {\n        if (this.linkParams && this.routerStub) {\n            this._urlTree = this.routerStub.getURLTree(this.linkParams);\n        }\n    }\n\n    public onClick(): void {\n        this.navigatedTo = this.linkParams;\n        if (this.routerStub) {\n            if (Array.isArray(this.navigatedTo)) {\n                this.routerStub.navigate(this.navigatedTo);\n            } else {\n                this.routerStub.navigateByUrl(this.navigatedTo);\n            }\n        }\n    }\n\n    public get urlTree(): UrlTree | null {\n        return this._urlTree;\n    }\n}\n","import {DebugElement} from '@angular/core';\n\nimport {click} from '../events';\nimport {RouterLinkStubDirective} from '../stubs/router/router.link.stub';\nimport {Page} from './page.base';\n\nexport class LinkDefinition {\n\n    public constructor(private page: Page<any>, public link: DebugElement) {\n    }\n\n    public get stub(): RouterLinkStubDirective {\n        return this.link.injector.get(RouterLinkStubDirective);\n    }\n\n    public get text(): string {\n        return this.link.nativeElement.textContent.trim();\n    }\n\n    public click() {\n        click(this.link.nativeElement);\n        this.page.advanceAndDetectChanges();\n    }\n}\n","import {ComponentFixture} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {RouterLinkStubDirective} from '../stubs/router/router.link.stub';\nimport {LinkDefinition} from './link.definition';\nimport {Page} from './page.base';\n\nexport class LinkOnlyPage<T> extends Page<T> {\n\n    public constructor(fixture: ComponentFixture<T>) {\n        super(fixture);\n    }\n\n    public get link(): LinkDefinition {\n        return new LinkDefinition(this, this.debugElement.query(By.directive(RouterLinkStubDirective)));\n    }\n}\n","import {DebugElement} from '@angular/core';\nimport {MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\nimport {By} from '@angular/platform-browser';\nimport {LoginMenuComponent} from '@dbg-riskit/angular-login';\nimport {ByUtil} from '../by.util';\nimport {click} from '../events';\nimport {LinkDefinition} from './link.definition';\nimport {Page} from './page.base';\n\nexport class LoginMenuPage extends Page<LoginMenuComponent> {\n\n    public get menuTrigger(): DebugElement {\n        return this.debugElement.query(By.directive(MatMenuTrigger));\n    }\n\n    public clickMenuTrigger(): void {\n        click(this.menuTrigger);\n        this.waitForMenu();\n    }\n\n    public waitForMenu(): void {\n        this.detectChanges(500);\n    }\n\n    public get loginLink(): LinkDefinition {\n        return new LinkDefinition(this, this.debugElement.query(\n            ByUtil.and(\n                By.directive(MatMenuItem),\n                (value: DebugElement) => value.nativeElement.textContent.trim().endsWith('Login'))));\n    }\n\n    public get logoutLink(): LinkDefinition {\n        return new LinkDefinition(this, this.debugElement.query(\n            ByUtil.and(\n                By.directive(MatMenuItem),\n                (value: DebugElement) => value.nativeElement.textContent.trim().endsWith('Logout'))));\n    }\n}\n","import {DebugElement} from '@angular/core';\nimport {ComponentFixture, tick} from '@angular/core/testing';\nimport {MatButton} from '@angular/material/button';\nimport {By} from '@angular/platform-browser';\nimport {LoginComponent} from '@dbg-riskit/angular-login';\nimport {NoopAnimationMessageComponent, RISK_ERROR_SELECTOR, RISK_GOOD_SELECTOR} from '@dbg-riskit/angular-view';\nimport {ByUtil} from '../by.util';\nimport {click, setNgModelValue} from '../events';\nimport {MessageComponentDef} from './message.def';\nimport {Page} from './page.base';\n\nexport class LoginPage extends Page<LoginComponent> {\n\n    public constructor(fixture: ComponentFixture<LoginComponent>) {\n        super(fixture);\n    }\n\n    public get formElement(): DebugElement {\n        return this.debugElement.query(By.css('form'));\n    }\n\n    public get usernameElement(): DebugElement {\n        return this.formElement.query(By.css('input[name=username]'));\n    }\n\n    public set username(username: string) {\n        setNgModelValue(this.usernameElement, username);\n    }\n\n    public get passwordElement(): DebugElement {\n        return this.formElement.query(By.css('input[name=password]'));\n    }\n\n    public set password(password: string) {\n        setNgModelValue(this.passwordElement, password);\n    }\n\n    public get loginButtonElement(): DebugElement {\n        return this.formElement.query(By.directive(MatButton));\n    }\n\n    public get successMessage(): MessageComponentDef | null {\n        const debugElement = this.debugElement.query(\n            ByUtil.and(\n                By.directive(NoopAnimationMessageComponent),\n                By.css(RISK_GOOD_SELECTOR)));\n        if (!debugElement) {\n            return null;\n        }\n        return new MessageComponentDef(debugElement);\n    }\n\n    public get errorMessage(): MessageComponentDef | null {\n        const debugElement = this.debugElement.query(\n            ByUtil.or(\n                ByUtil.and(\n                    By.directive(NoopAnimationMessageComponent),\n                    By.css(RISK_ERROR_SELECTOR)),\n                By.css('h3')));\n        if (!debugElement) {\n            return null;\n        }\n        return new MessageComponentDef(debugElement);\n    }\n\n    public clickLogin() {\n        click(this.loginButtonElement.nativeElement);\n        tick();\n        this.detectChanges();\n    }\n}\n","import {Component} from '@angular/core';\nimport {ComponentFixture} from '@angular/core/testing';\nimport {By} from '@angular/platform-browser';\nimport {\n    RISK_ERROR_SELECTOR,\n    RISK_GOOD_SELECTOR,\n    RISK_INFO_SELECTOR,\n    RISK_INITIAL_LOAD_SELECTOR,\n    RISK_MESSAGE_SELECTOR,\n    RISK_NO_DATA_SELECTOR,\n    RISK_UPDATE_FAILED_SELECTOR,\n    RISK_WARN_SELECTOR\n} from '@dbg-riskit/angular-view';\nimport {MessageComponentDef} from './message.def';\nimport {Page} from './page.base';\n\n@Component({\n    template: `\n        <risk-error [message]=\"message\"></risk-error>\n        <risk-good [message]=\"message\"></risk-good>\n        <risk-info [message]=\"message\"></risk-info>\n        <risk-message [message]=\"message\"></risk-message>\n        <risk-warn [message]=\"message\"></risk-warn>\n        <risk-initial-load [message]=\"message\"></risk-initial-load>\n        <risk-update-failed [message]=\"message\"></risk-update-failed>\n        <risk-no-data [message]=\"message\"></risk-no-data>\n    `\n})\nexport class TestMessageHostComponent {\n    public message = 'custom message';\n}\n\nexport class MessageHostedPage extends Page<TestMessageHostComponent> {\n\n    public constructor(fixture: ComponentFixture<TestMessageHostComponent>) {\n        super(fixture);\n    }\n\n    public get error(): MessageComponentDef {\n        return new MessageComponentDef(this.debugElement.query(By.css(RISK_ERROR_SELECTOR)));\n    }\n\n    public get good(): MessageComponentDef {\n        return new MessageComponentDef(this.debugElement.query(By.css(RISK_GOOD_SELECTOR)));\n    }\n\n    public get info(): MessageComponentDef {\n        return new MessageComponentDef(this.debugElement.query(By.css(RISK_INFO_SELECTOR)));\n    }\n\n    public get message(): MessageComponentDef {\n        return new MessageComponentDef(this.debugElement.query(By.css(RISK_MESSAGE_SELECTOR)));\n    }\n\n    public get warn(): MessageComponentDef {\n        return new MessageComponentDef(this.debugElement.query(By.css(RISK_WARN_SELECTOR)));\n    }\n\n    public get initialLoad(): MessageComponentDef {\n        return new MessageComponentDef(this.debugElement.query(By.css(RISK_INITIAL_LOAD_SELECTOR)));\n    }\n\n    public get noData(): MessageComponentDef {\n        return new MessageComponentDef(this.debugElement.query(By.css(RISK_NO_DATA_SELECTOR)));\n    }\n\n    public get updateFailed(): MessageComponentDef {\n        return new MessageComponentDef(this.debugElement.query(By.css(RISK_UPDATE_FAILED_SELECTOR)));\n    }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {RouterStateSnapshot} from '@angular/router';\n\nimport {AUTH_CONFIG, AuthConfig, AuthRoutingFlowService, AuthService} from '@dbg-riskit/angular-auth';\nimport {AUTH_PROVIDER} from '@dbg-riskit/angular-common';\n\nimport {Observable, of} from 'rxjs';\nimport {defaultIfEmpty, map} from 'rxjs/operators';\n\nexport const storage: { authRequestedPath: string | null; }\n    = {authRequestedPath: null};\n\n@Injectable()\nexport class AuthRoutingFlowServiceStub extends AuthRoutingFlowService {\n\n    public constructor(@Inject(AUTH_PROVIDER) private authServiceStub: AuthService,\n                       @Inject(AUTH_CONFIG) authConfig: AuthConfig) {\n        super(null as any, null as any, {loggedIn: of(null)} as any, storage as any, authConfig, null as any);\n        // cleanup\n        storage.authRequestedPath = null;\n    }\n\n    public logout(state?: RouterStateSnapshot): Observable<boolean> {\n        return this.authServiceStub.logout().pipe(\n            defaultIfEmpty(0),\n            map(() => true));\n    }\n\n    public login(username?: string, password?: string): Observable<boolean> {\n        return this.authServiceStub.directLogin(username as any, password as any);\n    }\n\n    public loginViaService(): Observable<boolean> {\n        return this.authServiceStub.loginViaAuthService();\n    }\n}\n","import {Injectable} from '@angular/core';\n\nimport {WellKnown} from '@dbg-riskit/angular-auth';\n\nimport {Observable, of} from 'rxjs';\n\nexport const WELL_KNOWN: WellKnown = {\n    endpoints: {\n        auth  : '/auth',\n        token : '/token',\n        logout: '/logout'\n    },\n    issuer   : 'risk-auth'\n};\n\n@Injectable()\nexport class WellKnownServiceStub {\n    public get wellKnown(): Observable<WellKnown> {\n        return of(WELL_KNOWN);\n    }\n\n}\n","import {Injectable} from '@angular/core';\n\nimport {AuthService} from '@dbg-riskit/angular-auth';\nimport {UserInfo} from '@dbg-riskit/common';\n\nimport {EMPTY, Observable, of} from 'rxjs';\nimport {WellKnownServiceStub} from './well.known.service.stub';\n\n@Injectable()\nexport class AuthServiceStub extends AuthService {\n\n    public constructor() {\n        super({} as any, new WellKnownServiceStub() as any, null as any, null as any, null as any);\n    }\n\n    private user?: string;\n\n    public get loggedIn(): Observable<boolean> {\n        return of(!!this.user);\n    }\n\n    public get userProfile(): Observable<UserInfo> {\n        return of({\n            name: this.user\n        });\n    }\n\n    public loginViaAuthService(): Observable<boolean> {\n        return of(true);\n    }\n\n    public checkLocationForLoginData(): Observable<boolean> {\n        return of(true);\n    }\n\n    public directLogin(username: string, password: string): Observable<boolean> {\n        this.user = username;\n        this.emitLoginStatusChange(true);\n        return of(true);\n    }\n\n    public logout(): Observable<never> {\n        this.emitLoginStatusChange(false);\n        delete this.user;\n        return EMPTY;\n    }\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n    selector: 'login-menu, risk-login-menu',\n    template: ''\n})\nexport class LoginMenuStubComponent {\n\n    @Input()\n    public orientation: 'row' | 'column' = 'row';\n}\n","import {Injectable} from '@angular/core';\n\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n@Injectable()\nexport class ActivatedRouteStub<T> {\n\n    // Test parameters\n    private _testParams: T = {} as T;\n\n    // ActivatedRoute.params is Observable\n    private subject = new BehaviorSubject(this.testParams);\n    public params: Observable<T> = this.subject.asObservable();\n\n    public get testParams() {\n        return this._testParams;\n    }\n\n    public set testParams(params: T) {\n        this._testParams = params;\n        this.subject.next(params);\n    }\n\n    // ActivatedRoute.snapshot.params\n    public get snapshot() {\n        return {params: this.testParams};\n    }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n    /* eslint-disable @angular-eslint/component-selector */\n    selector: 'router-outlet',\n    /* eslint-enable */\n    template: ''\n})\nexport class RouterOutletStubComponent {\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {NavigationEnd, NavigationExtras, UrlSegment, UrlSegmentGroup, UrlTree} from '@angular/router';\n\nexport class Snapshot {\n\n    public constructor(private stub: RouterStub) {\n    }\n\n    public get url(): string {\n        return this.stub.getCurrentURL();\n    }\n}\n\n// @dynamic\n@Injectable()\nexport class RouterStub {\n\n    private id = 0;\n\n    public navigated = true;\n\n    private currentUrlTree: UrlTree = this.createUrlTree(['/dashboard']);\n\n    public routerState = {\n        snapshot: new Snapshot(this)\n    };\n\n    public events: EventEmitter<NavigationEnd> = new EventEmitter<NavigationEnd>();\n\n    public getURLTree(url: string | UrlTree | any[]): UrlTree {\n        if (Array.isArray(url)) {\n            return this.createUrlTree(url as any[]);\n        }\n\n        if (url instanceof Object) {\n            return url as UrlTree;\n        }\n\n        return this.createUrlTree((url as string).split('/'));\n    }\n\n    public navigateByUrl(url: string | UrlTree) {\n        this.currentUrlTree = this.getURLTree(url);\n        this.emitNavigate();\n        return url;\n    }\n\n    public navigate(commands: any[], extras?: NavigationExtras) {\n        this.currentUrlTree = this.getURLTree(commands);\n        this.emitNavigate();\n        return [commands, extras];\n    }\n\n    private emitNavigate(): void {\n        this.id++;\n        const urlString = this.getCurrentURL();\n        this.events.emit(new NavigationEnd(this.id, urlString, urlString));\n    }\n\n    public isActive(url: UrlTree): boolean {\n        return this.getCurrentURL().indexOf(RouterStub.serializeUrl(url)) !== -1;\n    }\n\n    public getCurrentURL() {\n        return RouterStub.serializeUrl(this.currentUrlTree);\n    }\n\n    public createUrlTree(commands: any[], extras?: NavigationExtras): UrlTree {\n        const _b = extras || {};\n        const queryParams = _b.queryParams || {};\n        const fragment = _b.fragment || '';\n        return {\n            root         : new UrlSegmentGroup(commands.map((command: any) => {\n                return new UrlSegment(command, {});\n            }), {}),\n            queryParams,\n            fragment,\n            queryParamMap: {\n                ...new Map(),\n                getAll: () => [],\n                keys  : []\n            }\n        };\n    }\n\n    public static serializeUrl(url: UrlTree): string {\n        return url.root.segments.map((segment: UrlSegment) => segment.path).join('/');\n    }\n}\n","import {NgModule} from '@angular/core';\nimport {MetadataOverride, TestBed} from '@angular/core/testing';\nimport {ActivatedRoute, Router, RouterModule} from '@angular/router';\nimport {ActivatedRouteStub} from './activated.route.stub';\nimport {RouterLinkStubDirective} from './router.link.stub';\nimport {RouterOutletStubComponent} from './router.outlet.stub.component';\nimport {RouterStub} from './router.stub';\n\nexport function stubRouter(customOverrides?: MetadataOverride<NgModule>): typeof TestBed {\n    const override: MetadataOverride<NgModule> = {\n        set: {\n            imports        : [],\n            declarations   : [\n                RouterLinkStubDirective,\n                RouterOutletStubComponent\n            ],\n            providers      : [\n                {\n                    provide : Router,\n                    useClass: RouterStub\n                },\n                {\n                    provide : ActivatedRoute,\n                    useClass: ActivatedRouteStub\n                }\n            ],\n            exports        : [\n                RouterLinkStubDirective,\n                RouterOutletStubComponent\n            ],\n            entryComponents: []\n        }\n    };\n    if (customOverrides) {\n        if (customOverrides.add) {\n            override.add = customOverrides.add;\n        }\n        if (customOverrides.set) {\n            Object.assign(override.set, customOverrides.set);\n        }\n        if (customOverrides.remove) {\n            override.remove = customOverrides.remove;\n        }\n    }\n    return TestBed.overrideModule(RouterModule, override);\n}\n","import {Type} from '@angular/core';\nimport {TestBed} from '@angular/core/testing';\nimport {CommonViewModule, NoopAnimationsCommonViewModule} from '@dbg-riskit/angular-view';\nimport {COMPILE_TIMEOUT_INTERVAL} from './environment';\n\nexport function disableMaterialAnimations(ngModule: Type<any>) {\n    TestBed.overrideModule(ngModule, {\n        remove: {\n            imports: [CommonViewModule]\n        },\n        add   : {\n            imports: [NoopAnimationsCommonViewModule]\n        }\n    });\n}\n\nexport function compileTestBed(compileFunction: () => Promise<any>, destroyFunction?: () => void,\n                               stubMatchMedia = true) {\n\n    let matchMedia: any;\n    beforeEach((done: DoneFn) => {\n        if (stubMatchMedia) {\n            matchMedia = window.matchMedia;\n            window.matchMedia = fakeMatchMedia();\n        }\n\n        compileFunction()\n            .then(done)\n            .catch((err: any) => {\n                done.fail(err);\n            });\n    }, COMPILE_TIMEOUT_INTERVAL);\n\n    afterEach(() => {\n        if (destroyFunction) {\n            destroyFunction();\n        }\n\n        if (stubMatchMedia) {\n            window.matchMedia = matchMedia;\n        }\n    }, COMPILE_TIMEOUT_INTERVAL);\n}\n\nfunction fakeMatchMedia(matches = false) {\n    return (mediaQuery: string): MediaQueryList => ({\n        matches,\n        media              : mediaQuery,\n        onchange           : () => null as any,\n        addListener        : () => null as any,\n        addEventListener   : () => null as any,\n        removeListener     : () => null as any,\n        removeEventListener: () => null as any,\n        dispatchEvent      : () => true\n    });\n}\n","import {NgModule} from '@angular/core';\n\nimport {DataTableModule} from '@dbg-riskit/angular-datatable';\nimport {FileModule} from '@dbg-riskit/angular-file';\nimport {CommonViewModule} from '@dbg-riskit/angular-view';\n\nimport {TestDataTableHostComponent} from './definitions/data.table.definition';\nimport {DownloadTestComponent} from './definitions/download.menu.page';\nimport {HighLighterDirectiveTestComponent} from './definitions/highlighter.directive.page';\nimport {TestLayoutHostComponent} from './definitions/layout.component.page';\nimport {TestMessageHostComponent} from './definitions/message.page';\nimport {LoginMenuStubComponent} from './stubs/login.menu.stub.component';\nimport {RouterLinkStubDirective} from './stubs/router/router.link.stub';\nimport {RouterOutletStubComponent} from './stubs/router/router.outlet.stub.component';\n\n@NgModule({\n    imports     : [\n        CommonViewModule,\n        FileModule,\n        DataTableModule\n    ],\n    declarations: [\n        DownloadTestComponent,\n        TestDataTableHostComponent,\n        HighLighterDirectiveTestComponent,\n        TestLayoutHostComponent,\n        RouterLinkStubDirective,\n        TestMessageHostComponent,\n        LoginMenuStubComponent,\n        RouterOutletStubComponent\n    ]\n})\nexport class TestingModule {\n}\n","// WARNING: Do not change order in this file!!! Environment has to be first as it includes polyfills\nexport * from './lib/environment';\n\nexport * from './lib/definitions/download.menu.page';\nexport * from './lib/definitions/data.table.definition';\nexport * from './lib/definitions/highlighter.directive.page';\nexport * from './lib/definitions/layout.component.page';\nexport * from './lib/definitions/link.definition';\nexport * from './lib/definitions/link.only.page';\nexport * from './lib/definitions/login.menu.page';\nexport * from './lib/definitions/login.page';\nexport * from './lib/definitions/message.def';\nexport * from './lib/definitions/message.page';\nexport * from './lib/definitions/page.base';\n\nexport * from './lib/stubs/auth/auth.routing.flow.service.stub';\nexport * from './lib/stubs/auth/auth.service.stub';\nexport * from './lib/stubs/auth/well.known.service.stub';\n\nexport * from './lib/stubs/http.service.stub';\nexport * from './lib/stubs/login.menu.stub.component';\n\nexport * from './lib/stubs/router/activated.route.stub';\nexport * from './lib/stubs/router/router.link.stub';\nexport * from './lib/stubs/router/router.outlet.stub.component';\nexport * from './lib/stubs/router/router.stub';\nexport * from './lib/stubs/router/router.module.stub';\n\nexport * from './lib/by.util';\nexport * from './lib/events';\nexport * from './lib/utils';\nexport * from './lib/testing.module';\n\nexport {\n    LayoutComponent,\n    NoopAnimationsCommonViewModule,\n    NoopAnimationMessageComponent\n} from '@dbg-riskit/angular-view';\n\nimport {globalScope} from '@dbg-riskit/common';\n\n// Add CachedResourceProviderImpl to compiler configuration\nif ('beforeEach' in globalScope && globalScope.beforeEach) {\n    globalScope.beforeEach(() => {\n        // Disable logging in Safari as the Selenium WebDriver is not working there correctly....\n        if ('navigator' in globalScope) {\n            const ua = globalScope.navigator.userAgent.toLowerCase();\n            if ('spyOn' in globalScope && globalScope.spyOn\n                && ua.indexOf('safari') > -1\n                && ua.indexOf('chrome') === -1) {\n                globalScope.spyOn(console, 'log').and.stub();\n                globalScope.spyOn(console, 'info').and.stub();\n                globalScope.spyOn(console, 'warn').and.stub();\n                globalScope.spyOn(console, 'debug').and.stub();\n                globalScope.spyOn(console, 'error').and.stub();\n            }\n        }\n    });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_throwError","i1"],"mappings":"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"}