From b192e55dff318d97472130971a5ebc37ae30fe29 Mon Sep 17 00:00:00 2001 From: KrupaNagabhushan Date: Wed, 25 May 2022 16:14:21 +0100 Subject: Fix Component Instance versions not updating Issue-ID: SDC-4021 Signed-off-by: KrupaNagabhushan Change-Id: Iea32227714504b445689f0d934fdb7d79dd7b09d --- .../__snapshots__/info-tab.component.spec.ts.snap | 1 + .../panel-tabs/info-tab/info-tab.component.spec.ts | 27 +++++----- .../panel-tabs/info-tab/info-tab.component.ts | 57 ++++++++++++---------- catalog-ui/src/jest/mocks/service-metadata.mock.ts | 2 +- 4 files changed, 49 insertions(+), 38 deletions(-) (limited to 'catalog-ui/src') diff --git a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/__snapshots__/info-tab.component.spec.ts.snap b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/__snapshots__/info-tab.component.spec.ts.snap index 7fcb62dbd3..1948395b47 100644 --- a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/__snapshots__/info-tab.component.spec.ts.snap +++ b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/__snapshots__/info-tab.component.spec.ts.snap @@ -14,6 +14,7 @@ exports[`InfoTabComponent can load instance 1`] = ` sdcMenu={[Function Object]} serviceService={[Function Object]} store={[Function Object]} + topologyTemplateService={[Function Object]} versioning={[Function Function]} workspaceService={[Function Object]} > diff --git a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/info-tab.component.spec.ts b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/info-tab.component.spec.ts index 388e4b5542..263e22fa9f 100644 --- a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/info-tab.component.spec.ts +++ b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/info-tab.component.spec.ts @@ -1,4 +1,4 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture} from '@angular/core/testing'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { Store } from '@ngxs/store'; import { CompositionPaletteService } from '../../../../../pages/composition/palette/services/palette.service'; @@ -13,14 +13,13 @@ import { ConfigureFn, configureTests } from "../../../../../../../jest/test-conf import { Observable } from "rxjs"; import { leftPaletteElements } from "../../../../../../../jest/mocks/left-paeltte-elements.mock"; import { TranslatePipe } from "../../../../../shared/translator/translate.pipe"; -import { HttpClientModule } from "@angular/common/http"; -import { TranslateModule } from "../../../../../../../app/ng2/shared/translator/translate.module"; -import _ from "lodash"; import { TranslateService } from "../../../../../shared/translator/translate.service"; import { SdcUiServices } from "onap-ui-angular"; -import { Component as TopologyTemplate, FullComponentInstance, ComponentInstance } from '../../../../../../../app/models'; +import {Component as TopologyTemplate, ComponentInstance, ComponentMetadata} from '../../../../../../../app/models'; import {KeyValuePipe} from "../../../../../pipes/key-value.pipe"; - +import {TopologyTemplateService} from "../../../../../services/component-services/topology-template.service"; +import {ComponentGenericResponse} from "../../../../../services/responses/component-generic-response"; +import {serviceMetadata} from "../../../../../../../jest/mocks/service-metadata.mock"; describe('InfoTabComponent', () => { @@ -31,11 +30,9 @@ describe('InfoTabComponent', () => { let storeStub:Partial; let compositionPaletteServiceStub:Partial; let iAppMenuStub:Partial; - let compositionServiceStub:Partial; - let serviceServiceNg2Stub:Partial; - let workspaceServiceStub:Partial; - let componentInstanceServiceNg2Stub:Partial; let eventListenerServiceStub:Partial; + let topologyTemplateServiceStub:Partial; + let componentGenericResponseStub:Partial; beforeEach( async(() => { @@ -47,6 +44,13 @@ describe('InfoTabComponent', () => { compositionPaletteServiceStub = { getLeftPaletteElements: jest.fn().mockImplementation(()=> Observable.of(leftPaletteElements)) } + componentGenericResponseStub = { + metadata: new ComponentMetadata() + } + componentGenericResponseStub.metadata.allVersions = serviceMetadata.allVersions; + topologyTemplateServiceStub = { + getComponentMetadata: jest.fn().mockImplementation(() => Observable.of(componentGenericResponseStub)) + } const configure: ConfigureFn = testBed => { testBed.configureTestingModule({ imports: [ ], @@ -62,6 +66,7 @@ describe('InfoTabComponent', () => { { provide: WorkspaceService, useValue: {} }, { provide: ComponentInstanceServiceNg2, useValue: {} }, { provide: EventListenerService, useValue: eventListenerServiceStub }, + { provide: TopologyTemplateService, useValue: topologyTemplateServiceStub}, { provide: TranslateService, useValue: {}} ] }); @@ -88,7 +93,7 @@ describe('InfoTabComponent', () => { }); it('does not contain the highest minor version if it is checked out', () => { fixture.componentInstance.component = new ComponentInstance(); - fixture.componentInstance.component.allVersions = + fixture.componentInstance.component.allVersions = {'1.0': "9c829122-af05-4bc9-b537-5d84f4c8ae25", '1.1': "930d56cb-868d-4e35-bd0f-e737d2fdb171"}; fixture.componentInstance.component.version = "1.0"; fixture.componentInstance.component.uuid = "a8cf015e-e4e5-4d4b-a01e-8624e8d36095"; diff --git a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/info-tab.component.ts b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/info-tab.component.ts index cb889a2583..773b44cab7 100644 --- a/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/info-tab.component.ts +++ b/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/info-tab/info-tab.component.ts @@ -21,6 +21,7 @@ import { EventListenerService } from "app/services"; import * as _ from 'lodash'; import {SelectedComponentType, TogglePanelLoadingAction} from "../../../common/store/graph.actions"; import Dictionary = _.Dictionary; +import {TopologyTemplateService} from "../../../../../services/component-services/topology-template.service"; @Component({ @@ -47,6 +48,7 @@ export class InfoTabComponent implements OnInit, OnDestroy { private componentInstanceService: ComponentInstanceServiceNg2, private serviceService: ServiceServiceNg2, private eventListenerService: EventListenerService, + private topologyTemplateService: TopologyTemplateService, @Inject(SdcMenuToken) public sdcMenu:IAppMenu) { } @@ -150,34 +152,37 @@ export class InfoTabComponent implements OnInit, OnDestroy { }; - private initEditResourceVersion = (component, leftPaletteComponents): void => { - if(this.component instanceof ComponentInstance) { - + initEditResourceVersion = (component, leftPaletteComponents): void => { + if (this.component instanceof ComponentInstance) { this.versions = []; - let sorted:any = _.sortBy(_.toPairs(component.allVersions), (item) => { - return item[0] !== "undefined" && this.versioning(item[0]); - }); - _.forEach(sorted, (item) => { - this.versions.push({label: item[0], value: item[1]}); - }); - - let highestVersion = _.last(sorted)[0]; - - if (parseFloat(highestVersion) % 1) { //if highest is minor, make sure it is the latest checked in - - let latestVersionComponent: LeftPaletteComponent = _.maxBy( - _.filter(leftPaletteComponents, (leftPaletteComponent: LeftPaletteComponent) => { //latest checked in - return (leftPaletteComponent.systemName === component.systemName || leftPaletteComponent.uuid === component.uuid); - }) - , (component) => { - return component.version - }); - - let latestVersion: string = latestVersionComponent ? latestVersionComponent.version : highestVersion; - - if (latestVersion && highestVersion != latestVersion) { //highest is checked out - remove from options - this.versions = this.versions.filter(version => version.label != highestVersion); + this.topologyTemplateService.getComponentMetadata(component.getComponentUid(), component.originType) + .subscribe((response) => { + const allVersions = response.metadata.allVersions; + let sorted: any = _.sortBy(_.toPairs(allVersions), (item) => { + return item[0] !== "undefined" && this.versioning(item[0]); + }); + _.forEach(sorted, (item) => { + this.versions.push({label: item[0], value: item[1]}); + }); + + let highestVersion = _.last(sorted)[0]; + + if (parseFloat(highestVersion) % 1) { //if highest is minor, make sure it is the latest checked in - + let latestVersionComponent: LeftPaletteComponent = _.maxBy( + _.filter(leftPaletteComponents, (leftPaletteComponent: LeftPaletteComponent) => { //latest checked in + return (leftPaletteComponent.systemName === component.systemName || leftPaletteComponent.uuid === component.uuid); + }) + , (component) => { + return component.version + }); + + let latestVersion: string = latestVersionComponent ? latestVersionComponent.version : highestVersion; + + if (latestVersion && highestVersion != latestVersion) { //highest is checked out - remove from options + this.versions = this.versions.filter(version => version.label != highestVersion); + } } - } + }); } } diff --git a/catalog-ui/src/jest/mocks/service-metadata.mock.ts b/catalog-ui/src/jest/mocks/service-metadata.mock.ts index b3d6f952d7..8aec30792a 100644 --- a/catalog-ui/src/jest/mocks/service-metadata.mock.ts +++ b/catalog-ui/src/jest/mocks/service-metadata.mock.ts @@ -15,7 +15,7 @@ export const serviceMetadata = { "systemName": "Fsdsfdsfd", "contactId": "cs0008", "allVersions": { - "0.1": "3e39c1d2-8afb-4249-9950-110ec6e6f595" + "1.0": "3e39c1d2-8afb-4249-9950-110ec6e6f595" }, "isDeleted": null, "serviceFunction": "vassavsva", -- cgit 1.2.3-korg