From d48486605e7dfaeb28b6d39e18c2156fcc0e51ba Mon Sep 17 00:00:00 2001 From: Sophia Marie Terry Date: Wed, 16 Jul 2025 09:39:36 +0100 Subject: [PATCH 1/4] quickfix for legacy custom methods --- .../ipa/rulesets/functions/utils/operationIdGeneration.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js b/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js index 69921f42db..25f1116fb6 100644 --- a/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js +++ b/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js @@ -24,6 +24,7 @@ export function generateOperationID(method, path) { // legacy custom method - use end of path as custom method name if (!method) { method = nouns.pop(); + resourceIdentifier = resourceIdentifier.slice(0, resourceIdentifier.lastIndexOf('/')); } nouns = nouns.map((noun) => capitalize(noun)); From 6107a5da5a79cdacd3f87568551ffae33dc028ba Mon Sep 17 00:00:00 2001 From: Sophia Marie Terry Date: Wed, 16 Jul 2025 09:54:14 +0100 Subject: [PATCH 2/4] Fix for legacy custom method noun plurality --- .../ipa/__tests__/utils/operationIdGeneration.test.js | 2 +- .../rulesets/functions/utils/operationIdGeneration.js | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js b/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js index 185987d00f..b39ac9cd98 100644 --- a/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js +++ b/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js @@ -28,7 +28,7 @@ describe('tools/spectral/ipa/utils/operationIdGeneration.js', () => { expect(generateOperationID('addNode', '/groups/{groupId}/clusters/{clusterName}')).toEqual('addGroupClusterNode'); expect(generateOperationID('get', '/api/atlas/v2/groups/byName/{groupName}')).toEqual('getGroupByName'); expect(generateOperationID('', '/api/atlas/v2/groups/{groupId}/backup/exportBuckets/{exportBucketId}')).toEqual( - 'exportGroupBackupBucket' + 'exportGroupBackupBuckets' ); }); diff --git a/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js b/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js index 25f1116fb6..a3fcda762a 100644 --- a/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js +++ b/tools/spectral/ipa/rulesets/functions/utils/operationIdGeneration.js @@ -30,9 +30,10 @@ export function generateOperationID(method, path) { nouns = nouns.map((noun) => capitalize(noun)); let verb = deriveActionVerb(method); + const camelCaseCustomMethod = method.length > verb.length; // if custom method name is multiple words, add trailing nouns to the operation ID - if (method.length > verb.length) { + if (camelCaseCustomMethod) { nouns.push(method.slice(verb.length)); } @@ -41,10 +42,10 @@ export function generateOperationID(method, path) { opID += inflection.singularize(nouns[i]); } - // singularize final noun, dependent on resource identifier + // singularize final noun, dependent on resource identifier - leave custom nouns alone if ( - isPathParam(resourceIdentifier.split('/').pop()) || - isSingleResourceIdentifier(resourceIdentifier) || + ((isPathParam(resourceIdentifier.split('/').pop()) || isSingleResourceIdentifier(resourceIdentifier)) && + !camelCaseCustomMethod) || verb === 'create' ) { nouns[nouns.length - 1] = inflection.singularize(nouns[nouns.length - 1]); From 4631e32c1e6d28ca52229955d7c6a47f891e8097 Mon Sep 17 00:00:00 2001 From: Sophia Marie Terry Date: Wed, 16 Jul 2025 09:56:57 +0100 Subject: [PATCH 3/4] added test for fixed edge case --- tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js b/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js index b39ac9cd98..487a02143e 100644 --- a/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js +++ b/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js @@ -36,5 +36,6 @@ describe('tools/spectral/ipa/utils/operationIdGeneration.js', () => { expect(generateOperationID('', '/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/restartPrimaries')).toEqual( 'restartGroupClusterPrimaries' ); + expect(generateOperationID('','/api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/pause')).toEqual('pauseGroupPipeline') }); }); From 95afb13a1bbab523a407391debe6d54a8eab76d5 Mon Sep 17 00:00:00 2001 From: Sophia Marie Terry Date: Wed, 16 Jul 2025 09:57:18 +0100 Subject: [PATCH 4/4] prettier --- .../ipa/__tests__/utils/operationIdGeneration.test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js b/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js index 487a02143e..7f1f92dafd 100644 --- a/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js +++ b/tools/spectral/ipa/__tests__/utils/operationIdGeneration.test.js @@ -36,6 +36,8 @@ describe('tools/spectral/ipa/utils/operationIdGeneration.js', () => { expect(generateOperationID('', '/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/restartPrimaries')).toEqual( 'restartGroupClusterPrimaries' ); - expect(generateOperationID('','/api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/pause')).toEqual('pauseGroupPipeline') + expect(generateOperationID('', '/api/atlas/v2/groups/{groupId}/pipelines/{pipelineName}/pause')).toEqual( + 'pauseGroupPipeline' + ); }); });