diff options
author | andre.schmid <andre.schmid@est.tech> | 2020-01-29 17:25:21 +0000 |
---|---|---|
committer | Ofir Sonsino <ofir.sonsino@intl.att.com> | 2020-04-19 16:35:32 +0000 |
commit | cd6f933375c412c2f79a12e909821322d58a8499 (patch) | |
tree | 758ff2e742b514169bbc84a8433d68fe221ef5c9 /catalog-ui/src/app/ng2/services | |
parent | dc56692a4a307f378c827f017d2efbf754c223e0 (diff) |
Configure a new Artifact Type
Centralizes artifact configuration in one yaml entry.
Allow the configuration of a new artifact type without
the need of code changes.
The configuration file now is used as a source of
artifacts types instead the artifact type enum.
The enum will be used as a source of base artifact types
and also in hard coded business rules.
Change-Id: Id0383d9fca9bce0519a4d52a4ecb3a68c8713f0f
Issue-ID: SDC-2754
Signed-off-by: andre.schmid <andre.schmid@est.tech>
Diffstat (limited to 'catalog-ui/src/app/ng2/services')
-rw-r--r-- | catalog-ui/src/app/ng2/services/artifact-config.service.spec.ts | 23 | ||||
-rw-r--r-- | catalog-ui/src/app/ng2/services/artifact-config.service.ts | 50 |
2 files changed, 73 insertions, 0 deletions
diff --git a/catalog-ui/src/app/ng2/services/artifact-config.service.spec.ts b/catalog-ui/src/app/ng2/services/artifact-config.service.spec.ts new file mode 100644 index 0000000000..bbbd387b4e --- /dev/null +++ b/catalog-ui/src/app/ng2/services/artifact-config.service.spec.ts @@ -0,0 +1,23 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { ArtifactConfigService } from './artifact-config.service'; +import {CacheService} from "./cache.service"; + +describe('ArtifactConfigService', () => { + beforeEach(() => { + const cacheServiceMock = { + get: jest.fn(() => { + return { + artifact: null + } + }) + }; + TestBed.configureTestingModule({ + providers: [ArtifactConfigService, {provide: CacheService, useValue: cacheServiceMock}] + }); + }); + + it('should be created', inject([ArtifactConfigService], (service: ArtifactConfigService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/catalog-ui/src/app/ng2/services/artifact-config.service.ts b/catalog-ui/src/app/ng2/services/artifact-config.service.ts new file mode 100644 index 0000000000..e3f914fa29 --- /dev/null +++ b/catalog-ui/src/app/ng2/services/artifact-config.service.ts @@ -0,0 +1,50 @@ +import {Injectable} from '@angular/core'; +import {CacheService} from './cache.service'; +import {ArtifactType} from "../../utils/constants"; + +@Injectable() +export class ArtifactConfigService { + + artifactConfigList:Array<object>; + + constructor(private cacheService: CacheService) { + const uiConfiguration = cacheService.get('UIConfiguration'); + this.artifactConfigList = uiConfiguration.artifact; + } + + public getConfig() { + return this.artifactConfigList; + } + + public findAllBy(artifactType?:ArtifactType, componentType?:string, resourceType?:string):Array<object> { + return this.artifactConfigList.filter((artifactConfig:any) => { + let hasCategory = true; + if (artifactType) { + hasCategory = artifactConfig.categories && artifactConfig.categories.some(value => value == artifactType); + } + let hasComponentType = true; + if (componentType) { + hasComponentType = artifactConfig.componentTypes && artifactConfig.componentTypes.some(value => value == componentType); + } + let hasResourceType = true; + //resourceTypes are not restrictive, if it was not configured all resources are accepted. + if (resourceType && artifactConfig.resourceTypes) { + hasResourceType = artifactConfig.resourceTypes.some(value => value == resourceType); + } + return hasCategory && hasComponentType && hasResourceType; + }); + } + + + public findAllTypeBy(artifactType?:ArtifactType, componentType?:string, resourceType?:string):Array<string> { + const artifactConfigList = this.findAllBy(artifactType, componentType, resourceType); + if (artifactConfigList) { + return artifactConfigList.map((element: any) => { + return element.type; + }); + } + + return []; + } + +} |