UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

171 lines 17.3 kB
import { CommonModule, DOCUMENT } from '@angular/common'; import { NgModule, NgZone } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { NFC } from '@awesome-cordova-plugins/nfc/ngx'; import { Platform } from '@ionic/angular'; import { LibCommonModule, ProtocolFactoryService, TAP_BLE_SCANNER, TAP_CONNECTION_OPTIONS_PROVIDER, TAP_EXECUTE_TAP_ACTION_SERVICE, TAP_INFO_RESOLVER_CONFIG, TAP_NETWORK_SCANNER, TAP_WIFI_SCANNER, TapAdministrationService, TaskManagerUiModule, } from '@iotize/ionic'; import { defaultInfoResolverConfig } from '@iotize/ionic/config'; import { never, of } from 'rxjs'; import { BLEScannerTestingService } from './ble-scanner-testing.service'; import { ProtocolFactoryTestingService as ProtocolFactoryTestingServiceClass } from './protocol-factory-testing.service'; import * as i0 from "@angular/core"; class ScannerNotAvailable { constructor(message) { this.message = message; this.scanning = of(false); this.isScanning = false; this.results = never(); } start(option) { return Promise.reject(this.message); } stop() { return Promise.reject(this.message); } } export const ProtocolFactoryTestingServiceProvider = { provide: ProtocolFactoryService, useClass: ProtocolFactoryTestingServiceClass, }; export function scannerNotAvailableFactory(name) { const factory = () => { const scanner = new ScannerNotAvailable(`${name} scanner is not available for this test`); return scanner; }; return factory; } class ExecuteTapActionTestingService { async executeTapAction(callable) { return await callable(); } } export class IotizeIonicTestingModule { static forRoot(options) { // const providers: Provider[] = []; const overwritesProvides = []; if (options?.platform) { overwritesProvides.push({ provide: Platform, useFactory: (doc, ngZone) => { return new TestingPlatform(doc, ngZone, options?.platform); }, deps: [DOCUMENT, NgZone], }); } return { ngModule: IotizeIonicTestingModule, providers: [ // ...providers, ...overwritesProvides, ], }; } } /** @nocollapse */ IotizeIonicTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IotizeIonicTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); /** @nocollapse */ IotizeIonicTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: IotizeIonicTestingModule, exports: [CommonModule, ReactiveFormsModule, FormsModule, RouterTestingModule, TaskManagerUiModule, LibCommonModule] }); /** @nocollapse */ IotizeIonicTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IotizeIonicTestingModule, providers: [ BLEScannerTestingService, ProtocolFactoryTestingServiceProvider, { provide: TAP_INFO_RESOLVER_CONFIG, useValue: defaultInfoResolverConfig, }, NFC, { provide: TAP_CONNECTION_OPTIONS_PROVIDER, useValue: { encryption: undefined, nfcPairing: false, refreshSessionState: true, switchProtocol: false, }, }, { provide: TAP_WIFI_SCANNER, useFactory: scannerNotAvailableFactory('Wi-Fi'), }, { provide: TAP_BLE_SCANNER, useClass: BLEScannerTestingService, }, { provide: TAP_NETWORK_SCANNER, useFactory: scannerNotAvailableFactory('Network'), }, { provide: TAP_EXECUTE_TAP_ACTION_SERVICE, useClass: ExecuteTapActionTestingService, }, TapAdministrationService, ], imports: [CommonModule, ReactiveFormsModule, FormsModule, RouterTestingModule, TaskManagerUiModule, LibCommonModule] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IotizeIonicTestingModule, decorators: [{ type: NgModule, args: [{ declarations: [], providers: [ BLEScannerTestingService, ProtocolFactoryTestingServiceProvider, { provide: TAP_INFO_RESOLVER_CONFIG, useValue: defaultInfoResolverConfig, }, NFC, { provide: TAP_CONNECTION_OPTIONS_PROVIDER, useValue: { encryption: undefined, nfcPairing: false, refreshSessionState: true, switchProtocol: false, }, }, { provide: TAP_WIFI_SCANNER, useFactory: scannerNotAvailableFactory('Wi-Fi'), }, { provide: TAP_BLE_SCANNER, useClass: BLEScannerTestingService, }, { provide: TAP_NETWORK_SCANNER, useFactory: scannerNotAvailableFactory('Network'), }, { provide: TAP_EXECUTE_TAP_ACTION_SERVICE, useClass: ExecuteTapActionTestingService, }, TapAdministrationService, ], imports: [], exports: [ CommonModule, ReactiveFormsModule, FormsModule, RouterTestingModule, TaskManagerUiModule, LibCommonModule, ], }] }] }); class TestingPlatform extends Platform { constructor(doc, zone, platformName) { super(doc, zone); this.platformName = platformName; } is(platformName) { return platformName === this.platformName; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90aXplLWlvbmljLXRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL3Rlc3Rpbmcvc3JjL2xpYi9pb3RpemUtaW9uaWMtdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUVMLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLCtCQUErQixFQUMvQiw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBRXhCLG1CQUFtQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsNkJBQTZCLElBQUksa0NBQWtDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFDekgsTUFBTSxtQkFBbUI7SUFLdkIsWUFBbUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFK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QUUvRCxDQUFDO0lBRUQsRUFBRSxDQUFDLFlBQW9CO1FBQ3JCLE9BQU8sWUFBWSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDNUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgTmdab25lLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJUZXN0aW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyL3Rlc3RpbmcnO1xuaW1wb3J0IHsgTkZDIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL25mYy9uZ3gnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1xuICBFeGVjdXRlVGFwQWN0aW9uU2VydmljZUludGVyZmFjZSxcbiAgTGliQ29tbW9uTW9kdWxlLFxuICBQcm90b2NvbEZhY3RvcnlTZXJ2aWNlLFxuICBUQVBfQkxFX1NDQU5ORVIsXG4gIFRBUF9DT05ORUNUSU9OX09QVElPTlNfUFJPVklERVIsXG4gIFRBUF9FWEVDVVRFX1RBUF9BQ1RJT05fU0VSVklDRSxcbiAgVEFQX0lORk9fUkVTT0xWRVJfQ09ORklHLFxuICBUQVBfTkVUV09SS19TQ0FOTkVSLFxuICBUQVBfV0lGSV9TQ0FOTkVSLFxuICBUYXBBZG1pbmlzdHJhdGlvblNlcnZpY2UsXG4gIFRhcENvbm5lY3Rpb25PcHRpb25zLFxuICBUYXNrTWFuYWdlclVpTW9kdWxlLFxufSBmcm9tICdAaW90aXplL2lvbmljJztcbmltcG9ydCB7IGRlZmF1bHRJbmZvUmVzb2x2ZXJDb25maWcgfSBmcm9tICdAaW90aXplL2lvbmljL2NvbmZpZyc7XG5pbXBvcnQgeyBEZXZpY2VTY2FubmVyLCBEZXZpY2VTY2FubmVyT3B0aW9ucyB9IGZyb20gJ0Bpb3RpemUvdGFwL3NjYW5uZXIvYXBpJztcbmltcG9ydCB7IG5ldmVyLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQkxFU2Nhbm5lclRlc3RpbmdTZXJ2aWNlIH0gZnJvbSAnLi9ibGUtc2Nhbm5lci10ZXN0aW5nLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQcm90b2NvbEZhY3RvcnlUZXN0aW5nU2VydmljZSBhcyBQcm90b2NvbEZhY3RvcnlUZXN0aW5nU2VydmljZUNsYXNzIH0gZnJvbSAnLi9wcm90b2NvbC1mYWN0b3J5LXRlc3Rpbmcuc2VydmljZSc7XG5jbGFzcyBTY2FubmVyTm90QXZhaWxhYmxlIGltcGxlbWVudHMgRGV2aWNlU2Nhbm5lcjxhbnk+IHtcbiAgc2Nhbm5pbmcgPSBvZihmYWxzZSk7XG4gIGlzU2Nhbm5pbmcgPSBmYWxzZTtcbiAgcmVzdWx0cyA9IG5ldmVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG1lc3NhZ2U6IHN0cmluZykge31cblxuICBzdGFydChvcHRpb24/OiBEZXZpY2VTY2FubmVyT3B0aW9ucykge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGlzLm1lc3NhZ2UpO1xuICB9XG5cbiAgc3RvcCgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhpcy5tZXNzYWdlKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgUHJvdG9jb2xGYWN0b3J5VGVzdGluZ1NlcnZpY2VQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogUHJvdG9jb2xGYWN0b3J5U2VydmljZSxcbiAgdXNlQ2xhc3M6IFByb3RvY29sRmFjdG9yeVRlc3RpbmdTZXJ2aWNlQ2xhc3MsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2Nhbm5lck5vdEF2YWlsYWJsZUZhY3RvcnkobmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGZhY3RvcnkgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2Nhbm5lciA9IG5ldyBTY2FubmVyTm90QXZhaWxhYmxlKFxuICAgICAgYCR7bmFtZX0gc2Nhbm5lciBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHRlc3RgXG4gICAgKTtcbiAgICByZXR1cm4gc2Nhbm5lcjtcbiAgfTtcbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbmNsYXNzIEV4ZWN1dGVUYXBBY3Rpb25UZXN0aW5nU2VydmljZVxuICBpbXBsZW1lbnRzIEV4ZWN1dGVUYXBBY3Rpb25TZXJ2aWNlSW50ZXJmYWNlXG57XG4gIGFzeW5jIGV4ZWN1dGVUYXBBY3Rpb248VD4oY2FsbGFibGU6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gYXdhaXQgY2FsbGFibGUoKTtcbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBwcm92aWRlcnM6IFtcbiAgICBCTEVTY2FubmVyVGVzdGluZ1NlcnZpY2UsXG4gICAgUHJvdG9jb2xGYWN0b3J5VGVzdGluZ1NlcnZpY2VQcm92aWRlcixcbiAgICB7XG4gICAgICBwcm92aWRlOiBUQVBfSU5GT19SRVNPTFZFUl9DT05GSUcsXG4gICAgICB1c2VWYWx1ZTogZGVmYXVsdEluZm9SZXNvbHZlckNvbmZpZyxcbiAgICB9LFxuICAgIE5GQyxcbiAgICB7XG4gICAgICBwcm92aWRlOiBUQVBfQ09OTkVDVElPTl9PUFRJT05TX1BST1ZJREVSLFxuICAgICAgdXNlVmFsdWU6IDxUYXBDb25uZWN0aW9uT3B0aW9ucz57XG4gICAgICAgIGVuY3J5cHRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgbmZjUGFpcmluZzogZmFsc2UsXG4gICAgICAgIHJlZnJlc2hTZXNzaW9uU3RhdGU6IHRydWUsXG4gICAgICAgIHN3aXRjaFByb3RvY29sOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBUQVBfV0lGSV9TQ0FOTkVSLFxuICAgICAgdXNlRmFjdG9yeTogc2Nhbm5lck5vdEF2YWlsYWJsZUZhY3RvcnkoJ1dpLUZpJyksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBUQVBfQkxFX1NDQU5ORVIsXG4gICAgICB1c2VDbGFzczogQkxFU2Nhbm5lclRlc3RpbmdTZXJ2aWNlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogVEFQX05FVFdPUktfU0NBTk5FUixcbiAgICAgIHVzZUZhY3Rvcnk6IHNjYW5uZXJOb3RBdmFpbGFibGVGYWN0b3J5KCdOZXR3b3JrJyksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBUQVBfRVhFQ1VURV9UQVBfQUNUSU9OX1NFUlZJQ0UsXG4gICAgICB1c2VDbGFzczogRXhlY3V0ZVRhcEFjdGlvblRlc3RpbmdTZXJ2aWNlLFxuICAgIH0sXG4gICAgVGFwQWRtaW5pc3RyYXRpb25TZXJ2aWNlLFxuICBdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJvdXRlclRlc3RpbmdNb2R1bGUsXG4gICAgVGFza01hbmFnZXJVaU1vZHVsZSxcbiAgICBMaWJDb21tb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIElvdGl6ZUlvbmljVGVzdGluZ01vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM/OiB7XG4gICAgcGxhdGZvcm06IHN0cmluZztcbiAgfSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SW90aXplSW9uaWNUZXN0aW5nTW9kdWxlPiB7XG4gICAgLy8gY29uc3QgcHJvdmlkZXJzOiBQcm92aWRlcltdID0gW107XG4gICAgY29uc3Qgb3ZlcndyaXRlc1Byb3ZpZGVzOiBQcm92aWRlcltdID0gW107XG4gICAgaWYgKG9wdGlvbnM/LnBsYXRmb3JtKSB7XG4gICAgICBvdmVyd3JpdGVzUHJvdmlkZXMucHVzaCh7XG4gICAgICAgIHByb3ZpZGU6IFBsYXRmb3JtLFxuICAgICAgICB1c2VGYWN0b3J5OiAoZG9jOiBhbnksIG5nWm9uZTogTmdab25lKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBUZXN0aW5nUGxhdGZvcm0oZG9jLCBuZ1pvbmUsIG9wdGlvbnM/LnBsYXRmb3JtKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVwczogW0RPQ1VNRU5ULCBOZ1pvbmVdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBJb3RpemVJb25pY1Rlc3RpbmdNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLy8gLi4ucHJvdmlkZXJzLFxuICAgICAgICAuLi5vdmVyd3JpdGVzUHJvdmlkZXMsXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgVGVzdGluZ1BsYXRmb3JtIGV4dGVuZHMgUGxhdGZvcm0ge1xuICBjb25zdHJ1Y3Rvcihkb2M6IGFueSwgem9uZTogTmdab25lLCBwdWJsaWMgcGxhdGZvcm1OYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihkb2MsIHpvbmUpO1xuICB9XG5cbiAgaXMocGxhdGZvcm1OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcGxhdGZvcm1OYW1lID09PSB0aGlzLnBsYXRmb3JtTmFtZTtcbiAgfVxufVxuIl19