{"version":3,"file":"universis-common-testing.mjs","sources":["../../testing/src/api-testing-controller.service.ts","../../testing/src/api-testing.interceptor.ts","../../testing/src/api-testing.module.ts","../../testing/src/testing-configuration.service.ts","../../testing/src/public_api.ts","../../testing/src/universis-common-testing.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {RequestMatch, TestRequest} from '@angular/common/http/testing';\nimport {HttpRequest} from '@angular/common/http';\n\n\n@Injectable()\nexport class ApiTestingController {\n    private _match: RequestMatch | any;\n    private readonly matches: Map<RequestMatch, (request: TestRequest) => void>;\n    constructor() {\n        // initialize map\n        this.matches = new Map<RequestMatch, (request: TestRequest) => void>();\n    }\n\n    /**\n     * Prepares a request mapper based on the given request match\n     * @param match\n     */\n    match(match: RequestMatch): ApiTestingController {\n        // set temp request and prepare to get request mapper\n        this._match = match;\n        return this;\n    }\n\n    /**\n     * Maps a request (based on an in-process request match)\n     * with an instance of TestRequest class\n     * @param mapper\n     */\n    map(mapper: (request: TestRequest) => void): ApiTestingController {\n        if (this._match != null) {\n            // search if match.url already exists\n            const keys = Array.from(this.matches.keys());\n            // find key by method and url\n            const key = keys.find(value => {\n                return value.method === this._match.method && value.url === this._match.url;\n            });\n            if (key) {\n                // update existing item\n                this.matches.set(key, mapper);\n            } else {\n                // add new\n                this.matches.set(this._match, mapper);\n            }\n            this._match = null;\n            return this;\n        }\n        throw new TypeError('Request match cannot be empty at this context. ' +\n            'Call CommonTestHttpController.match() first.');\n    }\n\n    /**\n     * Finds a request mapper based on the given request match\n     * @param req\n     */\n    find(req: HttpRequest<any>): ((request: TestRequest) => void) | undefined {\n        // get keys\n        const keys = Array.from(this.matches.keys());\n        // find key by method and url\n        const key = keys.find(value => {\n            return value.method === req.method && value.url === req.url;\n        });\n        // and return request mapper if any\n        if (key) {\n            return this.matches.get(key);\n        }\n        return;\n    }\n}\n","import {HttpEvent, HttpEventType, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {TestRequest} from '@angular/common/http/testing';\nimport {ApiTestingController} from './api-testing-controller.service';\n\nexport class ApiTestingInterceptor implements HttpInterceptor {\n\n    constructor(private httpController: ApiTestingController) {\n        //\n    }\n\n    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n        const requestMapper = this.httpController.find(req);\n        if (requestMapper == null) {\n            return next.handle(req);\n        }\n        return new Observable((observer) => {\n            // create an instance of test request\n            const testReq = new TestRequest(req, observer);\n            // call request mapper\n            requestMapper.call(null, testReq);\n            // finalize\n            return observer.next({ type: HttpEventType.Sent });\n        });\n    }\n}\n","import {ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport {ApiTestingController} from './api-testing-controller.service';\nimport {ApiTestingInterceptor} from './api-testing.interceptor';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        HttpClientModule\n    ]\n})\nexport class ApiTestingModule {\n    constructor( @Optional() @SkipSelf() parentModule: ApiTestingModule) {\n        //\n    }\n\n    static forRoot(): ModuleWithProviders<ApiTestingModule> {\n        return {\n            ngModule: ApiTestingModule,\n            providers: [\n                ApiTestingController,\n                {\n                    provide: HTTP_INTERCEPTORS,\n                    useClass: ApiTestingInterceptor,\n                    multi: true,\n                    deps: [ApiTestingController]\n                },\n            ]\n        };\n    }\n}\n\n","\nexport class TestingConfigurationService {\n    public config: any;\n    private currentLang: string;\n    constructor() {\n        this.config = {\n            settings: {\n                localization: {\n                    cultures: [ 'en', 'el' ],\n                    default: 'el'\n                }\n            }\n        };\n        this.currentLang = this.config.settings.localization.default;\n    }\n\n    get settings(): any {\n        return this.config.settings;\n    }\n\n    getCurrentLang(): string {\n        return this.currentLang;\n    }\n\n    setCurrentLang(lang: string) {\n        this.currentLang = lang;\n    }\n}\n","// testing module\n\nexport { ApiTestingController } from './api-testing-controller.service';\nexport { ApiTestingInterceptor } from './api-testing.interceptor';\nexport { ApiTestingModule } from './api-testing.module';\nexport { TestingConfigurationService } from './testing-configuration.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}