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/app.values.ts b/src/app/common/app.values.ts index 2d0d5a693..a8ff50cec 100644 --- a/src/app/common/app.values.ts +++ b/src/app/common/app.values.ts @@ -10,6 +10,7 @@ export default class AppValues { public static readonly URL_PATTERN = /^(http:\/\/)|(https:\/\/)/i; public static readonly SCHEMA_NAME_PATTERN = /^[a-zA-Z0-9]+[a-zA-Z0-9\s(_)]*$/i; + public static readonly SPLIT_ARGUMENTS_PATTERN = /\w+|"[^"]+"/g; public static readonly DISPLAY_DATE_FORMAT = "DD MMM YYYY"; public static readonly DISPLAY_TOOLTIP_DATE_FORMAT = "MMM D, YYYY, HH:mm A"; 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/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/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/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-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-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-form.types.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/add-polling-source-form.types.ts index 94d3343d4..4895ed2dd 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 { SqlQueryStep, Transform } from "src/app/api/kamu.graphql.interface"; + /* eslint-disable @typescript-eslint/no-explicit-any */ export interface JsonFormValidators { required?: boolean; @@ -70,6 +72,11 @@ export enum PrepareKind { DECOMPRESS = "decompress", } +export enum DecompressFormat { + ZIP = "zip", + GZIP = "gzip", +} + export enum PreprocessKind { SQL = "sql", } @@ -113,6 +120,16 @@ export interface EditFormType { primaryKey?: string[]; compareColumns?: string[]; }; + preprocess?: Transform & { + kind: PreprocessKind.SQL; + query?: string; + }; + prepare?: { + kind: string; + command?: string[] | string; + format?: string; + subPath?: string; + }[]; } export interface EditFormParseType { @@ -125,3 +142,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 0a3eb8bda..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 @@ -1,39 +1,5 @@
-
@@ -47,19 +13,20 @@ > - + @@ -73,18 +40,21 @@ [eventYamlByHash]="eventYamlByHash" > - + { 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/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..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 @@ -4,8 +4,7 @@ import { FetchKind, ReadKind, MergeKind, - PrepareKind, - PreprocessKind, + PreprocessStepValue, } from "./add-polling-source-form.types"; import { FinalYamlModalComponent } from "../final-yaml-modal/final-yaml-modal.component"; import { @@ -19,13 +18,9 @@ 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 { 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 { @@ -51,16 +46,15 @@ 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 showPreprocessStep = false; public errorMessage = ""; public history: DatasetHistoryUpdate; public eventYamlByHash: MaybeNull; public datasetKind: DatasetKind; - - // -------------------------------- - private readonly DEFAULT_PREPARE_KIND = PrepareKind.PIPE; - private readonly DEFAULT_PREPROCESS_KIND = PreprocessKind.SQL; + public preprocessStepValue: PreprocessStepValue = { + engine: "", + queries: [], + }; // --------------------------------- public readonly FETCH_STEP_RADIO_DATA = FETCH_STEP_RADIO_CONTROLS; public readonly FETCH_FORM_DATA = FETCH_FORM_DATA; @@ -78,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], }), @@ -92,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, @@ -104,43 +105,10 @@ 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, private yamlEventService: TemplatesYamlEventsService, - private activatedRoute: ActivatedRoute, private modalService: NgbModal, private cdr: ChangeDetectorRef, private processFormService: ProcessFormService, @@ -189,24 +157,15 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { SetPollingSource, "__typename" >, + this.showPreprocessStep + ? this.preprocessStepValue + : null, ), ) .subscribe(), ); } - 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, @@ -219,11 +178,16 @@ export class AddPollingSourceComponent extends BaseComponent implements OnInit { SetPollingSource, "__typename" >, + this.showPreprocessStep ? this.preprocessStepValue : null, ); (modalRef.componentInstance as FinalYamlModalComponent).datasetInfo = this.getDatasetInfoFromUrl(); } + public onShowPreprcessStep(showPreprocessStep: boolean): void { + 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/process-form.service.ts b/src/app/dataset-view/additional-components/metadata-component/components/add-polling-source/process-form.service.ts index 5159d52ad..52895798d 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,12 @@ 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, + PrepareKind, +} from "./add-polling-source-form.types"; +import AppValues from "src/app/common/app.values"; @Injectable({ providedIn: "root", @@ -19,6 +24,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 +44,32 @@ 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 === PrepareKind.PIPE && + typeof item.command === "string" + ) { + item.command = item.command + .trim() + .match(AppValues.SPLIT_ARGUMENTS_PATTERN) as string[]; + } + if (item.kind === PrepareKind.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/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..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 @@ -1,5 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; import { + FormArray, FormBuilder, FormControl, FormGroupDirective, @@ -16,13 +17,15 @@ 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([], []); +export const formGroupDirective = new FormGroupDirective([], []); formGroupDirective.form = fb.group({ fetch: fb.group({ kind: new FormControl(FetchKind.URL), }), + prepare: new FormArray([]), }); describe("BaseStepComponent", () => { @@ -36,6 +39,7 @@ describe("BaseStepComponent", () => { ReactiveFormsModule, NgbTooltipModule, PollingSourceFormComponentsModule, + SharedTestModule, ], providers: [ Apollo, 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..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 @@ -1 +1,125 @@ -

prepare-step works!

+

Prepare

+
+

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

+
+
+
+ +
+

Pipe

+
+ +
+ +
+ + Field is required +
+
+ + + +
+
+
+ +
+

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.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..c8932fb09 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,22 @@ 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"; +import { mockSetPollingSourceEventYaml } from "../../../set-transform/mock.data"; +import { emitClickOnElementByDataTestId } from "src/app/common/base-test.helpers.spec"; +import { + DecompressFormat, + PrepareKind, +} from "../../add-polling-source-form.types"; describe("PrepareStepComponent", () => { let component: PrepareStepComponent; @@ -9,14 +25,50 @@ 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; + component.eventYamlByHash = mockSetPollingSourceEventYaml; fixture.detectChanges(); }); it("should create", () => { expect(component).toBeTruthy(); }); + + it("should check add and delete item", () => { + component.sectionForm.clear(); + expect(component.sectionForm.length).toEqual(0); + emitClickOnElementByDataTestId(fixture, "add-pipe"); + expect(component.sectionForm.length).toEqual(1); + emitClickOnElementByDataTestId(fixture, "remove-item-0"); + expect(component.sectionForm.length).toEqual(0); + }); + + it("should check add decompress", () => { + const result = { + kind: PrepareKind.DECOMPRESS, + format: DecompressFormat.ZIP, + subPath: "", + }; + component.sectionForm.clear(); + expect(component.sectionForm.length).toEqual(0); + emitClickOnElementByDataTestId(fixture, "add-decompress"); + emitClickOnElementByDataTestId(fixture, "add-pipe"); + expect(component.sectionForm.at(0).value).toEqual(result); + + emitClickOnElementByDataTestId(fixture, "move-down-item-0"); + + expect(component.sectionForm.at(1).value).toEqual(result); + }); }); 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..6bed0e907 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,130 @@ -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { + ChangeDetectionStrategy, + Component, + Input, + OnInit, +} from "@angular/core"; +import { + ControlContainer, + FormArray, + FormBuilder, + FormGroup, + FormGroupDirective, + Validators, +} 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 { + DecompressFormat, + 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(" "), + // eslint-disable-next-line @typescript-eslint/unbound-method + Validators.required, + ), + }); + } 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( + "", + // eslint-disable-next-line @typescript-eslint/unbound-method + Validators.required, + ), + }), + ); + } + + public addDecompress(): void { + this.sectionForm.push( + this.fb.group({ + kind: this.fb.control(PrepareKind.DECOMPRESS), + format: this.fb.control(DecompressFormat.ZIP), + 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/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..bf0ff6f12 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,40 @@ -

preprocess-step works!

+

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 e69de29bb..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 @@ -0,0 +1,7 @@ +.container-queries + 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/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 191b30108..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,6 +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 { + 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; @@ -8,15 +24,76 @@ describe("PreprocessStepComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [PreprocessStepComponent], - }).compileComponents(); + declarations: [ + PreprocessStepComponent, + QueriesSectionComponent, + EngineSectionComponent, + ], + imports: [ + ReactiveFormsModule, + ApolloModule, + ApolloTestingModule, + FormsModule, + MonacoEditorModule.forRoot(), + MatIconModule, + SharedTestModule, + ], + 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/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..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 @@ -1,4 +1,18 @@ -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { + ChangeDetectionStrategy, + Component, + EventEmitter, + Input, + OnInit, + Output, +} from "@angular/core"; +import { + EditFormType, + PreprocessStepValue, +} from "../../add-polling-source-form.types"; +import { MaybeNull } from "src/app/common/app.types"; +import { EditPollingSourceService } from "../../edit-polling-source.service"; +import { BaseComponent } from "src/app/common/base.component"; @Component({ selector: "app-preprocess-step", @@ -6,4 +20,59 @@ import { ChangeDetectionStrategy, Component } from "@angular/core"; styleUrls: ["./preprocess-step.component.sass"], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class PreprocessStepComponent {} +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) { + super(); + } + + ngOnInit(): void { + if (this.eventYamlByHash) { + this.setPollingSourceEvent = this.editService.parseEventFromYaml( + this.eventYamlByHash, + ); + if (this.setPollingSourceEvent.preprocess) { + this.showPreprocessStepEmitter.emit(true); + this.initExistingQueries(); + } else { + this.initDefaultQueriesSection(); + } + } + } + + public onSelectEngine(engine: string): void { + this.preprocessValue.engine = engine; + } + + public onCheckedPreprocessStep(event: Event): void { + const input = event.target as HTMLInputElement; + this.showPreprocessStepEmitter.emit(input.checked); + } + + private initDefaultQueriesSection(query = ""): void { + if (!this.preprocessValue.queries.length) { + this.preprocessValue.queries.push({ + alias: this.getDatasetInfoFromUrl().datasetName, + 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/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.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 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.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

- +
{ let component: EngineSectionComponent; @@ -28,6 +30,7 @@ describe("EngineSectionComponent", () => { ApolloTestingModule, FormsModule, MatDividerModule, + SharedTestModule, ], }).compileComponents(); @@ -55,13 +58,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 571ccbec6..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 @@ -7,9 +7,13 @@ import { OnInit, Output, } from "@angular/core"; -import { EngineDesc, EnginesQuery } from "src/app/api/kamu.graphql.interface"; +import { + EngineDesc, + EnginesQuery, + Maybe, + TransformSql, +} 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 +25,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: Maybe | undefined; @Input() public selectedEngine: string; @Output() public onEmitSelectedEngine: EventEmitter = new EventEmitter(); @@ -54,9 +58,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(); }), @@ -64,9 +73,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 @@ >
-
+
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/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(); 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(); 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); } diff --git a/src/styles.sass b/src/styles.sass index ab05ddb16..4cf55c29b 100644 --- a/src/styles.sass +++ b/src/styles.sass @@ -1040,8 +1040,8 @@ pre .mat-icon-button background-color: transparent !important -.w-425 - width: 370px!important +.w-350 + width: 350px!important .button-custom display: flex