From dc501ab101b16d371bf9002be18975e67d631c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Pintos=20L=C3=B3pez?= Date: Thu, 15 Apr 2021 23:29:26 +0200 Subject: [PATCH] refactor: extract non custom tag keys metadata keys module --- src/constants/metadata_keys.ts | 13 +++++++++++++ src/planning/target.ts | 22 ++++++++-------------- test/planning/target.test.ts | 23 +++++++++++++++++++++++ 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/constants/metadata_keys.ts b/src/constants/metadata_keys.ts index a0419536f..0c795fac9 100644 --- a/src/constants/metadata_keys.ts +++ b/src/constants/metadata_keys.ts @@ -30,3 +30,16 @@ export const DESIGN_PARAM_TYPES = "design:paramtypes"; // used to identify postConstruct functions export const POST_CONSTRUCT = "post_construct"; + +function getNonCustomTagKeys(): string[] { + return [ + INJECT_TAG, + MULTI_INJECT_TAG, + NAME_TAG, + UNMANAGED_TAG, + NAMED_TAG, + OPTIONAL_TAG, + ]; +} + +export const NON_CUSTOM_TAG_KEYS: string[] = getNonCustomTagKeys(); diff --git a/src/planning/target.ts b/src/planning/target.ts index c2463a3d5..bd9d90b1f 100644 --- a/src/planning/target.ts +++ b/src/planning/target.ts @@ -64,13 +64,9 @@ class Target implements interfaces.Target { } public isTagged(): boolean { - return this.metadata.some((m) => - (m.key !== METADATA_KEY.INJECT_TAG) && - (m.key !== METADATA_KEY.MULTI_INJECT_TAG) && - (m.key !== METADATA_KEY.NAME_TAG) && - (m.key !== METADATA_KEY.UNMANAGED_TAG) && - (m.key !== METADATA_KEY.NAMED_TAG) && - (m.key !== METADATA_KEY.OPTIONAL_TAG)); + return this.metadata.some( + (metadata) => METADATA_KEY.NON_CUSTOM_TAG_KEYS.every((key) => metadata.key !== key), + ); } public isOptional(): boolean { @@ -86,14 +82,12 @@ class Target implements interfaces.Target { public getCustomTags(): interfaces.Metadata[] | null { if (this.isTagged()) { - return this.metadata.filter((m) => - (m.key !== METADATA_KEY.INJECT_TAG) && - (m.key !== METADATA_KEY.MULTI_INJECT_TAG) && - (m.key !== METADATA_KEY.NAME_TAG) && - (m.key !== METADATA_KEY.UNMANAGED_TAG) && - (m.key !== METADATA_KEY.NAMED_TAG)); + return this.metadata.filter( + (metadata) => METADATA_KEY.NON_CUSTOM_TAG_KEYS.every((key) => metadata.key !== key), + ); + } else { + return null; } - return null; } public matchesNamedTag(name: string): boolean { diff --git a/test/planning/target.test.ts b/test/planning/target.test.ts index 30e23a497..b2e52bfe7 100644 --- a/test/planning/target.test.ts +++ b/test/planning/target.test.ts @@ -78,6 +78,29 @@ describe("Target", () => { target3.metadata.push(new Metadata("power", 5), new Metadata("speed", 5)); expect(target3.isTagged()).to.be.eql(true); + const target4 = new Target(TargetTypeEnum.Variable, "", "Katana"); + target4.metadata.push(new Metadata(METADATA_KEY.INJECT_TAG, "Katana")) + expect(target4.isTagged()).to.be.eql(false); + + const target5 = new Target(TargetTypeEnum.Variable, "", "Katana"); + target5.metadata.push(new Metadata(METADATA_KEY.MULTI_INJECT_TAG, "Katana")) + expect(target5.isTagged()).to.be.eql(false); + + const target6 = new Target(TargetTypeEnum.Variable, "katanaName", "Katana"); + target6.metadata.push(new Metadata(METADATA_KEY.NAME_TAG, "katanaName")) + expect(target6.isTagged()).to.be.eql(false); + + const target7 = new Target(TargetTypeEnum.Variable, "", "Katana"); + target7.metadata.push(new Metadata(METADATA_KEY.UNMANAGED_TAG, true)) + expect(target7.isTagged()).to.be.eql(false); + + const target8 = new Target(TargetTypeEnum.Variable, "katanaName", "Katana"); + target8.metadata.push(new Metadata(METADATA_KEY.NAMED_TAG, "katanaName")) + expect(target8.isTagged()).to.be.eql(false); + + const target9 = new Target(TargetTypeEnum.Variable, "", "Katana"); + target9.metadata.push(new Metadata(METADATA_KEY.OPTIONAL_TAG, true)) + expect(target9.isTagged()).to.be.eql(false); }); it("Should be able to match tagged metadata", () => {