@dbg-riskit/angular-testing
Version:
90 lines • 11.4 kB
JavaScript
import { Component } from '@angular/core';
import { MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
import { By } from '@angular/platform-browser';
import { CSVFileDownloadDirective, FileDownloadDirective } from '@dbg-riskit/angular-file';
import * as fileSaver from 'file-saver';
import { click } from '../events';
import { Page } from './page.base';
import * as i0 from "@angular/core";
import * as i1 from "@dbg-riskit/angular-file";
export class CSVDownloadMenuPage extends Page {
constructor(fixture) {
super(fixture);
}
get downloadWindowsLink() {
// Open the menu first
click(this.debugElement.query(By.directive(MatMenuTrigger)));
this.detectChanges(500);
return new DownloadLink(this.debugElement.queryAll(By.directive(MatMenuItem))[0], this);
}
get downloadUnixLink() {
// Open the menu first
click(this.debugElement.query(By.directive(MatMenuTrigger)));
this.detectChanges(500);
return new DownloadLink(this.debugElement.queryAll(By.directive(MatMenuItem))[1], this);
}
}
export class DownloadLink {
constructor(element, page) {
this.element = element;
this.page = page;
}
click() {
this.setupBlobConstructorSpy();
this.setupSaveBlobSpy();
click(this.element);
this.page.detectChanges();
}
get blobSpy() {
this.setupBlobConstructorSpy();
return this._blobSpy;
}
setupBlobConstructorSpy() {
if (!this._blobSpy) {
let downloadDirective;
try {
downloadDirective = this.element.injector.get(CSVFileDownloadDirective);
}
catch (_) {
downloadDirective = this.element.injector.get(FileDownloadDirective);
}
this._blobSpy = spyOn(downloadDirective, 'createBlob').and.callThrough();
}
}
get saveSpy() {
this.setupSaveBlobSpy();
return this._saveBlobSpy;
}
setupSaveBlobSpy() {
if (!this._saveBlobSpy) {
this._saveBlobSpy = spyOn(fileSaver, 'saveAs');
}
}
}
export class DownloadTestComponent {
}
DownloadTestComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: DownloadTestComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
DownloadTestComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.6", type: DownloadTestComponent, selector: "ng-component", ngImport: i0, template: `
<a [risk-download]="data"
[risk-download-content-type]="contentType"
[risk-download-filename]="filename">Download</a>
`, isInline: true, directives: [{ type: i1.FileDownloadDirective, selector: "[risk-download]", inputs: ["risk-download", "risk-download-content-type", "risk-download-filename"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: DownloadTestComponent, decorators: [{
type: Component,
args: [{
template: `
<a [risk-download]="data"
[risk-download-content-type]="contentType"
[risk-download-filename]="filename">Download</a>
`
}]
}] });
export class DownloadTestComponentPage extends Page {
constructor(fixture) {
super(fixture);
}
get downloadLink() {
return new DownloadLink(this.debugElement.query(By.directive(FileDownloadDirective)), this);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQubWVudS5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci10ZXN0aW5nL3NyYy9saWIvZGVmaW5pdGlvbnMvZG93bmxvYWQubWVudS5wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsRUFBRSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDN0MsT0FBTyxFQUdILHdCQUF3QixFQUN4QixxQkFBcUIsRUFDeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUV4QyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxhQUFhLENBQUM7OztBQUdqQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsSUFBOEI7SUFFbkUsWUFBbUIsT0FBbUQ7UUFDbEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFXLG1CQUFtQjtRQUMxQixzQkFBc0I7UUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEIsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3ZCLHNCQUFzQjtRQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV4QixPQUFPLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQUlyQixZQUEwQixPQUFxQixFQUFVLElBQW1DO1FBQWxFLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUErQjtJQUM1RixDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsUUFBUyxDQUFDO0lBQzFCLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxpQkFBeUQsQ0FBQztZQUM5RCxJQUFJO2dCQUNBLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQzNFO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7YUFDeEU7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUU7SUFDTCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUMsWUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0wsQ0FBQztDQUNKO0FBU0QsTUFBTSxPQUFPLHFCQUFxQjs7a0hBQXJCLHFCQUFxQjtzR0FBckIscUJBQXFCLG9EQU5wQjs7OztLQUlUOzJGQUVRLHFCQUFxQjtrQkFQakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUU7Ozs7S0FJVDtpQkFDSjs7QUFTRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsSUFBMkI7SUFFdEUsWUFBbUIsT0FBZ0Q7UUFDL0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRGVidWdFbGVtZW50fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50Rml4dHVyZX0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7TWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7Qnl9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZSxcbiAgICBDU1ZEb3dubG9hZE1lbnVDb21wb25lbnQsXG4gICAgQ1NWRmlsZURvd25sb2FkRGlyZWN0aXZlLFxuICAgIEZpbGVEb3dubG9hZERpcmVjdGl2ZVxufSBmcm9tICdAZGJnLXJpc2tpdC9hbmd1bGFyLWZpbGUnO1xuaW1wb3J0ICogYXMgZmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2xpY2t9IGZyb20gJy4uL2V2ZW50cyc7XG5pbXBvcnQge1BhZ2V9IGZyb20gJy4vcGFnZS5iYXNlJztcbmltcG9ydCBTcHkgPSBqYXNtaW5lLlNweTtcblxuZXhwb3J0IGNsYXNzIENTVkRvd25sb2FkTWVudVBhZ2UgZXh0ZW5kcyBQYWdlPENTVkRvd25sb2FkTWVudUNvbXBvbmVudD4ge1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8Q1NWRG93bmxvYWRNZW51Q29tcG9uZW50Pikge1xuICAgICAgICBzdXBlcihmaXh0dXJlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRvd25sb2FkV2luZG93c0xpbmsoKTogRG93bmxvYWRMaW5rIHtcbiAgICAgICAgLy8gT3BlbiB0aGUgbWVudSBmaXJzdFxuICAgICAgICBjbGljayh0aGlzLmRlYnVnRWxlbWVudC5xdWVyeShCeS5kaXJlY3RpdmUoTWF0TWVudVRyaWdnZXIpKSk7XG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcyg1MDApO1xuXG4gICAgICAgIHJldHVybiBuZXcgRG93bmxvYWRMaW5rKHRoaXMuZGVidWdFbGVtZW50LnF1ZXJ5QWxsKEJ5LmRpcmVjdGl2ZShNYXRNZW51SXRlbSkpWzBdLCB0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRvd25sb2FkVW5peExpbmsoKTogRG93bmxvYWRMaW5rIHtcbiAgICAgICAgLy8gT3BlbiB0aGUgbWVudSBmaXJzdFxuICAgICAgICBjbGljayh0aGlzLmRlYnVnRWxlbWVudC5xdWVyeShCeS5kaXJlY3RpdmUoTWF0TWVudVRyaWdnZXIpKSk7XG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcyg1MDApO1xuXG4gICAgICAgIHJldHVybiBuZXcgRG93bmxvYWRMaW5rKHRoaXMuZGVidWdFbGVtZW50LnF1ZXJ5QWxsKEJ5LmRpcmVjdGl2ZShNYXRNZW51SXRlbSkpWzFdLCB0aGlzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEb3dubG9hZExpbmsge1xuICAgIHByaXZhdGUgX2Jsb2JTcHk/OiBqYXNtaW5lLlNweTtcbiAgICBwcml2YXRlIF9zYXZlQmxvYlNweT86IGphc21pbmUuU3B5O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBEZWJ1Z0VsZW1lbnQsIHByaXZhdGUgcGFnZTogeyBkZXRlY3RDaGFuZ2VzOiAoKSA9PiB2b2lkIH0pIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0dXBCbG9iQ29uc3RydWN0b3JTcHkoKTtcbiAgICAgICAgdGhpcy5zZXR1cFNhdmVCbG9iU3B5KCk7XG4gICAgICAgIGNsaWNrKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIHRoaXMucGFnZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBibG9iU3B5KCk6IFNweSB7XG4gICAgICAgIHRoaXMuc2V0dXBCbG9iQ29uc3RydWN0b3JTcHkoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jsb2JTcHkhO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBCbG9iQ29uc3RydWN0b3JTcHkoKSB7XG4gICAgICAgIGlmICghdGhpcy5fYmxvYlNweSkge1xuICAgICAgICAgICAgbGV0IGRvd25sb2FkRGlyZWN0aXZlOiBBYnN0cmFjdEZpbGVEb3dubG9hZERpcmVjdGl2ZTx1bmtub3duPjtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZG93bmxvYWREaXJlY3RpdmUgPSB0aGlzLmVsZW1lbnQuaW5qZWN0b3IuZ2V0KENTVkZpbGVEb3dubG9hZERpcmVjdGl2ZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICAgICAgZG93bmxvYWREaXJlY3RpdmUgPSB0aGlzLmVsZW1lbnQuaW5qZWN0b3IuZ2V0KEZpbGVEb3dubG9hZERpcmVjdGl2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9ibG9iU3B5ID0gc3B5T24oZG93bmxvYWREaXJlY3RpdmUsICdjcmVhdGVCbG9iJykuYW5kLmNhbGxUaHJvdWdoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNhdmVTcHkoKTogU3B5IHtcbiAgICAgICAgdGhpcy5zZXR1cFNhdmVCbG9iU3B5KCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zYXZlQmxvYlNweSE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cFNhdmVCbG9iU3B5KCkge1xuICAgICAgICBpZiAoIXRoaXMuX3NhdmVCbG9iU3B5KSB7XG4gICAgICAgICAgICB0aGlzLl9zYXZlQmxvYlNweSA9IHNweU9uKGZpbGVTYXZlciwgJ3NhdmVBcycpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8YSBbcmlzay1kb3dubG9hZF09XCJkYXRhXCJcbiAgICAgICAgICAgW3Jpc2stZG93bmxvYWQtY29udGVudC10eXBlXT1cImNvbnRlbnRUeXBlXCJcbiAgICAgICAgICAgW3Jpc2stZG93bmxvYWQtZmlsZW5hbWVdPVwiZmlsZW5hbWVcIj5Eb3dubG9hZDwvYT5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIERvd25sb2FkVGVzdENvbXBvbmVudCB7XG4gICAgcHVibGljIGRhdGE6IGFueSB8IE9ic2VydmFibGU8YW55PjtcblxuICAgIHB1YmxpYyBjb250ZW50VHlwZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBmaWxlbmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIERvd25sb2FkVGVzdENvbXBvbmVudFBhZ2UgZXh0ZW5kcyBQYWdlPERvd25sb2FkVGVzdENvbXBvbmVudD4ge1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8RG93bmxvYWRUZXN0Q29tcG9uZW50Pikge1xuICAgICAgICBzdXBlcihmaXh0dXJlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRvd25sb2FkTGluaygpOiBEb3dubG9hZExpbmsge1xuICAgICAgICByZXR1cm4gbmV3IERvd25sb2FkTGluayh0aGlzLmRlYnVnRWxlbWVudC5xdWVyeShCeS5kaXJlY3RpdmUoRmlsZURvd25sb2FkRGlyZWN0aXZlKSksIHRoaXMpO1xuICAgIH1cbn1cbiJdfQ==