From 7b35adbbe127241af371f98c53599971c87315b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Colladon?= Date: Wed, 10 May 2023 21:47:17 +0200 Subject: [PATCH] refactor: migrate wave type to shared folder type --- .../unit/lib/metadata/metadataManager.test.js | 20 +++++++++---------- ...er.test.js => sharedFolderHandler.test.js} | 6 +++--- src/metadata/metadataManager.js | 15 ++++++++------ src/service/botHandler.js | 4 ++-- ...{waveHandler.js => sharedFolderHandler.js} | 14 ++++++------- src/service/typeHandlerFactory.js | 8 ++++---- 6 files changed, 35 insertions(+), 32 deletions(-) rename __tests__/unit/lib/service/{waveHandler.test.js => sharedFolderHandler.test.js} (81%) rename src/service/{waveHandler.js => sharedFolderHandler.js} (53%) diff --git a/__tests__/unit/lib/metadata/metadataManager.test.js b/__tests__/unit/lib/metadata/metadataManager.test.js index dd3a42ed..07870710 100644 --- a/__tests__/unit/lib/metadata/metadataManager.test.js +++ b/__tests__/unit/lib/metadata/metadataManager.test.js @@ -3,7 +3,7 @@ const { getDefinition, getInFileAttributes, getLatestSupportedVersion, - getWaveMetadata, + getSharedFolderMetadata, isVersionSupported, } = require('../../../../src/metadata/metadataManager') @@ -106,7 +106,7 @@ describe(`test if metadata`, () => { expect(otherInFileAttributes).toBe(inFileAttributes) }) - test('getWaveMetadata', async () => { + test('getSharedFolderMetadata', async () => { // Arrange const metadata = new Map([ [ @@ -139,19 +139,19 @@ describe(`test if metadata`, () => { ]) // Act - let waveMetadata = getWaveMetadata(metadata) + let sharedFolderMetadata = getSharedFolderMetadata(metadata) // Assert - expect(waveMetadata.has('discovery')).toBe(false) - expect(waveMetadata.has('goal')).toBe(true) - expect(waveMetadata.has('model')).toBe(true) - expect(waveMetadata.get('goal')).toEqual('DiscoveryGoal') - expect(waveMetadata.get('model')).toEqual('DiscoveryAIModel') + expect(sharedFolderMetadata.has('discovery')).toBe(false) + expect(sharedFolderMetadata.has('goal')).toBe(true) + expect(sharedFolderMetadata.has('model')).toBe(true) + expect(sharedFolderMetadata.get('goal')).toEqual('DiscoveryGoal') + expect(sharedFolderMetadata.get('model')).toEqual('DiscoveryAIModel') // Act - let otherWaveMetadata = getWaveMetadata(metadata) + let othersharedFolderMetadata = getSharedFolderMetadata(metadata) // Assert - expect(otherWaveMetadata).toBe(waveMetadata) + expect(othersharedFolderMetadata).toBe(sharedFolderMetadata) }) }) diff --git a/__tests__/unit/lib/service/waveHandler.test.js b/__tests__/unit/lib/service/sharedFolderHandler.test.js similarity index 81% rename from __tests__/unit/lib/service/waveHandler.test.js rename to __tests__/unit/lib/service/sharedFolderHandler.test.js index b704d575..7aa38f93 100644 --- a/__tests__/unit/lib/service/waveHandler.test.js +++ b/__tests__/unit/lib/service/sharedFolderHandler.test.js @@ -1,5 +1,5 @@ 'use strict' -const WaveHandler = require('../../../../src/service/waveHandler') +const SharedFolderHandler = require('../../../../src/service/sharedFolderHandler') const objectType = 'discovery' const entityName = 'DiscoveryAIModelTest' @@ -16,7 +16,7 @@ beforeEach(() => { } }) -describe('Wavehandler', () => { +describe('SharedFolderHandler', () => { let globalMetadata beforeAll(async () => { // eslint-disable-next-line no-undef @@ -25,7 +25,7 @@ describe('Wavehandler', () => { it('should add the metadata component under the right type to the package', async () => { // Arrange - const sut = new WaveHandler(line, objectType, work, globalMetadata) + const sut = new SharedFolderHandler(line, objectType, work, globalMetadata) // Act await sut.handleAddition() diff --git a/src/metadata/metadataManager.js b/src/metadata/metadataManager.js index b7bce054..0d3ae6e0 100644 --- a/src/metadata/metadataManager.js +++ b/src/metadata/metadataManager.js @@ -6,7 +6,7 @@ const _apiMap = new Map() let _latestVersion = null const describeMetadata = new Map() const inFileMetadata = new Map() -const waveMetadata = new Map() +const sharedFolderMetadata = new Map() const buildAPIMap = async () => { if (_apiMap.size === 0) { @@ -66,17 +66,20 @@ const getInFileAttributes = metadata => inFileMetadata ) -const getWaveMetadata = metadata => - waveMetadata.size - ? waveMetadata +const getSharedFolderMetadata = metadata => + sharedFolderMetadata.size + ? sharedFolderMetadata : Array.from(metadata.values()) .filter(meta => meta.content) .flatMap(elem => elem.content) - .reduce((acc, val) => acc.set(val.suffix, val.xmlName), waveMetadata) + .reduce( + (acc, val) => acc.set(val.suffix, val.xmlName), + sharedFolderMetadata + ) module.exports.getDefinition = getDefinition module.exports.getInFileAttributes = getInFileAttributes module.exports.getLatestSupportedVersion = getLatestSupportedVersion -module.exports.getWaveMetadata = getWaveMetadata +module.exports.getSharedFolderMetadata = getSharedFolderMetadata module.exports.isPackable = isPackable module.exports.isVersionSupported = isVersionSupported diff --git a/src/service/botHandler.js b/src/service/botHandler.js index ec4544e9..6c5249cd 100644 --- a/src/service/botHandler.js +++ b/src/service/botHandler.js @@ -1,12 +1,12 @@ 'use strict' -const WaveHandler = require('./waveHandler') +const ShareFolderHandler = require('./sharedFolderHandler') const { fillPackageWithParameter } = require('../utils/packageHelper') const { parse, sep } = require('path') const BOT_TYPE = 'Bot' const BOT_EXTENSION = 'bot' -class BotHandler extends WaveHandler { +class BotHandler extends ShareFolderHandler { _getElementName() { const parsedPath = this._getParsedPath() const elementName = new Set([ diff --git a/src/service/waveHandler.js b/src/service/sharedFolderHandler.js similarity index 53% rename from src/service/waveHandler.js rename to src/service/sharedFolderHandler.js index ccd4d2d4..3ad1f261 100644 --- a/src/service/waveHandler.js +++ b/src/service/sharedFolderHandler.js @@ -1,19 +1,19 @@ 'use strict' const StandardHandler = require('./standardHandler') const { fillPackageWithParameter } = require('../utils/packageHelper') -const { getWaveMetadata } = require('../metadata/metadataManager') +const { getSharedFolderMetadata } = require('../metadata/metadataManager') -class WaveHandler extends StandardHandler { - waveMetadata +class SharedFolderHandler extends StandardHandler { + sharedFolderMetadata constructor(line, type, work, metadata) { super(line, type, work, metadata) this.suffixRegex = new RegExp(`\\.${this.ext}$`) - this.waveMetadata = getWaveMetadata(this.metadata) + this.sharedFolderMetadata = getSharedFolderMetadata(this.metadata) } _fillPackage(store) { - const type = this.waveMetadata.get(this.ext) + const type = this.sharedFolderMetadata.get(this.ext) fillPackageWithParameter({ store, type: type, @@ -22,8 +22,8 @@ class WaveHandler extends StandardHandler { } _isProcessable() { - return super._isProcessable() || this.waveMetadata.has(this.ext) + return super._isProcessable() || this.sharedFolderMetadata.has(this.ext) } } -module.exports = WaveHandler +module.exports = SharedFolderHandler diff --git a/src/service/typeHandlerFactory.js b/src/service/typeHandlerFactory.js index ddc9a181..0c2f1ccb 100644 --- a/src/service/typeHandlerFactory.js +++ b/src/service/typeHandlerFactory.js @@ -9,7 +9,7 @@ const LwcHandler = require('./lwcHandler') const Standard = require('./standardHandler') const SubCustomObject = require('./subCustomObjectHandler') const ObjectTranslation = require('./ObjectTranslationHandler') -const Wave = require('./waveHandler') +const SharedFolder = require('./sharedFolderHandler') const { getType } = require('../utils/typeUtils') @@ -22,7 +22,7 @@ const classes = { compactLayouts: SubCustomObject, dashboards: InFolder, digitalExperiences: InBundleHandler, - discovery: Wave, + discovery: SharedFolder, documents: InFolder, email: InFolder, escalationRules: InFile, @@ -35,7 +35,7 @@ const classes = { listViews: SubCustomObject, lwc: LwcHandler, matchingRules: InFile, - moderation: Wave, + moderation: SharedFolder, objects: CustomObject, objectTranslations: ObjectTranslation, profiles: InFile, @@ -50,7 +50,7 @@ const classes = { territory2Models: CustomObject, translations: InFile, validationRules: SubCustomObject, - wave: Wave, + wave: SharedFolder, waveTemplates: InResource, webLinks: SubCustomObject, workflows: InFile,