From d527b1ddfc5aad799f28eb04e6be0f78beef373c Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Thu, 13 Jul 2023 09:02:38 +0300 Subject: [PATCH 01/11] Add engine and queries section in the template. --- .../add-polling-source-form.types.ts | 6 + .../add-polling-source.component.html | 20 ++-- .../add-polling-source.component.ts | 65 ++++++----- .../preprocess-step.component.html | 30 ++++- .../preprocess-step.component.sass | 2 + .../preprocess-step.component.ts | 108 +++++++++++++++++- .../engine-section.component.spec.ts | 20 ++-- .../engine-section.component.ts | 19 ++- .../queries-section.component.html | 2 +- .../queries-section.component.ts | 17 ++- .../components/set-transform/mock.data.ts | 1 + .../set-transform.component.html | 4 +- 12 files changed, 231 insertions(+), 63 deletions(-) diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts index 94d3343d4..58a0ed31e 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts @@ -1,3 +1,5 @@ +import { Transform } from "src/app/api/kamu.graphql.interface"; + /* eslint-disable @typescript-eslint/no-explicit-any */ export interface JsonFormValidators { required?: boolean; @@ -113,6 +115,10 @@ export interface EditFormType { primaryKey?: string[]; compareColumns?: string[]; }; + preprocess?: Transform & { + kind: PreprocessKind.SQL; + query?: string; + }; } export interface EditFormParseType { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html index 0a3eb8bda..5a60160fb 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html @@ -47,9 +47,7 @@ > @@ -73,18 +71,17 @@ [eventYamlByHash]="eventYamlByHash" > - + +
{{ pollingSourceForm.value | json }}
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts index 783118cd4..4c1ab5649 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts @@ -81,6 +81,11 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { read: this.fb.group({ kind: [this.READ_DEFAULT_KIND], }), + preprocess: this.fb.group({ + kind: [this.DEFAULT_PREPROCESS_KIND], + engine: [], + queries: this.fb.array([]), + }), merge: this.fb.group({ kind: [this.MERGE_DEFAULT_KIND], }), @@ -104,37 +109,37 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { ) as FormGroup; } - public onCheckedPrepareStep(event: Event): void { - const input = event.target as HTMLInputElement; - if (input.checked) { - this.pollingSourceForm.addControl( - SetPollingSourceSection.PREPARE, - this.fb.group({ - kind: this.DEFAULT_PREPARE_KIND, - }), - ); - } else { - this.pollingSourceForm.removeControl( - SetPollingSourceSection.PREPARE, - ); - } - } + // public onCheckedPrepareStep(event: Event): void { + // const input = event.target as HTMLInputElement; + // if (input.checked) { + // this.pollingSourceForm.addControl( + // SetPollingSourceSection.PREPARE, + // this.fb.group({ + // kind: this.DEFAULT_PREPARE_KIND, + // }), + // ); + // } else { + // this.pollingSourceForm.removeControl( + // SetPollingSourceSection.PREPARE, + // ); + // } + // } - public onCheckedPreprocessStep(event: Event): void { - const input = event.target as HTMLInputElement; - if (input.checked) { - this.pollingSourceForm.addControl( - SetPollingSourceSection.PREPROCESS, - this.fb.group({ - kind: this.DEFAULT_PREPROCESS_KIND, - }), - ); - } else { - this.pollingSourceForm.removeControl( - SetPollingSourceSection.PREPROCESS, - ); - } - } + // public onCheckedPreprocessStep(event: Event): void { + // const input = event.target as HTMLInputElement; + // if (input.checked) { + // this.pollingSourceForm.addControl( + // SetPollingSourceSection.PREPROCESS, + // this.fb.group({ + // kind: this.DEFAULT_PREPROCESS_KIND, + // }), + // ); + // } else { + // this.pollingSourceForm.removeControl( + // SetPollingSourceSection.PREPROCESS, + // ); + // } + // } constructor( private fb: FormBuilder, diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html index 377d84c3a..952b567fa 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html @@ -1 +1,29 @@ -

preprocess-step works!

+
+

Preprocess

+
+
+ + +
+
+ +
+ +
+
+ +
+
+
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.sass b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.sass index e69de29bb..b6ba2029e 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.sass +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.sass @@ -0,0 +1,2 @@ +.container-queries + margin: 50px 50px 0 diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts index cb6bf82e1..ac00d4bde 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts @@ -1,4 +1,24 @@ -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { + ChangeDetectionStrategy, + Component, + Input, + OnInit, +} from "@angular/core"; +import { + ControlContainer, + FormArray, + FormBuilder, + FormGroup, + FormGroupDirective, +} from "@angular/forms"; +import { SetPollingSourceSection } from "src/app/shared/shared.types"; +import { + EditFormType, + PreprocessKind, +} from "../../add-polling-source-form.types"; +import { MaybeNull } from "src/app/common/app.types"; +import { EditPollingSourceService } from "../../edit-polling-source.service"; +import { SqlQueryStep } from "src/app/api/kamu.graphql.interface"; @Component({ selector: "app-preprocess-step", @@ -6,4 +26,88 @@ import { ChangeDetectionStrategy, Component } from "@angular/core"; styleUrls: ["./preprocess-step.component.sass"], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class PreprocessStepComponent {} +export class PreprocessStepComponent implements OnInit { + public isAddPreprocessStep = false; + @Input() public pollingSourceForm: FormGroup; + @Input() public eventYamlByHash: MaybeNull = null; + public selectedEngine: string; + public setPollingSourceEvent: MaybeNull = null; + public queries: Omit[] = []; + private readonly DEFAULT_PREPROCESS_KIND = PreprocessKind.SQL; + + constructor( + private fb: FormBuilder, + private editService: EditPollingSourceService, + ) {} + + ngOnInit(): void { + if (this.eventYamlByHash) { + this.setPollingSourceEvent = this.editService.parseEventFromYaml( + this.eventYamlByHash, + ); + if (this.setPollingSourceEvent.preprocess?.engine) { + this.isAddPreprocessStep = true; + this.initDefaultQueriesSection( + this.setPollingSourceEvent.preprocess.query, + ); + this.preprocessForm.patchValue({ + engine: this.setPollingSourceEvent.preprocess.engine, + }); + + if (this.preprocessQueries.length == 0) { + this.preprocessQueries.push( + this.fb.group({ + alias: "", + query: this.setPollingSourceEvent.preprocess.query, + }), + ); + } + } else { + this.initDefaultQueriesSection(); + } + } + } + + public get preprocessForm(): FormGroup { + return this.pollingSourceForm.get( + SetPollingSourceSection.PREPROCESS, + ) as FormGroup; + } + + public get preprocessQueries(): FormArray { + return this.pollingSourceForm.get("preprocess.queries") as FormArray; + } + + public onCheckedPreprocessStep(event: Event): void { + const input = event.target as HTMLInputElement; + if (input.checked) { + this.pollingSourceForm.addControl( + SetPollingSourceSection.PREPROCESS, + this.fb.group({ + kind: this.DEFAULT_PREPROCESS_KIND, + engine: "", + }), + ); + if (this.setPollingSourceEvent?.preprocess) { + this.preprocessForm.patchValue({ + engine: this.setPollingSourceEvent.preprocess.engine, + }); + } + } else { + this.pollingSourceForm.removeControl( + SetPollingSourceSection.PREPROCESS, + ); + } + } + + public onSelectEngine(engine: string): void { + this.selectedEngine = engine.toUpperCase(); + this.preprocessForm.patchValue({ + engine: engine.toLowerCase(), + }); + } + + private initDefaultQueriesSection(query = ""): void { + this.queries = [...this.queries, { alias: "", query }]; + } +} diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts index 97ed9fa7d..cfbd8e158 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts @@ -54,14 +54,14 @@ describe("EngineSectionComponent", () => { flush(); })); - it("should check init engine and image when currentSetTransformEvent is not null", fakeAsync(() => { - component.currentSetTransformEvent = mockCurrentSetTransform; - fixture.detectChanges(); - component.ngOnInit(); - tick(); - expect(component.selectedEngine).toBe( - mockCurrentSetTransform.transform.engine.toUpperCase(), - ); - flush(); - })); + // it("should check init engine and image when currentSetTransformEvent is not null", fakeAsync(() => { + // component.currentSetTransformEvent = mockCurrentSetTransform; + // fixture.detectChanges(); + // component.ngOnInit(); + // tick(); + // expect(component.selectedEngine).toBe( + // mockCurrentSetTransform.transform.engine.toUpperCase(), + // ); + // flush(); + // })); }); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts index 571ccbec6..ebe107132 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts @@ -7,9 +7,17 @@ import { OnInit, Output, } from "@angular/core"; -import { EngineDesc, EnginesQuery } from "src/app/api/kamu.graphql.interface"; +import { + ControlContainer, + FormGroup, + FormGroupDirective, +} from "@angular/forms"; +import { + EngineDesc, + EnginesQuery, + Transform, +} from "src/app/api/kamu.graphql.interface"; import { MaybeNull } from "src/app/common/app.types"; -import { SetTransFormYamlType } from "../../set-transform.types"; import { BaseComponent } from "src/app/common/base.component"; import { EngineService } from "src/app/services/engine.service"; @@ -21,7 +29,7 @@ import { EngineService } from "src/app/services/engine.service"; }) export class EngineSectionComponent extends BaseComponent implements OnInit { @Input() public knownEngines: MaybeNull; - @Input() public currentSetTransformEvent: MaybeNull; + @Input() public currentSetTransformEvent: Transform | undefined; @Input() public selectedEngine: string; @Output() public onEmitSelectedEngine: EventEmitter = new EventEmitter(); @@ -64,9 +72,8 @@ export class EngineSectionComponent extends BaseComponent implements OnInit { } private initCurrentEngine(): void { - if (this.currentSetTransformEvent) { - const currentEngine: string = - this.currentSetTransformEvent.transform.engine; + if (this.currentSetTransformEvent?.engine) { + const currentEngine: string = this.currentSetTransformEvent.engine; this.selectedEngine = currentEngine.toUpperCase(); this.onSelectType(); } diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.html b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.html index 3652c7891..2752cabee 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.html @@ -33,7 +33,7 @@ > -
+
From 8619f30d76938cbbb8a64fd98ccebb273629010f Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Thu, 13 Jul 2023 17:38:03 +0300 Subject: [PATCH 02/11] Add functionality for preprocess step. --- .../add-polling-source-form.types.ts | 7 +- .../add-polling-source.component.html | 38 +------ .../add-polling-source.component.ts | 53 +++------ .../preprocess-step.component.html | 8 +- .../preprocess-step.component.ts | 107 ++++++++---------- .../engine-section.component.spec.ts | 20 ++-- .../engine-section.component.ts | 16 +-- .../queries-section.component.ts | 17 +-- .../services/templates-yaml-events.service.ts | 18 +++ 9 files changed, 111 insertions(+), 173 deletions(-) diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts index 58a0ed31e..2b6e52726 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts @@ -1,4 +1,4 @@ -import { Transform } from "src/app/api/kamu.graphql.interface"; +import { SqlQueryStep, Transform } from "src/app/api/kamu.graphql.interface"; /* eslint-disable @typescript-eslint/no-explicit-any */ export interface JsonFormValidators { @@ -131,3 +131,8 @@ export interface NameValue { name: string; value: string; } + +export interface PreprocessStepValue { + engine: string; + queries: Omit[]; +} diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html index 5a60160fb..a2ba6a5e8 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html @@ -1,39 +1,5 @@
-
@@ -81,6 +47,9 @@
-
{{ pollingSourceForm.value | json }}
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts index 4c1ab5649..5317d7923 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts @@ -6,6 +6,7 @@ import { MergeKind, PrepareKind, PreprocessKind, + PreprocessStepValue, } from "./add-polling-source-form.types"; import { FinalYamlModalComponent } from "../final-yaml-modal/final-yaml-modal.component"; import { @@ -51,12 +52,16 @@ import { SupportedEvents } from "src/app/dataset-block/metadata-block/components export class AddPollingSourceComponent extends BaseComponent implements OnInit { public currentStep: SetPollingSourceSection = SetPollingSourceSection.FETCH; public steps: typeof SetPollingSourceSection = SetPollingSourceSection; - public isAddPrepareStep = false; - public isAddPreprocessStep = false; + + public isShowPreprocessStep = false; public errorMessage = ""; public history: DatasetHistoryUpdate; public eventYamlByHash: MaybeNull; public datasetKind: DatasetKind; + public preprocessStepValue: PreprocessStepValue = { + engine: "", + queries: [], + }; // -------------------------------- private readonly DEFAULT_PREPARE_KIND = PrepareKind.PIPE; @@ -81,11 +86,6 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { read: this.fb.group({ kind: [this.READ_DEFAULT_KIND], }), - preprocess: this.fb.group({ - kind: [this.DEFAULT_PREPROCESS_KIND], - engine: [], - queries: this.fb.array([]), - }), merge: this.fb.group({ kind: [this.MERGE_DEFAULT_KIND], }), @@ -109,38 +109,6 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { ) as FormGroup; } - // public onCheckedPrepareStep(event: Event): void { - // const input = event.target as HTMLInputElement; - // if (input.checked) { - // this.pollingSourceForm.addControl( - // SetPollingSourceSection.PREPARE, - // this.fb.group({ - // kind: this.DEFAULT_PREPARE_KIND, - // }), - // ); - // } else { - // this.pollingSourceForm.removeControl( - // SetPollingSourceSection.PREPARE, - // ); - // } - // } - - // public onCheckedPreprocessStep(event: Event): void { - // const input = event.target as HTMLInputElement; - // if (input.checked) { - // this.pollingSourceForm.addControl( - // SetPollingSourceSection.PREPROCESS, - // this.fb.group({ - // kind: this.DEFAULT_PREPROCESS_KIND, - // }), - // ); - // } else { - // this.pollingSourceForm.removeControl( - // SetPollingSourceSection.PREPROCESS, - // ); - // } - // } - constructor( private fb: FormBuilder, private createDatasetService: AppDatasetCreateService, @@ -194,6 +162,9 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { SetPollingSource, "__typename" >, + this.isShowPreprocessStep + ? this.preprocessStepValue + : null, ), ) .subscribe(), @@ -224,11 +195,15 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { SetPollingSource, "__typename" >, + this.isShowPreprocessStep ? this.preprocessStepValue : null, ); (modalRef.componentInstance as FinalYamlModalComponent).datasetInfo = this.getDatasetInfoFromUrl(); } + public onShowPreprcessStep(showPreprocessStep: boolean): void { + this.isShowPreprocessStep = showPreprocessStep; + } private getDatasetKind(): void { this.trackSubscription( this.editService.onKindChanges.subscribe((kind: DatasetKind) => { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html index 952b567fa..8b3fd1be8 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html @@ -5,24 +5,24 @@

Preprocess

- +
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts index ac00d4bde..3c88ed631 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts @@ -1,24 +1,22 @@ import { ChangeDetectionStrategy, Component, + EventEmitter, Input, OnInit, + Output, } from "@angular/core"; -import { - ControlContainer, - FormArray, - FormBuilder, - FormGroup, - FormGroupDirective, -} from "@angular/forms"; -import { SetPollingSourceSection } from "src/app/shared/shared.types"; +import { FormGroup } from "@angular/forms"; import { EditFormType, - PreprocessKind, + PreprocessStepValue, } from "../../add-polling-source-form.types"; import { MaybeNull } from "src/app/common/app.types"; import { EditPollingSourceService } from "../../edit-polling-source.service"; -import { SqlQueryStep } from "src/app/api/kamu.graphql.interface"; +import { ActivatedRoute, ParamMap } from "@angular/router"; +import { requireValue } from "src/app/common/app.helpers"; +import { DatasetInfo } from "src/app/interface/navigation.interface"; +import ProjectLinks from "src/app/project-links"; @Component({ selector: "app-preprocess-step", @@ -27,17 +25,16 @@ import { SqlQueryStep } from "src/app/api/kamu.graphql.interface"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class PreprocessStepComponent implements OnInit { - public isAddPreprocessStep = false; + @Input() public isShowPreprocessStep: boolean; @Input() public pollingSourceForm: FormGroup; @Input() public eventYamlByHash: MaybeNull = null; - public selectedEngine: string; + @Input() public preprocessValue: PreprocessStepValue; + @Output() public showPreprcessStepEmitter = new EventEmitter(); public setPollingSourceEvent: MaybeNull = null; - public queries: Omit[] = []; - private readonly DEFAULT_PREPROCESS_KIND = PreprocessKind.SQL; constructor( - private fb: FormBuilder, private editService: EditPollingSourceService, + private activatedRoute: ActivatedRoute, ) {} ngOnInit(): void { @@ -45,69 +42,59 @@ export class PreprocessStepComponent implements OnInit { this.setPollingSourceEvent = this.editService.parseEventFromYaml( this.eventYamlByHash, ); - if (this.setPollingSourceEvent.preprocess?.engine) { - this.isAddPreprocessStep = true; - this.initDefaultQueriesSection( - this.setPollingSourceEvent.preprocess.query, - ); - this.preprocessForm.patchValue({ - engine: this.setPollingSourceEvent.preprocess.engine, - }); - - if (this.preprocessQueries.length == 0) { - this.preprocessQueries.push( - this.fb.group({ - alias: "", - query: this.setPollingSourceEvent.preprocess.query, - }), - ); - } + if (this.setPollingSourceEvent.preprocess) { + this.showPreprcessStepEmitter.emit(true); + this.initExistingQueries(); } else { this.initDefaultQueriesSection(); } } } - public get preprocessForm(): FormGroup { - return this.pollingSourceForm.get( - SetPollingSourceSection.PREPROCESS, - ) as FormGroup; + public onSelectEngine(engine: string): void { + this.preprocessValue.engine = engine; } - public get preprocessQueries(): FormArray { - return this.pollingSourceForm.get("preprocess.queries") as FormArray; + public getDatasetInfoFromUrl(): DatasetInfo { + const paramMap: ParamMap = this.activatedRoute.snapshot.paramMap; + return { + accountName: requireValue( + paramMap.get(ProjectLinks.URL_PARAM_ACCOUNT_NAME), + ), + datasetName: requireValue( + paramMap.get(ProjectLinks.URL_PARAM_DATASET_NAME), + ), + }; } public onCheckedPreprocessStep(event: Event): void { const input = event.target as HTMLInputElement; if (input.checked) { - this.pollingSourceForm.addControl( - SetPollingSourceSection.PREPROCESS, - this.fb.group({ - kind: this.DEFAULT_PREPROCESS_KIND, - engine: "", - }), - ); - if (this.setPollingSourceEvent?.preprocess) { - this.preprocessForm.patchValue({ - engine: this.setPollingSourceEvent.preprocess.engine, - }); - } + this.showPreprcessStepEmitter.emit(true); } else { - this.pollingSourceForm.removeControl( - SetPollingSourceSection.PREPROCESS, - ); + this.showPreprcessStepEmitter.emit(false); } } - public onSelectEngine(engine: string): void { - this.selectedEngine = engine.toUpperCase(); - this.preprocessForm.patchValue({ - engine: engine.toLowerCase(), - }); + private initDefaultQueriesSection(query = ""): void { + if (!this.preprocessValue.queries.length) { + this.preprocessValue.queries.push({ + alias: this.getDatasetInfoFromUrl().datasetName, + query, + }); + } } - private initDefaultQueriesSection(query = ""): void { - this.queries = [...this.queries, { alias: "", query }]; + private initExistingQueries(): void { + if (this.preprocessValue.queries.length === 0) { + if (this.setPollingSourceEvent?.preprocess?.query) { + this.initDefaultQueriesSection( + this.setPollingSourceEvent.preprocess.query, + ); + } else if (this.setPollingSourceEvent?.preprocess?.queries.length) { + this.preprocessValue.queries = + this.setPollingSourceEvent.preprocess.queries; + } + } } } diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts index cfbd8e158..429649a02 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts @@ -54,14 +54,14 @@ describe("EngineSectionComponent", () => { flush(); })); - // it("should check init engine and image when currentSetTransformEvent is not null", fakeAsync(() => { - // component.currentSetTransformEvent = mockCurrentSetTransform; - // fixture.detectChanges(); - // component.ngOnInit(); - // tick(); - // expect(component.selectedEngine).toBe( - // mockCurrentSetTransform.transform.engine.toUpperCase(), - // ); - // flush(); - // })); + it("should check init engine and image when currentSetTransformEvent is not null", fakeAsync(() => { + // component.currentSetTransformEvent = mockCurrentSetTransform; + fixture.detectChanges(); + component.ngOnInit(); + tick(); + expect(component.selectedEngine).toBe( + mockCurrentSetTransform.transform.engine.toUpperCase(), + ); + flush(); + })); }); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts index ebe107132..96ecbab75 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts @@ -7,11 +7,6 @@ import { OnInit, Output, } from "@angular/core"; -import { - ControlContainer, - FormGroup, - FormGroupDirective, -} from "@angular/forms"; import { EngineDesc, EnginesQuery, @@ -62,9 +57,14 @@ export class EngineSectionComponent extends BaseComponent implements OnInit { this.trackSubscription( this.engineService.engines().subscribe((result: EnginesQuery) => { this.knownEngines = result.data.knownEngines; - this.selectedEngine = this.knownEngines[0].name.toUpperCase(); - this.selectedImage = this.knownEngines[0].latestImage; - this.initCurrentEngine(); + if (!this.selectedEngine) { + this.selectedEngine = + this.knownEngines[0].name.toUpperCase(); + this.selectedImage = this.knownEngines[0].latestImage; + this.initCurrentEngine(); + } else { + this.onSelectType(); + } this.onEmitSelectedEngine.emit(this.selectedEngine); this.cdr.detectChanges(); }), diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.ts index f6affe13c..2242d73bf 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.ts @@ -1,15 +1,8 @@ -import { - ChangeDetectionStrategy, - Component, - Input, - OnDestroy, -} from "@angular/core"; +import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; import { SqlQueryStep } from "src/app/api/kamu.graphql.interface"; import * as monaco from "monaco-editor"; import { ViewportScroller } from "@angular/common"; import { sqlEditorOptions } from "src/app/dataset-block/metadata-block/components/event-details/config-editor.events"; -import { MaybeNull } from "src/app/common/app.types"; -import { FormArray, FormControl, FormGroup } from "@angular/forms"; @Component({ selector: "app-queries-section", @@ -19,7 +12,6 @@ import { FormArray, FormControl, FormGroup } from "@angular/forms"; }) export class QueriesSectionComponent { @Input() public queries: Omit[]; - @Input() public preprocessQueries?: MaybeNull; public readonly sqlEditorOptions: monaco.editor.IStandaloneEditorConstructionOptions = sqlEditorOptions; @@ -42,13 +34,6 @@ export class QueriesSectionComponent { alias: "", query: "", }); - this.preprocessQueries?.insert( - 0, - new FormGroup({ - alias: new FormControl(this.queries[0].alias), - query: new FormControl(this.queries[0].query), - }), - ); this.scroll.scrollToPosition([0, 0]); } diff --git a/src/app/services/templates-yaml-events.service.ts b/src/app/services/templates-yaml-events.service.ts index 653967a27..3f19f27e2 100644 --- a/src/app/services/templates-yaml-events.service.ts +++ b/src/app/services/templates-yaml-events.service.ts @@ -6,6 +6,10 @@ import { import { Injectable } from "@angular/core"; import { MaybeNull } from "../common/app.types"; import { stringify } from "yaml"; +import { + PreprocessKind, + PreprocessStepValue, +} from "../dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types"; @Injectable({ providedIn: "root", @@ -52,11 +56,25 @@ export class TemplatesYamlEventsService { public buildYamlSetPollingSourceEvent( params: Omit, + preprocessStepValue: MaybeNull, ): string { this.initialTemplate.content = { kind: "setPollingSource", ...params, }; + if ( + preprocessStepValue?.queries.length && + preprocessStepValue.queries[0].query + ) { + this.initialTemplate.content = { + ...this.initialTemplate.content, + preprocess: { + kind: PreprocessKind.SQL, + engine: preprocessStepValue.engine.toLowerCase(), + queries: preprocessStepValue.queries, + }, + }; + } return stringify(this.initialTemplate); } From ee61cfd5caa041e7892d97a90217cd755de52516 Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Fri, 14 Jul 2023 13:32:47 +0300 Subject: [PATCH 03/11] Fix unit tests. --- .../add-polling-source.component.html | 7 +++-- .../add-polling-source.component.ts | 9 +++--- .../preprocess-step.component.html | 4 +-- .../preprocess-step.component.spec.ts | 30 +++++++++++++++++++ .../preprocess-step.component.ts | 14 +++------ .../engine-section.component.spec.ts | 11 ++++--- .../engine-section.component.ts | 5 ++-- .../components/set-transform/mock.data.ts | 10 +++---- 8 files changed, 60 insertions(+), 30 deletions(-) diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html index a2ba6a5e8..07fcc03af 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html @@ -45,11 +45,12 @@
; @@ -162,7 +162,7 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { SetPollingSource, "__typename" >, - this.isShowPreprocessStep + this.showPreprocessStep ? this.preprocessStepValue : null, ), @@ -195,15 +195,16 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { SetPollingSource, "__typename" >, - this.isShowPreprocessStep ? this.preprocessStepValue : null, + this.showPreprocessStep ? this.preprocessStepValue : null, ); (modalRef.componentInstance as FinalYamlModalComponent).datasetInfo = this.getDatasetInfoFromUrl(); } public onShowPreprcessStep(showPreprocessStep: boolean): void { - this.isShowPreprocessStep = showPreprocessStep; + this.showPreprocessStep = showPreprocessStep; } + private getDatasetKind(): void { this.trackSubscription( this.editService.onKindChanges.subscribe((kind: DatasetKind) => { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html index 8b3fd1be8..72ea4caa1 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html @@ -5,14 +5,14 @@

Preprocess

- +
{ let component: PreprocessStepComponent; @@ -9,6 +13,32 @@ describe("PreprocessStepComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [PreprocessStepComponent], + imports: [ + ReactiveFormsModule, + ApolloModule, + ApolloTestingModule, + FormsModule, + ], + providers: [ + Apollo, + { + provide: ActivatedRoute, + useValue: { + snapshot: { + paramMap: { + get: (key: string) => { + switch (key) { + case "accountName": + return "accountName"; + case "datasetName": + return "datasetName"; + } + }, + }, + }, + }, + }, + ], }).compileComponents(); fixture = TestBed.createComponent(PreprocessStepComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts index 3c88ed631..548dac8bb 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts @@ -6,7 +6,6 @@ import { OnInit, Output, } from "@angular/core"; -import { FormGroup } from "@angular/forms"; import { EditFormType, PreprocessStepValue, @@ -25,11 +24,10 @@ import ProjectLinks from "src/app/project-links"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class PreprocessStepComponent implements OnInit { - @Input() public isShowPreprocessStep: boolean; - @Input() public pollingSourceForm: FormGroup; + @Input() public showPreprocessStep: boolean; @Input() public eventYamlByHash: MaybeNull = null; @Input() public preprocessValue: PreprocessStepValue; - @Output() public showPreprcessStepEmitter = new EventEmitter(); + @Output() public showPreprocessStepEmitter = new EventEmitter(); public setPollingSourceEvent: MaybeNull = null; constructor( @@ -43,7 +41,7 @@ export class PreprocessStepComponent implements OnInit { this.eventYamlByHash, ); if (this.setPollingSourceEvent.preprocess) { - this.showPreprcessStepEmitter.emit(true); + this.showPreprocessStepEmitter.emit(true); this.initExistingQueries(); } else { this.initDefaultQueriesSection(); @@ -69,11 +67,7 @@ export class PreprocessStepComponent implements OnInit { public onCheckedPreprocessStep(event: Event): void { const input = event.target as HTMLInputElement; - if (input.checked) { - this.showPreprcessStepEmitter.emit(true); - } else { - this.showPreprcessStepEmitter.emit(false); - } + this.showPreprocessStepEmitter.emit(input.checked); } private initDefaultQueriesSection(query = ""): void { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts index 429649a02..1348fdbb8 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts @@ -13,6 +13,7 @@ import { of } from "rxjs"; import { mockCurrentSetTransform, mockEngines } from "../../mock.data"; import { FormsModule } from "@angular/forms"; import { MatDividerModule } from "@angular/material/divider"; +import { mockSetPollingSourceEvent } from "src/app/dataset-block/metadata-block/components/event-details/mock.events"; describe("EngineSectionComponent", () => { let component: EngineSectionComponent; @@ -55,13 +56,15 @@ describe("EngineSectionComponent", () => { })); it("should check init engine and image when currentSetTransformEvent is not null", fakeAsync(() => { - // component.currentSetTransformEvent = mockCurrentSetTransform; + component.currentSetTransformEvent = + mockSetPollingSourceEvent.preprocess; fixture.detectChanges(); component.ngOnInit(); tick(); - expect(component.selectedEngine).toBe( - mockCurrentSetTransform.transform.engine.toUpperCase(), - ); + if (mockSetPollingSourceEvent.preprocess) + expect(component.selectedEngine).toBe( + mockSetPollingSourceEvent.preprocess.engine.toUpperCase(), + ); flush(); })); }); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts index 96ecbab75..d6c95541b 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts @@ -10,7 +10,8 @@ import { import { EngineDesc, EnginesQuery, - Transform, + Maybe, + TransformSql, } from "src/app/api/kamu.graphql.interface"; import { MaybeNull } from "src/app/common/app.types"; import { BaseComponent } from "src/app/common/base.component"; @@ -24,7 +25,7 @@ import { EngineService } from "src/app/services/engine.service"; }) export class EngineSectionComponent extends BaseComponent implements OnInit { @Input() public knownEngines: MaybeNull; - @Input() public currentSetTransformEvent: Transform | undefined; + @Input() public currentSetTransformEvent: Maybe | undefined; @Input() public selectedEngine: string; @Output() public onEmitSelectedEngine: EventEmitter = new EventEmitter(); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/mock.data.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/mock.data.ts index 09fd23dfe..831603264 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/mock.data.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/mock.data.ts @@ -10,6 +10,11 @@ import { SetTransFormYamlType } from "./set-transform.types"; export const mockEngines: EnginesQuery = { data: { knownEngines: [ + { + dialect: QueryDialect.SqlSpark, + latestImage: "ghcr.io/kamu-data/engine-spark:0.1.2", + name: "Spark", + }, { dialect: QueryDialect.SqlDataFusion, latestImage: "ghcr.io/kamu-data/engine-datafusion:0.1.2", @@ -20,11 +25,6 @@ export const mockEngines: EnginesQuery = { latestImage: "ghcr.io/kamu-data/engine-flink:0.1.2", name: "Flink", }, - { - dialect: QueryDialect.SqlSpark, - latestImage: "ghcr.io/kamu-data/engine-spark:0.1.2", - name: "Spark", - }, ], }, }; From 3434ae20830e3f98bfe78fb1fb58bbf3fadf23b9 Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Fri, 14 Jul 2023 15:10:58 +0300 Subject: [PATCH 04/11] Move getDatasetInfoFromUrl() to the BaseComponent. --- src/app/common/base.component.ts | 20 +++++++++++++ src/app/common/base.processing.component.ts | 28 ++++--------------- .../offset-interval-property.component.ts | 16 ----------- .../metadata-block.component.ts | 9 ++---- .../add-polling-source.component.ts | 17 ----------- .../preprocess-step.component.ts | 26 ++++------------- .../engine-section.component.spec.ts | 2 +- .../set-transform/set-transform.component.ts | 18 +----------- src/app/dataset-view/dataset.component.ts | 10 ++----- src/app/search/search.component.ts | 8 +----- 10 files changed, 37 insertions(+), 117 deletions(-) diff --git a/src/app/common/base.component.ts b/src/app/common/base.component.ts index be9bf6241..c04c56411 100644 --- a/src/app/common/base.component.ts +++ b/src/app/common/base.component.ts @@ -1,7 +1,27 @@ +import { inject } from "@angular/core"; +import { ActivatedRoute, ParamMap } from "@angular/router"; +import { DatasetInfo } from "../interface/navigation.interface"; +import ProjectLinks from "../project-links"; +import { requireValue } from "./app.helpers"; import { UnsubscribeOnDestroyAdapter } from "./unsubscribe.ondestroy.adapter"; export abstract class BaseComponent extends UnsubscribeOnDestroyAdapter { + public activatedRoute = inject(ActivatedRoute); + public get searchString(): string { return window.location.search; } + + public getDatasetInfoFromUrl(): DatasetInfo { + const paramMap: ParamMap = this.activatedRoute.snapshot.paramMap; + return { + // Both parameters are mandatory in URL, router would not activate this component otherwise + accountName: requireValue( + paramMap.get(ProjectLinks.URL_PARAM_ACCOUNT_NAME), + ), + datasetName: requireValue( + paramMap.get(ProjectLinks.URL_PARAM_DATASET_NAME), + ), + }; + } } diff --git a/src/app/common/base.processing.component.ts b/src/app/common/base.processing.component.ts index 50e392b82..c668637dc 100644 --- a/src/app/common/base.processing.component.ts +++ b/src/app/common/base.processing.component.ts @@ -6,19 +6,14 @@ import { } from "../dataset-view/dataset-view.interface"; import { searchAdditionalButtonsEnum } from "../search/search.interface"; import { NavigationService } from "./../services/navigation.service"; -import { promiseWithCatch, requireValue } from "./app.helpers"; +import { promiseWithCatch } from "./app.helpers"; import { BaseComponent } from "./base.component"; -import { ActivatedRoute, ParamMap } from "@angular/router"; -import ProjectLinks from "../project-links"; +import { inject } from "@angular/core"; export class BaseProcessingComponent extends BaseComponent { - constructor( - protected navigationService: NavigationService, - protected modalService: ModalService, - protected activatedRoute: ActivatedRoute, - ) { - super(); - } + public navigationService = inject(NavigationService); + public modalService = inject(ModalService); + public showOwnerPage(ownerName: string): void { this.navigationService.navigateToOwnerView(ownerName); } @@ -90,17 +85,4 @@ export class BaseProcessingComponent extends BaseComponent { private onClickDeriveFrom(): void { console.log("onClickDeriveFrom"); } - - public getDatasetInfoFromUrl(): DatasetInfo { - const paramMap: ParamMap = this.activatedRoute.snapshot.paramMap; - return { - // Both parameters are mandatory in URL, router would not activate this component otherwise - accountName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_ACCOUNT_NAME), - ), - datasetName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_DATASET_NAME), - ), - }; - } } diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.ts index 793ea8a38..a5a6a9271 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.ts @@ -8,10 +8,7 @@ import { OnInit, } from "@angular/core"; import { OffsetInterval } from "src/app/api/kamu.graphql.interface"; -import { ActivatedRoute, ParamMap } from "@angular/router"; -import { requireValue } from "src/app/common/app.helpers"; import { DatasetInfo } from "src/app/interface/navigation.interface"; -import ProjectLinks from "src/app/project-links"; import { DatasetViewTypeEnum } from "src/app/dataset-view/dataset-view.interface"; import { DatasetService } from "src/app/dataset-view/dataset.service"; @@ -31,7 +28,6 @@ export class OffsetIntervalPropertyComponent }; private datasetInfo: DatasetInfo = { accountName: "", datasetName: "" }; constructor( - private activatedRoute: ActivatedRoute, private navigationService: NavigationService, private datasetSevice: DatasetService, ) { @@ -67,16 +63,4 @@ export class OffsetIntervalPropertyComponent }, }); } - - private getDatasetInfoFromUrl(): DatasetInfo { - const paramMap: ParamMap = this.activatedRoute.snapshot.paramMap; - return { - accountName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_ACCOUNT_NAME), - ), - datasetName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_DATASET_NAME), - ), - }; - } } diff --git a/src/app/dataset-block/metadata-block/metadata-block.component.ts b/src/app/dataset-block/metadata-block/metadata-block.component.ts index 8aaa6f6c6..c123e16ad 100644 --- a/src/app/dataset-block/metadata-block/metadata-block.component.ts +++ b/src/app/dataset-block/metadata-block/metadata-block.component.ts @@ -15,9 +15,7 @@ import { import { DatasetInfo } from "src/app/interface/navigation.interface"; import { filter, pluck } from "rxjs/operators"; -import { ActivatedRoute, NavigationEnd, Router } from "@angular/router"; -import { ModalService } from "src/app/components/modal/modal.service"; -import { NavigationService } from "src/app/services/navigation.service"; +import { NavigationEnd, Router } from "@angular/router"; import { BlockService } from "./block.service"; import { AppDatasetSubscriptionsService } from "src/app/dataset-view/dataset.subscriptions.service"; import _ from "lodash"; @@ -39,11 +37,8 @@ export class MetadataBlockComponent private appDatasetSubsService: AppDatasetSubscriptionsService, private cdr: ChangeDetectorRef, private router: Router, - navigationService: NavigationService, - modalService: ModalService, - activatedRoute: ActivatedRoute, ) { - super(navigationService, modalService, activatedRoute); + super(); } public datasetInfo: DatasetInfo; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts index d40b65cbc..4a0490ef0 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts @@ -23,10 +23,6 @@ import { import { FormBuilder, FormGroup } from "@angular/forms"; import { AppDatasetCreateService } from "src/app/dataset-create/dataset-create.service"; import { TemplatesYamlEventsService } from "src/app/services/templates-yaml-events.service"; -import { ActivatedRoute, ParamMap } from "@angular/router"; -import { requireValue } from "src/app/common/app.helpers"; -import { DatasetInfo } from "src/app/interface/navigation.interface"; -import ProjectLinks from "src/app/project-links"; import { NgbModal, NgbModalRef } from "@ng-bootstrap/ng-bootstrap"; import { SetPollingSourceSection } from "src/app/shared/shared.types"; import { @@ -113,7 +109,6 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { private fb: FormBuilder, private createDatasetService: AppDatasetCreateService, private yamlEventService: TemplatesYamlEventsService, - private activatedRoute: ActivatedRoute, private modalService: NgbModal, private cdr: ChangeDetectorRef, private processFormService: ProcessFormService, @@ -171,18 +166,6 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { ); } - public getDatasetInfoFromUrl(): DatasetInfo { - const paramMap: ParamMap = this.activatedRoute.snapshot.paramMap; - return { - accountName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_ACCOUNT_NAME), - ), - datasetName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_DATASET_NAME), - ), - }; - } - public onEditYaml(): void { const modalRef: NgbModalRef = this.modalService.open( FinalYamlModalComponent, diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts index 548dac8bb..2f28b73dc 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.ts @@ -12,10 +12,7 @@ import { } from "../../add-polling-source-form.types"; import { MaybeNull } from "src/app/common/app.types"; import { EditPollingSourceService } from "../../edit-polling-source.service"; -import { ActivatedRoute, ParamMap } from "@angular/router"; -import { requireValue } from "src/app/common/app.helpers"; -import { DatasetInfo } from "src/app/interface/navigation.interface"; -import ProjectLinks from "src/app/project-links"; +import { BaseComponent } from "src/app/common/base.component"; @Component({ selector: "app-preprocess-step", @@ -23,17 +20,16 @@ import ProjectLinks from "src/app/project-links"; styleUrls: ["./preprocess-step.component.sass"], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class PreprocessStepComponent implements OnInit { +export class PreprocessStepComponent extends BaseComponent implements OnInit { @Input() public showPreprocessStep: boolean; @Input() public eventYamlByHash: MaybeNull = null; @Input() public preprocessValue: PreprocessStepValue; @Output() public showPreprocessStepEmitter = new EventEmitter(); public setPollingSourceEvent: MaybeNull = null; - constructor( - private editService: EditPollingSourceService, - private activatedRoute: ActivatedRoute, - ) {} + constructor(private editService: EditPollingSourceService) { + super(); + } ngOnInit(): void { if (this.eventYamlByHash) { @@ -53,18 +49,6 @@ export class PreprocessStepComponent implements OnInit { this.preprocessValue.engine = engine; } - public getDatasetInfoFromUrl(): DatasetInfo { - const paramMap: ParamMap = this.activatedRoute.snapshot.paramMap; - return { - accountName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_ACCOUNT_NAME), - ), - datasetName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_DATASET_NAME), - ), - }; - } - public onCheckedPreprocessStep(event: Event): void { const input = event.target as HTMLInputElement; this.showPreprocessStepEmitter.emit(input.checked); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts index 1348fdbb8..0e4d8e052 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts @@ -10,7 +10,7 @@ import { Apollo, ApolloModule } from "apollo-angular"; import { ApolloTestingModule } from "apollo-angular/testing"; import { EngineService } from "src/app/services/engine.service"; import { of } from "rxjs"; -import { mockCurrentSetTransform, mockEngines } from "../../mock.data"; +import { mockEngines } from "../../mock.data"; import { FormsModule } from "@angular/forms"; import { MatDividerModule } from "@angular/material/divider"; import { mockSetPollingSourceEvent } from "src/app/dataset-block/metadata-block/components/event-details/mock.events"; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.ts index db1dde678..253fb28a5 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.ts @@ -20,10 +20,7 @@ import { SqlQueryStep, } from "src/app/api/kamu.graphql.interface"; import { EditSetTransformService } from "./edit-set-transform..service"; -import { DatasetInfo } from "src/app/interface/navigation.interface"; -import { ActivatedRoute, ParamMap } from "@angular/router"; -import { parseCurrentSchema, requireValue } from "src/app/common/app.helpers"; -import ProjectLinks from "src/app/project-links"; +import { parseCurrentSchema } from "src/app/common/app.helpers"; import { DatasetHistoryUpdate } from "src/app/dataset-view/dataset.subscriptions.interface"; import { DatasetNode, SetTransFormYamlType } from "./set-transform.types"; import { FinalYamlModalComponent } from "../final-yaml-modal/final-yaml-modal.component"; @@ -51,7 +48,6 @@ export class SetTransformComponent extends BaseComponent implements OnInit { private datasetService: DatasetService, private cdr: ChangeDetectorRef, private editService: EditSetTransformService, - private activatedRoute: ActivatedRoute, private modalService: NgbModal, private yamlEventService: TemplatesYamlEventsService, private createDatasetService: AppDatasetCreateService, @@ -154,18 +150,6 @@ export class SetTransformComponent extends BaseComponent implements OnInit { ); } - public getDatasetInfoFromUrl(): DatasetInfo { - const paramMap: ParamMap = this.activatedRoute.snapshot.paramMap; - return { - accountName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_ACCOUNT_NAME), - ), - datasetName: requireValue( - paramMap.get(ProjectLinks.URL_PARAM_DATASET_NAME), - ), - }; - } - public onEditYaml(): void { const modalRef: NgbModalRef = this.modalService.open( FinalYamlModalComponent, diff --git a/src/app/dataset-view/dataset.component.ts b/src/app/dataset-view/dataset.component.ts index 1ec3acc3e..6bc38758f 100644 --- a/src/app/dataset-view/dataset.component.ts +++ b/src/app/dataset-view/dataset.component.ts @@ -1,4 +1,3 @@ -import { NavigationService } from "./../services/navigation.service"; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -10,12 +9,10 @@ import { } from "@angular/core"; import { DatasetViewTypeEnum } from "./dataset-view.interface"; import { DatasetService } from "./dataset.service"; -import { ActivatedRoute, NavigationEnd, Router } from "@angular/router"; +import { NavigationEnd, Router } from "@angular/router"; import { Node } from "@swimlane/ngx-graph/lib/models/node.model"; import { filter, tap } from "rxjs/operators"; -import { ModalService } from "../components/modal/modal.service"; import { DatasetBasicsFragment } from "../api/kamu.graphql.interface"; - import ProjectLinks from "../project-links"; import { DatasetInfo } from "../interface/navigation.interface"; import { promiseWithCatch } from "../common/app.helpers"; @@ -49,11 +46,8 @@ export class DatasetComponent private appDatasetService: DatasetService, private router: Router, private cdr: ChangeDetectorRef, - activatedRoute: ActivatedRoute, - navigationService: NavigationService, - modalService: ModalService, ) { - super(navigationService, modalService, activatedRoute); + super(); } public ngOnInit(): void { diff --git a/src/app/search/search.component.ts b/src/app/search/search.component.ts index 704aebf9e..9b313dfc3 100644 --- a/src/app/search/search.component.ts +++ b/src/app/search/search.component.ts @@ -1,9 +1,4 @@ -import { - ActivatedRoute, - NavigationEnd, - Router, - RouterEvent, -} from "@angular/router"; +import { NavigationEnd, Router, RouterEvent } from "@angular/router"; import { SearchService } from "./search.service"; import { DatasetSearchResult, @@ -148,7 +143,6 @@ export class SearchComponent extends BaseComponent implements OnInit { private navigationService: NavigationService, private searchService: SearchService, private router: Router, - private activatedRoute: ActivatedRoute, private cdr: ChangeDetectorRef, ) { super(); From 659971671c5917f8dbb0d54561e5ed5a95ee6d2a Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Fri, 14 Jul 2023 18:55:25 +0300 Subject: [PATCH 05/11] Change template PreprocessStepComponent. --- .../add-polling-source.component.sass | 5 +- .../preprocess-step.component.html | 63 +++++++++++-------- .../preprocess-step.component.sass | 7 ++- .../engine-section.component.html | 6 +- .../search-section.component.html | 2 +- src/styles.sass | 4 +- 6 files changed, 52 insertions(+), 35 deletions(-) diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.sass b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.sass index 88d9a61b0..2c2ec5714 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.sass +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.sass @@ -1,7 +1,8 @@ .layout - max-width: 1000px + max-width: 1200px width: 100% margin-right: auto margin-left: auto - padding-bottom: 100px + padding: 0 30px 100px + position: relative diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html index 72ea4caa1..6440f8cc6 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.html @@ -1,29 +1,40 @@ -
-

Preprocess

-
-
- - -
+

Preprocess

+
+
+ + +
+
+ Enable preprocessing query, if you would like to transform your data + during the ingestion process
- -
- +
+ + +
+
+
+ +
-
- +
+
+ +
- -
+
+
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.sass b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.sass index b6ba2029e..3038fe238 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.sass +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.sass @@ -1,2 +1,7 @@ .container-queries - margin: 50px 50px 0 + margin: 70px 0 0 50px + +.container-engine + margin: 85px 0 0 20px + display: flex + justify-content: center diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.html b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.html index bd096c1fa..2ad5c445d 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.html @@ -1,10 +1,10 @@

Engine

- +
Date: Mon, 17 Jul 2023 12:14:17 +0300 Subject: [PATCH 06/11] Add SharedTestModule. --- .../datasets-tab.component.spec.ts | 2 ++ src/app/common/shared-test.module.ts | 7 ++++++ .../dataset-list-item.component.spec.ts | 2 ++ .../display-time.component.spec.ts | 2 ++ .../block-header.component.spec.ts | 8 ++++++- .../add-data-event.component.spec.ts | 4 ++-- .../block-interval-property.component.spec.ts | 2 ++ .../cache-property.component.spec.ts | 3 ++- .../cards-property.component.spec.ts | 20 +++++++++++++++++ .../command-property.component.spec.ts | 3 ++- ...aset-name-by-id-property.component.spec.ts | 3 ++- .../dataset-name-property.component.spec.ts | 2 ++ .../engine-property.component.spec.ts | 3 ++- .../env-variables-property.component.spec.ts | 3 ++- .../event-time-property.component.spec.ts | 3 ++- .../hash-property.component.spec.ts | 7 +++++- .../link-property.component.spec.ts | 3 ++- .../merge-strategy-property.component.spec.ts | 3 ++- ...offset-interval-property.component.spec.ts | 5 ++--- .../order-property.component.spec.ts | 3 ++- .../owner-property.component.spec.ts | 3 ++- .../schema-property.component.spec.ts | 3 ++- .../separator-property.component.spec.ts | 3 ++- .../simple-property.component.spec.ts | 3 ++- .../size-property.component.spec.ts | 3 ++- .../sql-query-viewer.component.spec.ts | 3 ++- .../step-type-property.component.spec.ts | 5 +++-- ...temporal-tables-property.component.spec.ts | 3 ++- .../time-property.component.spec.ts | 3 ++- .../unsupported-property.component.spec.ts | 3 ++- .../execute-query-event.component.spec.ts | 4 ++-- .../set-info-event.component.spec.ts | 3 ++- .../set-license-event.component.spec.ts | 3 ++- ...set-polling-source-event.component.spec.ts | 3 ++- .../set-transform-event.component.spec.ts | 6 ++--- .../set-vocab-event.component.spec.ts | 3 ++- .../set-watermark-event.component.spec.ts | 8 ++++++- .../event-details.component.spec.ts | 2 ++ .../yaml-view-section.component.spec.ts | 3 ++- .../dataset-create.component.spec.ts | 8 ++++++- .../history-component.spec.ts | 2 ++ .../lineage-component.spec.ts | 2 ++ .../add-polling-source.component.spec.ts | 5 +++-- .../base-step/base-step.component.spec.ts | 2 ++ .../final-yaml-modal.component.spec.ts | 8 ++++++- .../array-keys-field.component.spec.ts | 3 ++- .../cache-field/cache-field.component.spec.ts | 8 ++++++- .../checkbox-field.component.spec.ts | 4 ++-- .../input-field/input-field.component.spec.ts | 3 ++- .../key-value-field.component.spec.ts | 4 ++-- .../order-field/order-field.component.spec.ts | 9 ++++++-- .../schema-field.component.spec.ts | 2 ++ ...select-date-format-field.component.spec.ts | 22 ++++++++++++++++++- .../typeahead-field.component.spec.ts | 20 +++++++++++++++++ .../engine-section.component.spec.ts | 2 ++ .../search-section.component.spec.ts | 2 ++ .../metadata-component.spec.ts | 8 ++++++- .../edit-details-modal.component.spec.ts | 3 ++- .../edit-license-modal.component.spec.ts | 2 ++ .../edit-watermark-modal.component.spec.ts | 3 ++- .../overview-component.spec.ts | 8 ++++++- 61 files changed, 228 insertions(+), 57 deletions(-) create mode 100644 src/app/common/shared-test.module.ts diff --git a/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.spec.ts b/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.spec.ts index b7980cd1d..ad9a61d5d 100644 --- a/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.spec.ts +++ b/src/app/auth/account/additional-components/datasets-tab/datasets-tab.component.spec.ts @@ -11,6 +11,7 @@ import { NgbPopoverModule, NgbRatingModule } from "@ng-bootstrap/ng-bootstrap"; import { DisplayTimeModule } from "src/app/components/display-time/display-time.module"; import { MatChipsModule } from "@angular/material/chips"; import { MatDividerModule } from "@angular/material/divider"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("DatasetsTabComponent", () => { let component: DatasetsTabComponent; @@ -26,6 +27,7 @@ describe("DatasetsTabComponent", () => { MatChipsModule, NgbPopoverModule, MatDividerModule, + SharedTestModule, ], providers: [DatasetApi], declarations: [DatasetsTabComponent, DatasetListItemComponent], diff --git a/src/app/common/shared-test.module.ts b/src/app/common/shared-test.module.ts new file mode 100644 index 000000000..96a72f9da --- /dev/null +++ b/src/app/common/shared-test.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from "@angular/core"; +import { snapshotParamMapMock } from "./base-test.helpers.spec"; + +@NgModule({ + providers: [snapshotParamMapMock], +}) +export class SharedTestModule {} diff --git a/src/app/components/dataset-list-item/dataset-list-item.component.spec.ts b/src/app/components/dataset-list-item/dataset-list-item.component.spec.ts index 5c555da12..3a87371e6 100644 --- a/src/app/components/dataset-list-item/dataset-list-item.component.spec.ts +++ b/src/app/components/dataset-list-item/dataset-list-item.component.spec.ts @@ -10,6 +10,7 @@ import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers import { DisplayTimeModule } from "../display-time/display-time.module"; import { HttpClientTestingModule } from "@angular/common/http/testing"; import { AngularSvgIconModule } from "angular-svg-icon"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("DatasetListItemComponent", () => { let component: DatasetListItemComponent; @@ -28,6 +29,7 @@ describe("DatasetListItemComponent", () => { DisplayTimeModule, AngularSvgIconModule.forRoot(), HttpClientTestingModule, + SharedTestModule, ], }).compileComponents(); diff --git a/src/app/components/display-time/display-time.component.spec.ts b/src/app/components/display-time/display-time.component.spec.ts index 2c0de1015..ea4aab52c 100644 --- a/src/app/components/display-time/display-time.component.spec.ts +++ b/src/app/components/display-time/display-time.component.spec.ts @@ -2,6 +2,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import timekeeper from "timekeeper"; import { DisplayTimeComponent } from "./display-time.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("DisplayTimeComponent", () => { let component: DisplayTimeComponent; @@ -24,6 +25,7 @@ describe("DisplayTimeComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [DisplayTimeComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(DisplayTimeComponent); diff --git a/src/app/dataset-block/metadata-block/components/block-header/block-header.component.spec.ts b/src/app/dataset-block/metadata-block/components/block-header/block-header.component.spec.ts index 4f2039c3d..fe2c50cf7 100644 --- a/src/app/dataset-block/metadata-block/components/block-header/block-header.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/block-header/block-header.component.spec.ts @@ -6,6 +6,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { BlockHeaderComponent } from "./block-header.component"; import { Apollo } from "apollo-angular"; import { MatMenuModule } from "@angular/material/menu"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("BlockHeaderComponent", () => { let component: BlockHeaderComponent; @@ -14,7 +15,12 @@ describe("BlockHeaderComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [BlockHeaderComponent], - imports: [MatMenuModule, MatIconModule, MatDividerModule], + imports: [ + MatMenuModule, + MatIconModule, + MatDividerModule, + SharedTestModule, + ], providers: [Apollo, DatasetApi], }).compileComponents(); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/add-data-event/add-data-event.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/add-data-event/add-data-event.component.spec.ts index 614a69ed3..3da6c06b4 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/add-data-event/add-data-event.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/add-data-event/add-data-event.component.spec.ts @@ -13,7 +13,7 @@ import { HttpClientTestingModule } from "@angular/common/http/testing"; import { TooltipIconComponent } from "../../../tooltip-icon/tooltip-icon.component"; import { MatIconModule } from "@angular/material/icon"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; -import { snapshotParamMapMock } from "src/app/common/base-test.helpers.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("AddDataEventComponent", () => { let component: AddDataEventComponent; @@ -37,7 +37,6 @@ describe("AddDataEventComponent", () => { BlockRowDataComponent, TooltipIconComponent, ], - providers: [snapshotParamMapMock], imports: [ DisplaySizeModule, ApolloModule, @@ -46,6 +45,7 @@ describe("AddDataEventComponent", () => { ToastrModule.forRoot(), AngularSvgIconModule.forRoot(), HttpClientTestingModule, + SharedTestModule, ], }) .overrideComponent(AddDataEventComponent, { diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/block-interval-property/block-interval-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/block-interval-property/block-interval-property.component.spec.ts index c2a671e63..98fd03e1c 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/block-interval-property/block-interval-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/block-interval-property/block-interval-property.component.spec.ts @@ -8,6 +8,7 @@ import { DisplayHashModule } from "src/app/components/display-hash/dispaly-hash. import { ToastrModule } from "ngx-toastr"; import { HttpClientTestingModule } from "@angular/common/http/testing"; import { AngularSvgIconModule } from "angular-svg-icon"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("BlockIntervalPropertyComponent", () => { let component: BlockIntervalPropertyComponent; @@ -23,6 +24,7 @@ describe("BlockIntervalPropertyComponent", () => { ToastrModule.forRoot(), AngularSvgIconModule.forRoot(), HttpClientTestingModule, + SharedTestModule, ], }).compileComponents(); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/cache-property/cache-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/cache-property/cache-property.component.spec.ts index b00b28518..c16e529c8 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/cache-property/cache-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/cache-property/cache-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { CachePropertyComponent } from "./cache-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("CachePropertyComponent", () => { let component: CachePropertyComponent; @@ -9,6 +9,7 @@ describe("CachePropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [CachePropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(CachePropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/cards-property/cards-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/cards-property/cards-property.component.spec.ts index bf3090036..9341e56b9 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/cards-property/cards-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/cards-property/cards-property.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { CardsPropertyComponent } from "./cards-property.component"; +import { ActivatedRoute } from "@angular/router"; describe("CardsPropertyComponent", () => { let component: CardsPropertyComponent; @@ -9,6 +10,25 @@ describe("CardsPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [CardsPropertyComponent], + providers: [ + { + provide: ActivatedRoute, + useValue: { + snapshot: { + paramMap: { + get: (key: string) => { + switch (key) { + case "accountName": + return "accountName"; + case "datasetName": + return "datasetName"; + } + }, + }, + }, + }, + }, + ], }).compileComponents(); fixture = TestBed.createComponent(CardsPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/command-property/command-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/command-property/command-property.component.spec.ts index 395efe5d6..4d7286852 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/command-property/command-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/command-property/command-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { CommandPropertyComponent } from "./command-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("CommandPropertyComponent", () => { let component: CommandPropertyComponent; @@ -9,6 +9,7 @@ describe("CommandPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [CommandPropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(CommandPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-by-id-property/dataset-name-by-id-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-by-id-property/dataset-name-by-id-property.component.spec.ts index 29abaa7f3..b646f9960 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-by-id-property/dataset-name-by-id-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-by-id-property/dataset-name-by-id-property.component.spec.ts @@ -6,6 +6,7 @@ import { DatasetNameByIdPropertyComponent } from "./dataset-name-by-id-property. import { of } from "rxjs"; import { DatasetService } from "src/app/dataset-view/dataset.service"; import { mockDatasetMainDataResponse } from "src/app/search/mock.data"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("DatasetIdAndNamePropertyComponent", () => { let component: DatasetNameByIdPropertyComponent; @@ -20,7 +21,7 @@ describe("DatasetIdAndNamePropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [DatasetNameByIdPropertyComponent], - imports: [ApolloTestingModule], + imports: [ApolloTestingModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(DatasetNameByIdPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-property/dataset-name-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-property/dataset-name-property.component.spec.ts index a49b22770..a408b14d1 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-property/dataset-name-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-property/dataset-name-property.component.spec.ts @@ -2,6 +2,7 @@ import { NavigationService } from "./../../../../../../../services/navigation.se import { ComponentFixture, TestBed } from "@angular/core/testing"; import { DatasetNamePropertyComponent } from "./dataset-name-property.component"; import { DatasetViewTypeEnum } from "src/app/dataset-view/dataset-view.interface"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("DatasetNamePropertyComponent", () => { let component: DatasetNamePropertyComponent; @@ -11,6 +12,7 @@ describe("DatasetNamePropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [DatasetNamePropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(DatasetNamePropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/engine-property/engine-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/engine-property/engine-property.component.spec.ts index 4f4f00013..a7049af80 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/engine-property/engine-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/engine-property/engine-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { EnginePropertyComponent } from "./engine-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("EnginePropertyComponent", () => { let component: EnginePropertyComponent; @@ -9,6 +9,7 @@ describe("EnginePropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [EnginePropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(EnginePropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/env-variables-property/env-variables-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/env-variables-property/env-variables-property.component.spec.ts index fc11eaf8b..d8261e354 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/env-variables-property/env-variables-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/env-variables-property/env-variables-property.component.spec.ts @@ -2,6 +2,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { EnvVariablesPropertyComponent } from "./env-variables-property.component"; import { DynamicTableComponent } from "src/app/components/dynamic-table/dynamic-table.component"; import { MatTableModule } from "@angular/material/table"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("EnvVariablesPropertyComponent", () => { let component: EnvVariablesPropertyComponent; @@ -13,7 +14,7 @@ describe("EnvVariablesPropertyComponent", () => { EnvVariablesPropertyComponent, DynamicTableComponent, ], - imports: [MatTableModule], + imports: [MatTableModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(EnvVariablesPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/event-time-property/event-time-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/event-time-property/event-time-property.component.spec.ts index b504a6dfe..9474c822a 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/event-time-property/event-time-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/event-time-property/event-time-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { EventTimePropertyComponent } from "./event-time-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("EventTimePropertyComponent", () => { let component: EventTimePropertyComponent; @@ -9,6 +9,7 @@ describe("EventTimePropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [EventTimePropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(EventTimePropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/hash-property/hash-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/hash-property/hash-property.component.spec.ts index e09d608cb..f197ff304 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/hash-property/hash-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/hash-property/hash-property.component.spec.ts @@ -2,6 +2,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { HashPropertyComponent } from "./hash-property.component"; import { DisplayHashModule } from "src/app/components/display-hash/dispaly-hash.module"; import { ToastrModule } from "ngx-toastr"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("HashPropertyComponent", () => { let component: HashPropertyComponent; @@ -10,7 +11,11 @@ describe("HashPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [HashPropertyComponent], - imports: [DisplayHashModule, ToastrModule.forRoot()], + imports: [ + DisplayHashModule, + ToastrModule.forRoot(), + SharedTestModule, + ], }).compileComponents(); fixture = TestBed.createComponent(HashPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/link-property/link-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/link-property/link-property.component.spec.ts index 465acc8d4..b1d209016 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/link-property/link-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/link-property/link-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { LinkPropertyComponent } from "./link-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("LinkPropertyComponent", () => { let component: LinkPropertyComponent; @@ -9,6 +9,7 @@ describe("LinkPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [LinkPropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(LinkPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/merge-strategy-property/merge-strategy-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/merge-strategy-property/merge-strategy-property.component.spec.ts index caeb2d3ad..60adace00 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/merge-strategy-property/merge-strategy-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/merge-strategy-property/merge-strategy-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { MergeStrategyPropertyComponent } from "./merge-strategy-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("MergeStrategyPropertyComponent", () => { let component: MergeStrategyPropertyComponent; @@ -9,6 +9,7 @@ describe("MergeStrategyPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [MergeStrategyPropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(MergeStrategyPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.spec.ts index 471ca972f..4be1835f0 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.spec.ts @@ -5,7 +5,7 @@ import { DatasetService } from "src/app/dataset-view/dataset.service"; import { NavigationService } from "src/app/services/navigation.service"; import { of } from "rxjs"; import { mockDatasetMainDataResponse } from "src/app/search/mock.data"; -import { snapshotParamMapMock } from "src/app/common/base-test.helpers.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("OffsetIntervalPropertyComponent", () => { let component: OffsetIntervalPropertyComponent; @@ -16,8 +16,7 @@ describe("OffsetIntervalPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [OffsetIntervalPropertyComponent], - imports: [ApolloTestingModule], - providers: [snapshotParamMapMock], + imports: [ApolloTestingModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(OffsetIntervalPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/order-property/order-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/order-property/order-property.component.spec.ts index 0a1c6ac68..ec83bbd27 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/order-property/order-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/order-property/order-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { OrderPropertyComponent } from "./order-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("OrderPropertyComponent", () => { let component: OrderPropertyComponent; @@ -9,6 +9,7 @@ describe("OrderPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [OrderPropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(OrderPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/owner-property/owner-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/owner-property/owner-property.component.spec.ts index 4fcfbf823..0b15727ba 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/owner-property/owner-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/owner-property/owner-property.component.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { NavigationService } from "src/app/services/navigation.service"; - import { OwnerPropertyComponent } from "./owner-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("OwnerPropertyComponent", () => { let component: OwnerPropertyComponent; @@ -11,6 +11,7 @@ describe("OwnerPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [OwnerPropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(OwnerPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/schema-property/schema-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/schema-property/schema-property.component.spec.ts index c28ae9026..d34abf337 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/schema-property/schema-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/schema-property/schema-property.component.spec.ts @@ -2,6 +2,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { SchemaPropertyComponent } from "./schema-property.component"; import { DynamicTableComponent } from "src/app/components/dynamic-table/dynamic-table.component"; import { MatTableModule } from "@angular/material/table"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SchemaPropertyComponent", () => { let component: SchemaPropertyComponent; @@ -10,7 +11,7 @@ describe("SchemaPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [SchemaPropertyComponent, DynamicTableComponent], - imports: [MatTableModule], + imports: [MatTableModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(SchemaPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/separator-property/separator-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/separator-property/separator-property.component.spec.ts index 4b6e418d5..cca4af7bf 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/separator-property/separator-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/separator-property/separator-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { SeparatorPropertyComponent } from "./separator-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SeparatorPropertyComponent", () => { let component: SeparatorPropertyComponent; @@ -9,6 +9,7 @@ describe("SeparatorPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [SeparatorPropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(SeparatorPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/simple-property/simple-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/simple-property/simple-property.component.spec.ts index 07c6b3884..3ab097615 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/simple-property/simple-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/simple-property/simple-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { SimplePropertyComponent } from "./simple-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SimplePropertyComponent", () => { let component: SimplePropertyComponent; @@ -9,6 +9,7 @@ describe("SimplePropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [SimplePropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(SimplePropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/size-property/size-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/size-property/size-property.component.spec.ts index 99ecc718b..fd9917059 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/size-property/size-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/size-property/size-property.component.spec.ts @@ -2,6 +2,7 @@ import { DisplaySizeModule } from "src/app/common/pipes/display-size.module"; import { ComponentFixture, TestBed } from "@angular/core/testing"; import { SizePropertyComponent } from "./size-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SizePropertyComponent", () => { let component: SizePropertyComponent; @@ -10,7 +11,7 @@ describe("SizePropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [SizePropertyComponent], - imports: [DisplaySizeModule], + imports: [DisplaySizeModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(SizePropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/sql-query-viewer/sql-query-viewer.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/sql-query-viewer/sql-query-viewer.component.spec.ts index bf213fad1..67a33188b 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/sql-query-viewer/sql-query-viewer.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/sql-query-viewer/sql-query-viewer.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { SqlQueryViewerComponent } from "./sql-query-viewer.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SqlQueryViewerComponent", () => { let component: SqlQueryViewerComponent; @@ -9,6 +9,7 @@ describe("SqlQueryViewerComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [SqlQueryViewerComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(SqlQueryViewerComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/step-type-property/step-type-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/step-type-property/step-type-property.component.spec.ts index 068699e59..4d84a3e1b 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/step-type-property/step-type-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/step-type-property/step-type-property.component.spec.ts @@ -1,14 +1,15 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { StepTypePropertyComponent } from "./step-type-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; -describe("ReadTypePropertyComponent", () => { +describe("StepTypePropertyComponent", () => { let component: StepTypePropertyComponent; let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [StepTypePropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(StepTypePropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/temporal-tables-property/temporal-tables-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/temporal-tables-property/temporal-tables-property.component.spec.ts index 28c4bb04f..b3bb028be 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/temporal-tables-property/temporal-tables-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/temporal-tables-property/temporal-tables-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { TemporalTablesPropertyComponent } from "./temporal-tables-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("TemporalTablesPropertyComponent", () => { let component: TemporalTablesPropertyComponent; @@ -9,6 +9,7 @@ describe("TemporalTablesPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [TemporalTablesPropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(TemporalTablesPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/time-property/time-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/time-property/time-property.component.spec.ts index 54f5a8ea7..a772b5e71 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/time-property/time-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/time-property/time-property.component.spec.ts @@ -1,6 +1,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { TimePropertyComponent } from "./time-property.component"; import { DisplayTimeModule } from "src/app/components/display-time/display-time.module"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("TimePropertyComponent", () => { let component: TimePropertyComponent; @@ -9,7 +10,7 @@ describe("TimePropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [TimePropertyComponent], - imports: [DisplayTimeModule], + imports: [DisplayTimeModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(TimePropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/unsupported-property/unsupported-property.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/unsupported-property/unsupported-property.component.spec.ts index 3c131a623..03de79ead 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/unsupported-property/unsupported-property.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/unsupported-property/unsupported-property.component.spec.ts @@ -1,6 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { UnsupportedPropertyComponent } from "./unsupported-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("UnsupportedPropertyComponent", () => { let component: UnsupportedPropertyComponent; @@ -9,6 +9,7 @@ describe("UnsupportedPropertyComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [UnsupportedPropertyComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(UnsupportedPropertyComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/execute-query-event/execute-query-event.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/execute-query-event/execute-query-event.component.spec.ts index 03a8d75d3..902be6d7f 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/execute-query-event/execute-query-event.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/execute-query-event/execute-query-event.component.spec.ts @@ -13,7 +13,7 @@ import { MatIconModule } from "@angular/material/icon"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; import { AngularSvgIconModule } from "angular-svg-icon"; import { HttpClientTestingModule } from "@angular/common/http/testing"; -import { snapshotParamMapMock } from "src/app/common/base-test.helpers.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("ExecuteQueryEventComponent", () => { let component: ExecuteQueryEventComponent; @@ -36,8 +36,8 @@ describe("ExecuteQueryEventComponent", () => { ToastrModule.forRoot(), AngularSvgIconModule.forRoot(), HttpClientTestingModule, + SharedTestModule, ], - providers: [snapshotParamMapMock], }).compileComponents(); fixture = TestBed.createComponent(ExecuteQueryEventComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/set-info-event/set-info-event.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/set-info-event/set-info-event.component.spec.ts index 8cf521f42..b0c2477c0 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/set-info-event/set-info-event.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/set-info-event/set-info-event.component.spec.ts @@ -6,6 +6,7 @@ import { BlockRowDataComponent } from "../../../block-row-data/block-row-data.co import { TooltipIconComponent } from "../../../tooltip-icon/tooltip-icon.component"; import { MatIconModule } from "@angular/material/icon"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SetInfoEventComponent", () => { let component: SetInfoEventComponent; @@ -19,7 +20,7 @@ describe("SetInfoEventComponent", () => { BlockRowDataComponent, TooltipIconComponent, ], - imports: [MatIconModule, NgbTooltipModule], + imports: [MatIconModule, NgbTooltipModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(SetInfoEventComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/set-license-event/set-license-event.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/set-license-event/set-license-event.component.spec.ts index f850b3c1f..28b766df2 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/set-license-event/set-license-event.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/set-license-event/set-license-event.component.spec.ts @@ -6,6 +6,7 @@ import { TooltipIconComponent } from "../../../tooltip-icon/tooltip-icon.compone import { MatIconModule } from "@angular/material/icon"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; import { LinkPropertyComponent } from "../common/link-property/link-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SetLicenseEventComponent", () => { let component: SetLicenseEventComponent; @@ -19,7 +20,7 @@ describe("SetLicenseEventComponent", () => { TooltipIconComponent, LinkPropertyComponent, ], - imports: [MatIconModule, NgbTooltipModule], + imports: [MatIconModule, NgbTooltipModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(SetLicenseEventComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/set-polling-source-event/set-polling-source-event.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/set-polling-source-event/set-polling-source-event.component.spec.ts index 3e2f737bb..7f574fdb1 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/set-polling-source-event/set-polling-source-event.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/set-polling-source-event/set-polling-source-event.component.spec.ts @@ -7,7 +7,6 @@ import { CardsPropertyComponent } from "./../common/cards-property/cards-propert import { NO_ERRORS_SCHEMA } from "@angular/core"; import { ComponentFixture, TestBed } from "@angular/core/testing"; import { mockSetPollingSourceEvent } from "../../mock.events"; - import { SetPollingSourceEventComponent } from "./set-polling-source-event.component"; import { SqlQueryViewerComponent } from "../common/sql-query-viewer/sql-query-viewer.component"; import { EnginePropertyComponent } from "../common/engine-property/engine-property.component"; @@ -19,6 +18,7 @@ import { SimplePropertyComponent } from "../common/simple-property/simple-proper import { MergeStrategyPropertyComponent } from "../common/merge-strategy-property/merge-strategy-property.component"; import { UnsupportedPropertyComponent } from "../common/unsupported-property/unsupported-property.component"; import { YamlEventViewerComponent } from "../common/yaml-event-viewer/yaml-event-viewer.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SetPollingSourceEventComponent", () => { let component: SetPollingSourceEventComponent; @@ -40,6 +40,7 @@ describe("SetPollingSourceEventComponent", () => { UnsupportedPropertyComponent, YamlEventViewerComponent, ], + imports: [SharedTestModule], schemas: [NO_ERRORS_SCHEMA], }).compileComponents(); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/set-transform-event/set-transform-event.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/set-transform-event/set-transform-event.component.spec.ts index 53a248793..158b79fde 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/set-transform-event/set-transform-event.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/set-transform-event/set-transform-event.component.spec.ts @@ -3,14 +3,12 @@ import { NO_ERRORS_SCHEMA } from "@angular/core"; import { ComponentFixture, TestBed } from "@angular/core/testing"; import { SetTransform } from "src/app/api/kamu.graphql.interface"; import { mockSetTransform } from "../../mock.events"; - import { EnginePropertyComponent } from "../common/engine-property/engine-property.component"; - import { SimplePropertyComponent } from "../common/simple-property/simple-property.component"; import { SqlQueryViewerComponent } from "../common/sql-query-viewer/sql-query-viewer.component"; - import { SetTransformEventComponent } from "./set-transform-event.component"; import { TemporalTablesPropertyComponent } from "../common/temporal-tables-property/temporal-tables-property.component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SetTransformEventComponent", () => { let component: SetTransformEventComponent; @@ -25,7 +23,7 @@ describe("SetTransformEventComponent", () => { SqlQueryViewerComponent, TemporalTablesPropertyComponent, ], - imports: [ApolloTestingModule], + imports: [ApolloTestingModule, SharedTestModule], schemas: [NO_ERRORS_SCHEMA], }).compileComponents(); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/set-vocab-event/set-vocab-event.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/set-vocab-event/set-vocab-event.component.spec.ts index bbf5ba7c5..9771506b2 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/set-vocab-event/set-vocab-event.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/set-vocab-event/set-vocab-event.component.spec.ts @@ -6,6 +6,7 @@ import { BlockRowDataComponent } from "../../../block-row-data/block-row-data.co import { TooltipIconComponent } from "../../../tooltip-icon/tooltip-icon.component"; import { MatIconModule } from "@angular/material/icon"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SetVocabEventComponent", () => { let component: SetVocabEventComponent; @@ -19,7 +20,7 @@ describe("SetVocabEventComponent", () => { BlockRowDataComponent, TooltipIconComponent, ], - imports: [MatIconModule, NgbTooltipModule], + imports: [MatIconModule, NgbTooltipModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(SetVocabEventComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/set-watermark-event/set-watermark-event.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/components/set-watermark-event/set-watermark-event.component.spec.ts index d37646703..02fcde74d 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/set-watermark-event/set-watermark-event.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/set-watermark-event/set-watermark-event.component.spec.ts @@ -7,6 +7,7 @@ import { BlockRowDataComponent } from "../../../block-row-data/block-row-data.co import { TooltipIconComponent } from "../../../tooltip-icon/tooltip-icon.component"; import { MatIconModule } from "@angular/material/icon"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SetWatermarkEventComponent", () => { let component: SetWatermarkEventComponent; @@ -19,7 +20,12 @@ describe("SetWatermarkEventComponent", () => { BlockRowDataComponent, TooltipIconComponent, ], - imports: [DisplayTimeModule, MatIconModule, NgbTooltipModule], + imports: [ + DisplayTimeModule, + MatIconModule, + NgbTooltipModule, + SharedTestModule, + ], }).compileComponents(); fixture = TestBed.createComponent(SetWatermarkEventComponent); diff --git a/src/app/dataset-block/metadata-block/components/event-details/event-details.component.spec.ts b/src/app/dataset-block/metadata-block/components/event-details/event-details.component.spec.ts index 907000947..6654af155 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/event-details.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/event-details.component.spec.ts @@ -8,6 +8,7 @@ import { EventDetailsComponent } from "./event-details.component"; import { MetadataBlockFragment } from "src/app/api/kamu.graphql.interface"; import { mockGetMetadataBlockQuery } from "src/app/api/mock/dataset.mock"; import { AddDataEventFragment } from "./../../../../api/kamu.graphql.interface"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("EventDetailsComponent", () => { let component: EventDetailsComponent; @@ -20,6 +21,7 @@ describe("EventDetailsComponent", () => { EventDetailsComponent, SetPollingSourceEventComponent, ], + imports: [SharedTestModule], providers: [Apollo, DatasetApi], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); diff --git a/src/app/dataset-block/metadata-block/components/yaml-view-section/yaml-view-section.component.spec.ts b/src/app/dataset-block/metadata-block/components/yaml-view-section/yaml-view-section.component.spec.ts index 400403873..d8e2eef8d 100644 --- a/src/app/dataset-block/metadata-block/components/yaml-view-section/yaml-view-section.component.spec.ts +++ b/src/app/dataset-block/metadata-block/components/yaml-view-section/yaml-view-section.component.spec.ts @@ -5,6 +5,7 @@ import { YamlViewSectionComponent } from "./yaml-view-section.component"; import { mockGetMetadataBlockQuery } from "src/app/api/mock/dataset.mock"; import { MetadataBlockFragment } from "src/app/api/kamu.graphql.interface"; import { ChangeDetectionStrategy } from "@angular/core"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("YamlViewSectionComponent", () => { let component: YamlViewSectionComponent; @@ -14,7 +15,7 @@ describe("YamlViewSectionComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [YamlViewSectionComponent], - imports: [ApolloTestingModule], + imports: [ApolloTestingModule, SharedTestModule], }) .overrideComponent(YamlViewSectionComponent, { set: { changeDetection: ChangeDetectionStrategy.Default }, diff --git a/src/app/dataset-create/dataset-create.component.spec.ts b/src/app/dataset-create/dataset-create.component.spec.ts index d48b9d517..70ad8fedf 100644 --- a/src/app/dataset-create/dataset-create.component.spec.ts +++ b/src/app/dataset-create/dataset-create.component.spec.ts @@ -6,6 +6,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { ApolloModule } from "apollo-angular"; import { DatasetCreateComponent } from "./dataset-create.component"; import { AppDatasetCreateService } from "./dataset-create.service"; +import { SharedTestModule } from "../common/shared-test.module"; describe("DatasetCreateComponent", () => { let component: DatasetCreateComponent; @@ -15,7 +16,12 @@ describe("DatasetCreateComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [DatasetCreateComponent], - imports: [ReactiveFormsModule, ApolloModule, FormsModule], + imports: [ + ReactiveFormsModule, + ApolloModule, + FormsModule, + SharedTestModule, + ], schemas: [CUSTOM_ELEMENTS_SCHEMA], }) .overrideComponent(DatasetCreateComponent, { diff --git a/src/app/dataset-view/additional-components/history-component/history-component.spec.ts b/src/app/dataset-view/additional-components/history-component/history-component.spec.ts index 19f5fb0f5..0ef78e94c 100644 --- a/src/app/dataset-view/additional-components/history-component/history-component.spec.ts +++ b/src/app/dataset-view/additional-components/history-component/history-component.spec.ts @@ -3,6 +3,7 @@ import { first } from "rxjs/operators"; import { AppDatasetSubscriptionsService } from "../../dataset.subscriptions.service"; import { mockHistoryUpdate } from "../data-tabs.mock"; import { HistoryComponent } from "./history-component"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("HistoryComponent", () => { let component: HistoryComponent; @@ -12,6 +13,7 @@ describe("HistoryComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [HistoryComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(HistoryComponent); diff --git a/src/app/dataset-view/additional-components/lineage-component/lineage-component.spec.ts b/src/app/dataset-view/additional-components/lineage-component/lineage-component.spec.ts index 9440c8a37..124fd45d9 100644 --- a/src/app/dataset-view/additional-components/lineage-component/lineage-component.spec.ts +++ b/src/app/dataset-view/additional-components/lineage-component/lineage-component.spec.ts @@ -5,6 +5,7 @@ import { AppDatasetSubscriptionsService } from "../../dataset.subscriptions.serv import { mockLineageUpdate } from "../data-tabs.mock"; import { first } from "rxjs/operators"; import { Node } from "@swimlane/ngx-graph/lib/models/node.model"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("LineageComponent", () => { let component: LineageComponent; @@ -14,6 +15,7 @@ describe("LineageComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [LineageComponent], + imports: [SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(LineageComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.spec.ts index 98733b56a..3fec8e175 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.spec.ts @@ -19,7 +19,6 @@ import { MonacoEditorModule } from "ngx-monaco-editor"; import { StepperNavigationComponent } from "../stepper-navigation/stepper-navigation.component"; import { BaseStepComponent } from "./steps/base-step/base-step.component"; import { PollingSourceFormComponentsModule } from "../form-components/polling-source-form-components.module"; -import { snapshotParamMapMock } from "src/app/common/base-test.helpers.spec"; import { of } from "rxjs"; import { mockDatasetHistoryResponse } from "src/app/search/mock.data"; import { @@ -27,6 +26,7 @@ import { MetadataBlockFragment, } from "src/app/api/kamu.graphql.interface"; import { EditPollingSourceService } from "./edit-polling-source.service"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("AddPollingSourceComponent", () => { let component: AddPollingSourceComponent; @@ -50,8 +50,9 @@ describe("AddPollingSourceComponent", () => { NgbModule, MonacoEditorModule.forRoot(), PollingSourceFormComponentsModule, + SharedTestModule, ], - providers: [FormBuilder, Apollo, snapshotParamMapMock], + providers: [FormBuilder, Apollo], }) .overrideComponent(AddPollingSourceComponent, { set: { changeDetection: ChangeDetectionStrategy.Default }, diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts index 3d2a6b3e2..7bc5bfbc7 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts @@ -16,6 +16,7 @@ import { PollingSourceFormComponentsModule } from "../../../form-components/poll import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers.spec"; import { Apollo } from "apollo-angular"; import { DatasetApi } from "src/app/api/dataset.api"; +import { SharedTestModule } from "src/app/common/shared-test.module"; const fb = new FormBuilder(); const formGroupDirective = new FormGroupDirective([], []); @@ -36,6 +37,7 @@ describe("BaseStepComponent", () => { ReactiveFormsModule, NgbTooltipModule, PollingSourceFormComponentsModule, + SharedTestModule, ], providers: [ Apollo, diff --git a/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.spec.ts index f9476b370..5300e2fec 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.spec.ts @@ -8,6 +8,7 @@ import { DatasetInfo } from "src/app/interface/navigation.interface"; import { of } from "rxjs"; import { FormsModule } from "@angular/forms"; import { MonacoEditorModule } from "ngx-monaco-editor"; +import { SharedTestModule } from "src/app/common/shared-test.module"; const testDatasetInfo: DatasetInfo = { accountName: "testAccountName", @@ -24,7 +25,12 @@ describe("FinalYamlModalComponent", () => { await TestBed.configureTestingModule({ declarations: [FinalYamlModalComponent], providers: [NgbActiveModal], - imports: [ApolloModule, FormsModule, MonacoEditorModule.forRoot()], + imports: [ + ApolloModule, + FormsModule, + MonacoEditorModule.forRoot(), + SharedTestModule, + ], }).compileComponents(); fixture = TestBed.createComponent(FinalYamlModalComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/array-keys-field/array-keys-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/array-keys-field/array-keys-field.component.spec.ts index 8ec7d4a01..b9f9092b9 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/array-keys-field/array-keys-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/array-keys-field/array-keys-field.component.spec.ts @@ -9,6 +9,7 @@ import { ArrayKeysFieldComponent } from "./array-keys-field.component"; import { TooltipIconComponent } from "src/app/dataset-block/metadata-block/components/tooltip-icon/tooltip-icon.component"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("ArrayKeysFieldComponent", () => { let component: ArrayKeysFieldComponent; @@ -18,7 +19,7 @@ describe("ArrayKeysFieldComponent", () => { await TestBed.configureTestingModule({ declarations: [ArrayKeysFieldComponent, TooltipIconComponent], providers: [FormBuilder], - imports: [ReactiveFormsModule, NgbTooltipModule], + imports: [ReactiveFormsModule, NgbTooltipModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(ArrayKeysFieldComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/cache-field/cache-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/cache-field/cache-field.component.spec.ts index b62985d97..40628d247 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/cache-field/cache-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/cache-field/cache-field.component.spec.ts @@ -17,6 +17,7 @@ import { import { TooltipIconComponent } from "src/app/dataset-block/metadata-block/components/tooltip-icon/tooltip-icon.component"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; import { findElement } from "src/app/common/base-test.helpers.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("CacheFieldComponent", () => { let component: CacheFieldComponent; @@ -27,7 +28,12 @@ describe("CacheFieldComponent", () => { await TestBed.configureTestingModule({ declarations: [CacheFieldComponent, TooltipIconComponent], providers: [FormBuilder], - imports: [ReactiveFormsModule, FormsModule, NgbTooltipModule], + imports: [ + ReactiveFormsModule, + FormsModule, + NgbTooltipModule, + SharedTestModule, + ], }).compileComponents(); fixture = TestBed.createComponent(CacheFieldComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/checkbox-field/checkbox-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/checkbox-field/checkbox-field.component.spec.ts index bb6fa921d..aadf24ba2 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/checkbox-field/checkbox-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/checkbox-field/checkbox-field.component.spec.ts @@ -1,10 +1,10 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { FormControl, FormGroup, ReactiveFormsModule } from "@angular/forms"; - import { CheckboxFieldComponent } from "./checkbox-field.component"; import { TooltipIconComponent } from "src/app/dataset-block/metadata-block/components/tooltip-icon/tooltip-icon.component"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; import { findInputElememtByDataTestId } from "src/app/common/base-test.helpers.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("CheckboxFieldComponent", () => { let component: CheckboxFieldComponent; @@ -13,7 +13,7 @@ describe("CheckboxFieldComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [CheckboxFieldComponent, TooltipIconComponent], - imports: [ReactiveFormsModule, NgbTooltipModule], + imports: [ReactiveFormsModule, NgbTooltipModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(CheckboxFieldComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/input-field/input-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/input-field/input-field.component.spec.ts index 3c6185091..c9df8977d 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/input-field/input-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/input-field/input-field.component.spec.ts @@ -15,6 +15,7 @@ import { } from "src/app/common/base-test.helpers.spec"; import { ChangeDetectionStrategy } from "@angular/core"; import AppValues from "src/app/common/app.values"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("InputFieldComponent", () => { let component: InputFieldComponent; @@ -23,7 +24,7 @@ describe("InputFieldComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [InputFieldComponent, TooltipIconComponent], - imports: [ReactiveFormsModule, NgbTooltipModule], + imports: [ReactiveFormsModule, NgbTooltipModule, SharedTestModule], }) .overrideComponent(InputFieldComponent, { set: { changeDetection: ChangeDetectionStrategy.Default }, diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/key-value-field/key-value-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/key-value-field/key-value-field.component.spec.ts index 6485af710..0fe2f440a 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/key-value-field/key-value-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/key-value-field/key-value-field.component.spec.ts @@ -5,11 +5,11 @@ import { ReactiveFormsModule, } from "@angular/forms"; import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { KeyValueFieldComponent } from "./key-value-field.component"; import { TooltipIconComponent } from "src/app/dataset-block/metadata-block/components/tooltip-icon/tooltip-icon.component"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("KeyValueFieldComponent", () => { let component: KeyValueFieldComponent; @@ -19,7 +19,7 @@ describe("KeyValueFieldComponent", () => { await TestBed.configureTestingModule({ declarations: [KeyValueFieldComponent, TooltipIconComponent], providers: [FormBuilder], - imports: [ReactiveFormsModule, NgbTooltipModule], + imports: [ReactiveFormsModule, NgbTooltipModule, SharedTestModule], }).compileComponents(); fixture = TestBed.createComponent(KeyValueFieldComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/order-field/order-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/order-field/order-field.component.spec.ts index 439c73e01..e0157cd46 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/order-field/order-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/order-field/order-field.component.spec.ts @@ -1,11 +1,11 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { OrderFieldComponent } from "./order-field.component"; import { TooltipIconComponent } from "src/app/dataset-block/metadata-block/components/tooltip-icon/tooltip-icon.component"; import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; import { FormGroup, FormsModule, ReactiveFormsModule } from "@angular/forms"; import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers.spec"; import { SourceOrder } from "../../add-polling-source/process-form.service.types"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("OrderFieldComponent", () => { let component: OrderFieldComponent; @@ -14,7 +14,12 @@ describe("OrderFieldComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [OrderFieldComponent, TooltipIconComponent], - imports: [NgbTooltipModule, ReactiveFormsModule, FormsModule], + imports: [ + NgbTooltipModule, + ReactiveFormsModule, + FormsModule, + SharedTestModule, + ], }).compileComponents(); fixture = TestBed.createComponent(OrderFieldComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/schema-field/schema-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/schema-field/schema-field.component.spec.ts index f0e589da0..39caa9568 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/schema-field/schema-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/schema-field/schema-field.component.spec.ts @@ -23,6 +23,7 @@ import { dispatchInputEvent, emitClickOnElementByDataTestId, } from "src/app/common/base-test.helpers.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SchemaFieldComponent", () => { let component: SchemaFieldComponent; @@ -39,6 +40,7 @@ describe("SchemaFieldComponent", () => { NgbTypeaheadModule, RxReactiveFormsModule, NgbTooltipModule, + SharedTestModule, ], }).compileComponents(); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/select-date-format-field/select-date-format-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/select-date-format-field/select-date-format-field.component.spec.ts index 315b36b42..48f576e85 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/select-date-format-field/select-date-format-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/select-date-format-field/select-date-format-field.component.spec.ts @@ -16,6 +16,7 @@ import { RxReactiveFormsModule } from "@rxweb/reactive-form-validators"; import { EventTimeSourceKind } from "../../add-polling-source/add-polling-source-form.types"; import { SetPollingSourceToolipsTexts } from "src/app/common/tooltips/tooltips.text"; import { TooltipIconComponent } from "src/app/dataset-block/metadata-block/components/tooltip-icon/tooltip-icon.component"; +import { ActivatedRoute } from "@angular/router"; describe("SelectDateFormatFieldComponent", () => { let component: SelectDateFormatFieldComponent; @@ -27,7 +28,26 @@ describe("SelectDateFormatFieldComponent", () => { SelectDateFormatFieldComponent, TooltipIconComponent, ], - providers: [FormBuilder], + providers: [ + FormBuilder, + { + provide: ActivatedRoute, + useValue: { + snapshot: { + paramMap: { + get: (key: string) => { + switch (key) { + case "accountName": + return "accountName"; + case "datasetName": + return "datasetName"; + } + }, + }, + }, + }, + }, + ], imports: [ ReactiveFormsModule, MatIconModule, diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/typeahead-field/typeahead-field.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/typeahead-field/typeahead-field.component.spec.ts index 014098422..b8e1ddc9f 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/typeahead-field/typeahead-field.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/typeahead-field/typeahead-field.component.spec.ts @@ -23,6 +23,7 @@ import { findInputElememtByDataTestId } from "src/app/common/base-test.helpers.s import { interval } from "rxjs"; import { map, take } from "rxjs/operators"; import AppValues from "src/app/common/app.values"; +import { ActivatedRoute } from "@angular/router"; describe("TypeaheadFieldComponent", () => { let component: TypeaheadFieldComponent; @@ -38,6 +39,25 @@ describe("TypeaheadFieldComponent", () => { ReactiveFormsModule, NgbTooltipModule, ], + providers: [ + { + provide: ActivatedRoute, + useValue: { + snapshot: { + paramMap: { + get: (key: string) => { + switch (key) { + case "accountName": + return "accountName"; + case "datasetName": + return "datasetName"; + } + }, + }, + }, + }, + }, + ], }).compileComponents(); fixture = TestBed.createComponent(TypeaheadFieldComponent); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts index 0e4d8e052..d2ccc5c3d 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.spec.ts @@ -14,6 +14,7 @@ import { mockEngines } from "../../mock.data"; import { FormsModule } from "@angular/forms"; import { MatDividerModule } from "@angular/material/divider"; import { mockSetPollingSourceEvent } from "src/app/dataset-block/metadata-block/components/event-details/mock.events"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("EngineSectionComponent", () => { let component: EngineSectionComponent; @@ -29,6 +30,7 @@ describe("EngineSectionComponent", () => { ApolloTestingModule, FormsModule, MatDividerModule, + SharedTestModule, ], }).compileComponents(); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/search-section/search-section.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/search-section/search-section.component.spec.ts index 3aaf8cb67..df1a397d7 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/search-section/search-section.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/search-section/search-section.component.spec.ts @@ -34,6 +34,7 @@ import { NavigationService } from "src/app/services/navigation.service"; import { DatasetService } from "src/app/dataset-view/dataset.service"; import { mockGetDatasetSchemaQuery } from "../../mock.data"; import { DatasetNode } from "../../set-transform.types"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("SearchSectionComponent", () => { let component: SearchSectionComponent; @@ -53,6 +54,7 @@ describe("SearchSectionComponent", () => { NgbTypeaheadModule, MatIconModule, FormsModule, + SharedTestModule, ], }).compileComponents(); diff --git a/src/app/dataset-view/additional-components/metadata-component/metadata-component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/metadata-component.spec.ts index 6dcc7d55b..713e724a7 100644 --- a/src/app/dataset-view/additional-components/metadata-component/metadata-component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/metadata-component.spec.ts @@ -11,6 +11,7 @@ import { NgbTooltipModule } from "@ng-bootstrap/ng-bootstrap"; import { MatIconModule } from "@angular/material/icon"; import { MetadataBlockModule } from "src/app/dataset-block/metadata-block/metadata-block.module"; import { HIGHLIGHT_OPTIONS } from "ngx-highlightjs"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("MetadataComponent", () => { let component: MetadataComponent; @@ -24,7 +25,12 @@ describe("MetadataComponent", () => { BlockRowDataComponent, TooltipIconComponent, ], - imports: [NgbTooltipModule, MatIconModule, MetadataBlockModule], + imports: [ + NgbTooltipModule, + MatIconModule, + MetadataBlockModule, + SharedTestModule, + ], providers: [ { provide: HIGHLIGHT_OPTIONS, diff --git a/src/app/dataset-view/additional-components/overview-component/components/edit-details-modal/edit-details-modal.component.spec.ts b/src/app/dataset-view/additional-components/overview-component/components/edit-details-modal/edit-details-modal.component.spec.ts index b22f8c978..6b0bed744 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/edit-details-modal/edit-details-modal.component.spec.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/edit-details-modal/edit-details-modal.component.spec.ts @@ -9,7 +9,6 @@ import { mockDatasetBasicsFragment } from "../../../../../search/mock.data"; import { ComponentFixture, TestBed } from "@angular/core/testing"; import { Apollo, ApolloModule } from "apollo-angular"; import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap"; - import { EditDetailsModalComponent } from "./edit-details-modal.component"; import { mockMetadataSchemaUpdate, @@ -22,6 +21,7 @@ import { } from "src/app/api/kamu.graphql.interface"; import { MatDividerModule } from "@angular/material/divider"; import { MatIconModule } from "@angular/material/icon"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("EditDetailsModalComponent", () => { let component: EditDetailsModalComponent; @@ -37,6 +37,7 @@ describe("EditDetailsModalComponent", () => { MatChipsModule, MatDividerModule, MatIconModule, + SharedTestModule, ], providers: [Apollo, NgbActiveModal], }).compileComponents(); diff --git a/src/app/dataset-view/additional-components/overview-component/components/edit-license-modal/edit-license-modal.component.spec.ts b/src/app/dataset-view/additional-components/overview-component/components/edit-license-modal/edit-license-modal.component.spec.ts index 2b69e90a7..297b07d21 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/edit-license-modal/edit-license-modal.component.spec.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/edit-license-modal/edit-license-modal.component.spec.ts @@ -20,6 +20,7 @@ import { } from "../../../data-tabs.mock"; import { EditLicenseModalComponent } from "./edit-license-modal.component"; import { MatDividerModule } from "@angular/material/divider"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("EditLicenseModalComponent", () => { let component: EditLicenseModalComponent; @@ -33,6 +34,7 @@ describe("EditLicenseModalComponent", () => { FormsModule, ReactiveFormsModule, MatDividerModule, + SharedTestModule, ], providers: [Apollo, NgbActiveModal], }).compileComponents(); diff --git a/src/app/dataset-view/additional-components/overview-component/components/edit-watermark-modal/edit-watermark-modal.component.spec.ts b/src/app/dataset-view/additional-components/overview-component/components/edit-watermark-modal/edit-watermark-modal.component.spec.ts index 4b661dd21..b66c59ca0 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/edit-watermark-modal/edit-watermark-modal.component.spec.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/edit-watermark-modal/edit-watermark-modal.component.spec.ts @@ -1,5 +1,4 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { EditWatermarkModalComponent } from "./edit-watermark-modal.component"; import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap"; import { Apollo } from "apollo-angular"; @@ -16,6 +15,7 @@ import { mockDatasetBasicsFragment } from "src/app/search/mock.data"; import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers.spec"; import { AppDatasetCreateService } from "src/app/dataset-create/dataset-create.service"; import { of } from "rxjs"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("EditWatermarkModalComponent", () => { let component: EditWatermarkModalComponent; @@ -34,6 +34,7 @@ describe("EditWatermarkModalComponent", () => { OwlNativeDateTimeModule, OwlMomentDateTimeModule, FormsModule, + SharedTestModule, ], }).compileComponents(); diff --git a/src/app/dataset-view/additional-components/overview-component/overview-component.spec.ts b/src/app/dataset-view/additional-components/overview-component/overview-component.spec.ts index b1f04b8a8..14bb24efd 100644 --- a/src/app/dataset-view/additional-components/overview-component/overview-component.spec.ts +++ b/src/app/dataset-view/additional-components/overview-component/overview-component.spec.ts @@ -15,6 +15,7 @@ import { NavigationService } from "src/app/services/navigation.service"; import { first } from "rxjs/operators"; import { NgbModal } from "@ng-bootstrap/ng-bootstrap"; import { MatChipsModule } from "@angular/material/chips"; +import { SharedTestModule } from "src/app/common/shared-test.module"; describe("OverviewComponent", () => { let component: OverviewComponent; @@ -26,7 +27,12 @@ describe("OverviewComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [OverviewComponent], - imports: [ApolloModule, ReactiveFormsModule, MatChipsModule], + imports: [ + ApolloModule, + ReactiveFormsModule, + MatChipsModule, + SharedTestModule, + ], providers: [Apollo], }).compileComponents(); From b524c9e97c1ed0a4e7a9eec600364c7b51881733 Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Wed, 19 Jul 2023 10:57:07 +0300 Subject: [PATCH 07/11] Add prepare step functionality. --- .../add-polling-source-form.types.ts | 6 + .../add-polling-source.component.html | 6 +- .../add-polling-source.component.ts | 8 +- .../process-form.service.ts | 25 +++- .../prepare-step/prepare-step.component.html | 103 +++++++++++++++- .../prepare-step/prepare-step.component.sass | 8 ++ .../prepare-step/prepare-step.component.ts | 112 +++++++++++++++++- .../input-field/input-field.component.sass | 2 + 8 files changed, 258 insertions(+), 12 deletions(-) diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts index 2b6e52726..5663a2422 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts @@ -119,6 +119,12 @@ export interface EditFormType { kind: PreprocessKind.SQL; query?: string; }; + prepare?: { + kind: string; + command?: string[] | string; + format?: string; + subPath?: string; + }[]; } export interface EditFormParseType { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html index 07fcc03af..f4e5a0947 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html @@ -19,7 +19,10 @@ > - +
+
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts index 4a0490ef0..4f255b893 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts @@ -4,8 +4,6 @@ import { FetchKind, ReadKind, MergeKind, - PrepareKind, - PreprocessKind, PreprocessStepValue, } from "./add-polling-source-form.types"; import { FinalYamlModalComponent } from "../final-yaml-modal/final-yaml-modal.component"; @@ -48,7 +46,6 @@ import { SupportedEvents } from "src/app/dataset-block/metadata-block/components export class AddPollingSourceComponent extends BaseComponent implements OnInit { public currentStep: SetPollingSourceSection = SetPollingSourceSection.FETCH; public steps: typeof SetPollingSourceSection = SetPollingSourceSection; - public showPreprocessStep = false; public errorMessage = ""; public history: DatasetHistoryUpdate; @@ -58,10 +55,6 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { engine: "", queries: [], }; - - // -------------------------------- - private readonly DEFAULT_PREPARE_KIND = PrepareKind.PIPE; - private readonly DEFAULT_PREPROCESS_KIND = PreprocessKind.SQL; // --------------------------------- public readonly FETCH_STEP_RADIO_DATA = FETCH_STEP_RADIO_CONTROLS; public readonly FETCH_FORM_DATA = FETCH_FORM_DATA; @@ -79,6 +72,7 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { fetch: this.fb.group({ kind: [this.FETCH_DEFAULT_KIND], }), + prepare: this.fb.array([]), read: this.fb.group({ kind: [this.READ_DEFAULT_KIND], }), diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts index 5159d52ad..3a8398785 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts @@ -8,7 +8,7 @@ import { } from "./process-form.service.types"; import { SetPollingSource } from "src/app/api/kamu.graphql.interface"; import { SetPollingSourceSection } from "src/app/shared/shared.types"; -import { FetchKind } from "./add-polling-source-form.types"; +import { EditFormType, FetchKind } from "./add-polling-source-form.types"; @Injectable({ providedIn: "root", @@ -19,6 +19,8 @@ export class ProcessFormService { this.processFetchOrderControl(formGroup); this.removeEmptyControls(formGroup); this.processEventTimeControl(formGroup); + this.processEmptyPrepareStep(formGroup); + this.processPipeCommandControl(formGroup); } private transformSchema(formGroup: FormGroup): void { @@ -37,6 +39,27 @@ export class ProcessFormService { } } + private processPipeCommandControl(formGroup: FormGroup): void { + const form = formGroup.value as EditFormType; + if (form.prepare && form.prepare.length > 0) { + form.prepare.map((item) => { + if (item.kind === "pipe" && typeof item.command === "string") { + item.command = item.command.trim().split(" "); + } + if (item.kind === "decompress" && !item.subPath) { + delete item.subPath; + } + }); + } + } + + private processEmptyPrepareStep(formGroup: FormGroup): void { + const form = formGroup.value as EditFormType; + if (form.prepare && !form.prepare.length) { + delete form.prepare; + } + } + private processEventTimeControl(formGroup: FormGroup): void { const form = formGroup.value as OrderControlType; if (form.fetch.eventTime && form.fetch.kind === "container") { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html index f4af7616c..083f6950d 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html @@ -1 +1,102 @@ -

prepare-step works!

+

Prepare

+
+

+ Defines how raw data is prepared before reading. You can add + Pipe and + Decompress steps. +

+
+
+
+ +
+

Pipe

+
+ +
+ +
+ + + +
+
+
+ +
+

Decompress

+
+ + +
+
+ + +
+
+ + + +
+
+
+
+
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.sass b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.sass index e69de29bb..a1798c9a6 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.sass +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.sass @@ -0,0 +1,8 @@ +.prepare-item + color: #0d6efd + text-decoration: none + +.buttons-section + position: absolute + top: 20px + right: 30px diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.ts index c4ad95aa7..64323be44 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.ts @@ -1,9 +1,117 @@ -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { + ChangeDetectionStrategy, + Component, + Input, + OnInit, +} from "@angular/core"; +import { + ControlContainer, + FormArray, + FormBuilder, + FormGroup, + FormGroupDirective, +} from "@angular/forms"; +import { MaybeNull } from "src/app/common/app.types"; +import { BaseComponent } from "src/app/common/base.component"; +import { SetPollingSourceSection } from "src/app/shared/shared.types"; +import { EditFormType, PrepareKind } from "../../add-polling-source-form.types"; +import { EditPollingSourceService } from "../../edit-polling-source.service"; @Component({ selector: "app-prepare-step", templateUrl: "./prepare-step.component.html", styleUrls: ["./prepare-step.component.sass"], changeDetection: ChangeDetectionStrategy.OnPush, + viewProviders: [ + { provide: ControlContainer, useExisting: FormGroupDirective }, + ], }) -export class PrepareStepComponent {} +export class PrepareStepComponent extends BaseComponent implements OnInit { + @Input() public eventYamlByHash: MaybeNull = null; + @Input() public sectionName: SetPollingSourceSection; + public parentForm: FormGroup; + public setPollingSourceEvent: MaybeNull = null; + + constructor( + private rootFormGroupDirective: FormGroupDirective, + private fb: FormBuilder, + private editService: EditPollingSourceService, + ) { + super(); + } + + ngOnInit(): void { + this.parentForm = this.rootFormGroupDirective.form; + if (this.eventYamlByHash) { + this.setPollingSourceEvent = this.editService.parseEventFromYaml( + this.eventYamlByHash, + ); + this.initExistingPrepareStep(this.setPollingSourceEvent); + } + } + + private initExistingPrepareStep(event: EditFormType): void { + let group: FormGroup; + if (event.prepare && this.sectionForm.length === 0) { + event.prepare.forEach((item) => { + if ( + item.kind === PrepareKind.PIPE && + Array.isArray(item.command) + ) { + group = this.fb.group({ + kind: this.fb.control(PrepareKind.PIPE), + command: this.fb.control(item.command.join(" ")), + }); + } else if (item.kind === PrepareKind.DECOMPRESS) { + group = this.fb.group({ + kind: this.fb.control(PrepareKind.DECOMPRESS), + format: this.fb.control(item.format), + subPath: this.fb.control(item.subPath), + }); + } + this.sectionForm.push(group); + }); + } + } + + public get sectionForm(): FormArray { + return this.parentForm.get(this.sectionName) as FormArray; + } + + public addPipe(): void { + this.sectionForm.push( + this.fb.group({ + kind: this.fb.control(PrepareKind.PIPE), + command: this.fb.control(""), + }), + ); + } + + public addDecompress(): void { + this.sectionForm.push( + this.fb.group({ + kind: this.fb.control(PrepareKind.DECOMPRESS), + format: this.fb.control(""), + subPath: this.fb.control(""), + }), + ); + } + + public delete(index: number): void { + this.sectionForm.removeAt(index); + } + + public swap(index: number, direction: number): void { + const current = this.sectionForm.at(index); + this.sectionForm.removeAt(index); + this.sectionForm.insert(index + direction, current); + } + + public isLastItem(index: number): boolean { + return index === this.sectionForm.length - 1; + } + + public isFirstItem(index: number): boolean { + return index === 0; + } +} diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/input-field/input-field.component.sass b/src/app/dataset-view/additional-components/metadata-component/components/form-components/input-field/input-field.component.sass index e69de29bb..7dcc57b85 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/input-field/input-field.component.sass +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/input-field/input-field.component.sass @@ -0,0 +1,2 @@ +input + text-overflow: ellipsis From 3c3cdcbfd4ffb12734a8a07c0ca630f883ca9978 Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Wed, 19 Jul 2023 14:12:36 +0300 Subject: [PATCH 08/11] Fix existing unit tests. --- .../base-step/base-step.component.spec.ts | 11 ++++++++-- .../prepare-step.component.spec.ts | 20 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts index 7bc5bfbc7..9944cdef3 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts @@ -1,12 +1,13 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { + FormArray, FormBuilder, FormControl, FormGroupDirective, ReactiveFormsModule, } from "@angular/forms"; import { BaseStepComponent } from "./base-step.component"; -import { FetchKind } from "../../add-polling-source-form.types"; +import { FetchKind, PrepareKind } from "../../add-polling-source-form.types"; import { FETCH_FORM_DATA } from "../data/fetch-form-data"; import { FETCH_STEP_RADIO_CONTROLS } from "../../form-control.source"; import { SetPollingSourceSection } from "src/app/shared/shared.types"; @@ -19,11 +20,17 @@ import { DatasetApi } from "src/app/api/dataset.api"; import { SharedTestModule } from "src/app/common/shared-test.module"; const fb = new FormBuilder(); -const formGroupDirective = new FormGroupDirective([], []); +export const formGroupDirective = new FormGroupDirective([], []); formGroupDirective.form = fb.group({ fetch: fb.group({ kind: new FormControl(FetchKind.URL), }), + prepare: new FormArray([ + fb.group({ + kind: PrepareKind.PIPE, + command: "a -t x", + }), + ]), }); describe("BaseStepComponent", () => { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.spec.ts index dab73a290..ad1230813 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.spec.ts @@ -1,6 +1,17 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { PrepareStepComponent } from "./prepare-step.component"; +import { + FormBuilder, + FormGroupDirective, + ReactiveFormsModule, +} from "@angular/forms"; +import { Apollo } from "apollo-angular"; +import { DatasetApi } from "src/app/api/dataset.api"; +import { formGroupDirective } from "../base-step/base-step.component.spec"; +import { SharedTestModule } from "src/app/common/shared-test.module"; +import { SetPollingSourceSection } from "src/app/shared/shared.types"; +import { MatIconModule } from "@angular/material/icon"; describe("PrepareStepComponent", () => { let component: PrepareStepComponent; @@ -9,10 +20,19 @@ describe("PrepareStepComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [PrepareStepComponent], + providers: [ + Apollo, + DatasetApi, + FormGroupDirective, + FormBuilder, + { provide: FormGroupDirective, useValue: formGroupDirective }, + ], + imports: [SharedTestModule, ReactiveFormsModule, MatIconModule], }).compileComponents(); fixture = TestBed.createComponent(PrepareStepComponent); component = fixture.componentInstance; + component.sectionName = SetPollingSourceSection.PREPARE; fixture.detectChanges(); }); From 343d08511b58902e45eccb4203bcb836a9cc56ca Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Thu, 20 Jul 2023 12:32:02 +0300 Subject: [PATCH 09/11] Add unit tests. --- .../base-step/base-step.component.spec.ts | 9 +- .../prepare-step/prepare-step.component.html | 30 ++++-- .../prepare-step.component.spec.ts | 31 +++++- .../preprocess-step.component.html | 2 +- .../preprocess-step.component.spec.ts | 97 ++++++++++++++----- .../components/set-transform/mock.data.ts | 25 +++++ 6 files changed, 150 insertions(+), 44 deletions(-) diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts index 9944cdef3..d66a961c1 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/base-step/base-step.component.spec.ts @@ -7,7 +7,7 @@ import { ReactiveFormsModule, } from "@angular/forms"; import { BaseStepComponent } from "./base-step.component"; -import { FetchKind, PrepareKind } from "../../add-polling-source-form.types"; +import { FetchKind } from "../../add-polling-source-form.types"; import { FETCH_FORM_DATA } from "../data/fetch-form-data"; import { FETCH_STEP_RADIO_CONTROLS } from "../../form-control.source"; import { SetPollingSourceSection } from "src/app/shared/shared.types"; @@ -25,12 +25,7 @@ formGroupDirective.form = fb.group({ fetch: fb.group({ kind: new FormControl(FetchKind.URL), }), - prepare: new FormArray([ - fb.group({ - kind: PrepareKind.PIPE, - command: "a -t x", - }), - ]), + prepare: new FormArray([]), }); describe("BaseStepComponent", () => { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html index 083f6950d..0fc3fa0d0 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html @@ -2,8 +2,18 @@

Prepare

Defines how raw data is prepared before reading. You can add - Pipe and - Decompress steps. + Pipe + and + + Decompress + steps.

@@ -21,7 +31,7 @@

Pipe

diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.spec.ts index 319dccd02..68dd71236 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.spec.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/preprocess-step/preprocess-step.component.spec.ts @@ -1,10 +1,22 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; - import { PreprocessStepComponent } from "./preprocess-step.component"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { Apollo, ApolloModule } from "apollo-angular"; import { ApolloTestingModule } from "apollo-angular/testing"; -import { ActivatedRoute } from "@angular/router"; +import { + mockPreprocessStepValue, + mockPreprocessStepValueWithoutQueries, + mockSetPollingSourceEventYaml, + mockSetPollingSourceEventYamlWithQuery, + mockSetPollingSourceEventYamlWithoutPreprocess, +} from "../../../set-transform/mock.data"; +import { QueriesSectionComponent } from "../../../set-transform/components/queries-section/queries-section.component"; +import { EngineSectionComponent } from "../../../set-transform/components/engine-section/engine-section.component"; +import { MonacoEditorModule } from "ngx-monaco-editor"; +import { MatIconModule } from "@angular/material/icon"; +import { SharedTestModule } from "src/app/common/shared-test.module"; +import { ChangeDetectionStrategy } from "@angular/core"; +import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers.spec"; describe("PreprocessStepComponent", () => { let component: PreprocessStepComponent; @@ -12,41 +24,76 @@ describe("PreprocessStepComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [PreprocessStepComponent], + declarations: [ + PreprocessStepComponent, + QueriesSectionComponent, + EngineSectionComponent, + ], imports: [ ReactiveFormsModule, ApolloModule, ApolloTestingModule, FormsModule, + MonacoEditorModule.forRoot(), + MatIconModule, + SharedTestModule, ], - providers: [ - Apollo, - { - provide: ActivatedRoute, - useValue: { - snapshot: { - paramMap: { - get: (key: string) => { - switch (key) { - case "accountName": - return "accountName"; - case "datasetName": - return "datasetName"; - } - }, - }, - }, - }, - }, - ], - }).compileComponents(); + providers: [Apollo], + }) + .overrideComponent(PreprocessStepComponent, { + set: { changeDetection: ChangeDetectionStrategy.Default }, + }) + .compileComponents(); fixture = TestBed.createComponent(PreprocessStepComponent); component = fixture.componentInstance; - fixture.detectChanges(); + component.eventYamlByHash = mockSetPollingSourceEventYaml; + component.showPreprocessStep = true; + component.preprocessValue = mockPreprocessStepValue; }); it("should create", () => { expect(component).toBeTruthy(); }); + + it("should check switch showPreprocess checkbox", () => { + const onCheckedPreprocessStepSpy = spyOn( + component.showPreprocessStepEmitter, + "emit", + ); + emitClickOnElementByDataTestId(fixture, "showPreprocessStep"); + expect(onCheckedPreprocessStepSpy).toHaveBeenCalledTimes(1); + }); + + it("should check select engine", () => { + fixture.detectChanges(); + const selectedEngine = "FLINK"; + expect(component.preprocessValue.engine).toEqual( + mockPreprocessStepValue.engine, + ); + component.onSelectEngine(selectedEngine); + expect(component.preprocessValue.engine).toEqual(selectedEngine); + }); + + it("should check init default state with queries", () => { + component.preprocessValue = mockPreprocessStepValueWithoutQueries; + fixture.detectChanges(); + expect(component.preprocessValue.queries.length).toEqual(1); + }); + + it("should check init default state with query", () => { + component.eventYamlByHash = mockSetPollingSourceEventYamlWithQuery; + component.preprocessValue = mockPreprocessStepValueWithoutQueries; + fixture.detectChanges(); + expect(component.preprocessValue.queries.length).toEqual(1); + expect(component.preprocessValue.queries[0].query).toBeDefined(); + }); + + it("should check init default state without queries", () => { + component.eventYamlByHash = + mockSetPollingSourceEventYamlWithoutPreprocess; + component.preprocessValue = mockPreprocessStepValueWithoutQueries; + fixture.detectChanges(); + expect(component.preprocessValue.queries.length).toEqual(1); + }); }); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/mock.data.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/mock.data.ts index 831603264..bb4620b72 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/mock.data.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/mock.data.ts @@ -6,6 +6,7 @@ import { QueryDialect, } from "src/app/api/kamu.graphql.interface"; import { SetTransFormYamlType } from "./set-transform.types"; +import { PreprocessStepValue } from "../add-polling-source/add-polling-source-form.types"; export const mockEngines: EnginesQuery = { data: { @@ -102,8 +103,32 @@ export const mockParseSetTransFormYamlType = { }, } as SetTransFormYamlType; +export const mockPreprocessStepValue: PreprocessStepValue = { + engine: "SPARK", + queries: [ + { + alias: "account.transactions", + query: "SELECT\n cast(cast(timeStamp as bigint) as timestamp) as block_time,\n cast(blockNumber as bigint) as block_number,\n blockHash as block_hash,\n 'eth' as symbol,\n hash as transaction_hash,\n transactionIndex as transaction_index,\n nonce,\n from,\n to,\n value,\n input,\n isError,\n txreceipt_status,\n contractAddress as contract_address,\n gas,\n gasPrice as gas_price,\n gasUsed as gas_used,\n cumulativeGasUsed as cumulative_gas_used,\n confirmations\nFROM input\n", + }, + ], +}; + +export const mockPreprocessStepValueWithoutQueries: PreprocessStepValue = { + engine: "SPARK", + queries: [], +}; + export const mockSetTransformEventYaml = "kind: MetadataBlock\nversion: 2\ncontent:\n systemTime: 2023-07-04T18:55:54.594764979Z\n prevBlockHash: zW1bxmABoYUGr2r8V4kVUoVsNBo4Nas4rmiqeguzQE7nzX4\n sequenceNumber: 1\n event:\n kind: setTransform\n inputs:\n - id: did:odf:z4k88e8uh4Cg8p7pXqxDRHhUKNEkq8KhMQgZyqQg7VhsErRJmht\n name: account.tokens.transfers\n - id: did:odf:z4k88e8pg152zufm67hBW43xwHq2bvyPa62SFNMJusgK3hgWAfC\n name: account.transactions\n transform:\n kind: sql\n engine: flink\n queries:\n - alias: token_transfers\n query: |\n select\n *,\n case\n when `to` = '0xeadb3840596cabf312f2bc88a4bb0b93a4e1ff5f' then value_fp\n when `from` = '0xeadb3840596cabf312f2bc88a4bb0b93a4e1ff5f' then -value_fp\n else 0\n end as token_amount\n from (\n select\n *,\n cast(`value` as float) / power(10.0, cast(token_decimal as int)) as value_fp\n from `account.tokens.transfers`\n )\n - alias: transactions\n query: |\n select\n *,\n case\n when `to` = '0xeadb3840596cabf312f2bc88a4bb0b93a4e1ff5f' then value_fp\n when `from` = '0xeadb3840596cabf312f2bc88a4bb0b93a4e1ff5f' then -value_fp\n else 0\n end as eth_amount\n from (\n select\n *,\n cast(`value` as float) / power(10.0, 18) as value_fp\n from `account.transactions`\n )\n - alias: token_transactions\n query: \"select\\n tr.block_time,\\n tr.block_number,\\n tr.transaction_hash,\\n tx.symbol as account_symbol,\\n tr.token_symbol,\\n tr.token_amount,\\n tx.eth_amount\\nfrom token_transfers as tr\\nleft join transactions as tx\\non \\n tr.transaction_hash = tx.transaction_hash\\n and tr.block_time = tx.block_time\\n\"\n - alias: account.tokens.portfolio\n query: |\n select\n *,\n sum(token_amount) over (partition by token_symbol order by block_time) as token_balance,\n sum(-eth_amount) over (partition by token_symbol order by block_time) as token_book_value_eth\n from token_transactions\n"; export const mockSetTransformEventYamlWithQuery = "kind: MetadataBlock\nversion: 2\ncontent:\n systemTime: 2023-07-04T18:55:54.498288820Z\n prevBlockHash: zW1kygYTBseWFvCde79YE466bUGpxxes22edhtUjRBVYQPA\n sequenceNumber: 1\n event:\n kind: setTransform\n inputs:\n - id: did:odf:z4k88e8h3LaJcngSzrj5J3kxBnPpwKqaYExJFxDvhzZJ8QxmRvX\n name: alberta.case-details\n transform:\n kind: sql\n engine: datafusion\n query: \"select\\n id,\\n date_reported as reported_date,\\n case when lower(gender) = 'male' then 'M' \\n when lower(gender) = 'female' then 'F' \\n else 'U' end as gender,\\n case when age_group = 'Under 1 year' then '<20'\\n when age_group = '1-4 years' then '<20'\\n when age_group = '5-9 years' then '<20'\\n when age_group = '10-19 years' then '<20'\\n when age_group = '20-29 years' then '20s'\\n when age_group = '30-39 years' then '30s'\\n when age_group = '40-49 years' then '40s'\\n when age_group = '50-59 years' then '50s'\\n when age_group = '60-69 years' then '60s'\\n when age_group = '70-79 years' then '70s'\\n when age_group = '80+ years' then '80s'\\n else 'UNKNOWN' end as age_group,\\n zone as location\\nfrom \\\"alberta.case-details\\\"\\n\"\n"; + +export const mockSetPollingSourceEventYaml = + "kind: MetadataBlock\nversion: 2\ncontent:\n systemTime: 2023-07-19T11:32:40.032474125Z\n prevBlockHash: zW1a24AfmasmU3nLWDgfTKUdrQuiWZkqzNP2A4hQMumRNX4\n sequenceNumber: 4\n event:\n kind: setPollingSource\n fetch:\n kind: url\n url: https://api.etherscan.io/api?module=account&action=txlist&address=0xeadb3840596cabf312f2bc88a4bb0b93a4e1ff5f&page=1&offset=1000&startblock=0&endblock=99999999&apikey=${{ env.ETHERSCAN_API_KEY }}\n eventTime:\n kind: fromMetadata\n prepare:\n - kind: pipe\n command:\n - jq\n - -c\n - .result[]\n - kind: decompress\n format: zip\n read:\n kind: jsonLines\n schema:\n - blockNumber STRING\n - timeStamp STRING\n - hash STRING\n - nonce STRING\n - blockHash STRING\n - transactionIndex STRING\n - from STRING\n - to STRING\n - value STRING\n - gas STRING\n - gasPrice STRING\n - isError STRING\n - txreceipt_status STRING\n - input STRING\n - contractAddress STRING\n - cumulativeGasUsed STRING\n - gasUsed STRING\n - confirmations STRING\n dateFormat: yyyy-MM-dd\n encoding: UTF-8\n timestampFormat: yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]\n preprocess:\n kind: sql\n engine: spark\n queries:\n - alias: account.transactions\n query: |\n SELECT\n cast(cast(timeStamp as bigint) as timestamp) as block_time,\n cast(blockNumber as bigint) as block_number,\n blockHash as block_hash,\n 'eth' as symbol,\n hash as transaction_hash,\n transactionIndex as transaction_index,\n nonce,\n from,\n to,\n value,\n input,\n isError,\n txreceipt_status,\n contractAddress as contract_address,\n gas,\n gasPrice as gas_price,\n gasUsed as gas_used,\n cumulativeGasUsed as cumulative_gas_used,\n confirmations\n FROM input\n merge:\n kind: ledger\n primaryKey:\n - transaction_hash\n"; + +export const mockSetPollingSourceEventYamlWithQuery = + "kind: MetadataBlock\nversion: 2\ncontent:\n systemTime: 2023-07-04T18:55:54.589816635Z\n prevBlockHash: zW1g6av77Pa7eveCF42CLnyY6GD8KpekarcA6KZtVgr52FR\n sequenceNumber: 1\n event:\n kind: setPollingSource\n fetch:\n kind: url\n url: https://api.etherscan.io/api?module=account&action=txlist&address=0xeadb3840596cabf312f2bc88a4bb0b93a4e1ff5f&page=1&offset=1000&startblock=0&endblock=99999999&apikey=${{ env.ETHERSCAN_API_KEY }}\n prepare:\n - kind: pipe\n command:\n - jq\n - -c\n - .result[]\n read:\n kind: jsonLines\n schema:\n - blockNumber STRING\n - timeStamp STRING\n - hash STRING\n - nonce STRING\n - blockHash STRING\n - transactionIndex STRING\n - from STRING\n - to STRING\n - value STRING\n - gas STRING\n - gasPrice STRING\n - isError STRING\n - txreceipt_status STRING\n - input STRING\n - contractAddress STRING\n - cumulativeGasUsed STRING\n - gasUsed STRING\n - confirmations STRING\n preprocess:\n kind: sql\n engine: spark\n query: |\n SELECT\n cast(cast(timeStamp as bigint) as timestamp) as block_time,\n cast(blockNumber as bigint) as block_number,\n blockHash as block_hash,\n 'eth' as symbol,\n hash as transaction_hash,\n transactionIndex as transaction_index,\n nonce,\n from,\n to,\n value,\n input,\n isError,\n txreceipt_status,\n contractAddress as contract_address,\n gas,\n gasPrice as gas_price,\n gasUsed as gas_used,\n cumulativeGasUsed as cumulative_gas_used,\n confirmations\n FROM input\n merge:\n kind: ledger\n primaryKey:\n - transaction_hash\n"; + +export const mockSetPollingSourceEventYamlWithoutPreprocess = + "kind: MetadataBlock\nversion: 2\ncontent:\n systemTime: 2023-07-19T11:32:40.032474125Z\n prevBlockHash: zW1a24AfmasmU3nLWDgfTKUdrQuiWZkqzNP2A4hQMumRNX4\n sequenceNumber: 4\n event:\n kind: setPollingSource\n fetch:\n kind: url\n url: https://api.etherscan.io/api?module=account&action=txlist&address=0xeadb3840596cabf312f2bc88a4bb0b93a4e1ff5f&page=1&offset=1000&startblock=0&endblock=99999999&apikey=${{ env.ETHERSCAN_API_KEY }}\n eventTime:\n kind: fromMetadata\n prepare:\n - kind: pipe\n command:\n - jq\n - -c\n - .result[]\n - kind: decompress\n format: zip\n read:\n kind: jsonLines\n schema:\n - blockNumber STRING\n - timeStamp STRING\n - hash STRING\n - nonce STRING\n - blockHash STRING\n - transactionIndex STRING\n - from STRING\n - to STRING\n - value STRING\n - gas STRING\n - gasPrice STRING\n - isError STRING\n - txreceipt_status STRING\n - input STRING\n - contractAddress STRING\n - cumulativeGasUsed STRING\n - gasUsed STRING\n - confirmations STRING\n dateFormat: yyyy-MM-dd\n encoding: UTF-8\n timestampFormat: yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]\n merge:\n kind: ledger\n primaryKey:\n - transaction_hash\n"; From 4602cb4c49ba0a434fedce518c58cad365636822 Mon Sep 17 00:00:00 2001 From: Dmitriy Borzenko Date: Thu, 20 Jul 2023 14:01:13 +0300 Subject: [PATCH 10/11] Add validation for Pipe. --- .../add-polling-source.component.html | 3 +-- .../add-polling-source.component.ts | 8 +++++++- .../process-form.service.ts | 13 ++++++++++--- .../prepare-step/prepare-step.component.html | 19 ++++++++++++++++--- .../prepare-step/prepare-step.component.ts | 16 +++++++++++++--- 5 files changed, 47 insertions(+), 12 deletions(-) diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html index f4e5a0947..131fabe5e 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.html @@ -26,7 +26,7 @@ @@ -92,7 +92,6 @@
-
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts index 4f255b893..6993d0514 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source.component.ts @@ -18,7 +18,7 @@ import { Component, OnInit, } from "@angular/core"; -import { FormBuilder, FormGroup } from "@angular/forms"; +import { FormArray, FormBuilder, FormGroup } from "@angular/forms"; import { AppDatasetCreateService } from "src/app/dataset-create/dataset-create.service"; import { TemplatesYamlEventsService } from "src/app/services/templates-yaml-events.service"; import { NgbModal, NgbModalRef } from "@ng-bootstrap/ng-bootstrap"; @@ -87,6 +87,12 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { ) as FormGroup; } + public get prepareForm(): FormArray { + return this.pollingSourceForm.get( + SetPollingSourceSection.PREPARE, + ) as FormArray; + } + public get readForm(): FormGroup { return this.pollingSourceForm.get( SetPollingSourceSection.READ, diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts index 3a8398785..1786d6f02 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts @@ -8,7 +8,11 @@ import { } from "./process-form.service.types"; import { SetPollingSource } from "src/app/api/kamu.graphql.interface"; import { SetPollingSourceSection } from "src/app/shared/shared.types"; -import { EditFormType, FetchKind } from "./add-polling-source-form.types"; +import { + EditFormType, + FetchKind, + PrepareKind, +} from "./add-polling-source-form.types"; @Injectable({ providedIn: "root", @@ -43,10 +47,13 @@ export class ProcessFormService { const form = formGroup.value as EditFormType; if (form.prepare && form.prepare.length > 0) { form.prepare.map((item) => { - if (item.kind === "pipe" && typeof item.command === "string") { + if ( + item.kind === PrepareKind.PIPE && + typeof item.command === "string" + ) { item.command = item.command.trim().split(" "); } - if (item.kind === "decompress" && !item.subPath) { + if (item.kind === PrepareKind.DECOMPRESS && !item.subPath) { delete item.subPath; } }); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html index 0fc3fa0d0..5619675f0 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html +++ b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/steps/prepare-step/prepare-step.component.html @@ -27,6 +27,21 @@

Pipe

+
+ + Field is required +