From 75148fb5a59d4dd94a931fb5fcb774003aa1cfae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=ADdia=20Tarcza?= <100163235+diatrcz@users.noreply.github.com> Date: Thu, 18 Dec 2025 10:57:30 +0100 Subject: [PATCH] fix(ibm-use-date-based-format): extend date-based-utils with exceptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: LĂ­dia Tarcza <100163235+diatrcz@users.noreply.github.com> --- .../ruleset/src/utils/date-based-utils.js | 7 ++++- .../test/rules/use-date-based-format.test.js | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/ruleset/src/utils/date-based-utils.js b/packages/ruleset/src/utils/date-based-utils.js index 6d9409018..2d891bbb7 100644 --- a/packages/ruleset/src/utils/date-based-utils.js +++ b/packages/ruleset/src/utils/date-based-utils.js @@ -65,7 +65,12 @@ function isDateBasedName(name) { /.*timestamp.*/, ]; - return dateBasedNamePatterns.some(regex => regex.test(name)); + const exceptionNamePatterns = [/.*depends_on$/]; + + return ( + dateBasedNamePatterns.some(regex => regex.test(name)) && + !exceptionNamePatterns.some(regex => regex.test(name)) + ); } /** diff --git a/packages/ruleset/test/rules/use-date-based-format.test.js b/packages/ruleset/test/rules/use-date-based-format.test.js index f746c6ddc..86d9dda5e 100644 --- a/packages/ruleset/test/rules/use-date-based-format.test.js +++ b/packages/ruleset/test/rules/use-date-based-format.test.js @@ -284,6 +284,34 @@ describe(`Spectral rule: ${ruleId}`, () => { const results = await testRule(ruleId, rule, testDocument); expect(results).toHaveLength(0); }); + + it("depends_on doesn't yield error", async () => { + const testDocument = makeCopy(rootDocument); + testDocument.components.schemas.Movie.properties.metadata = { + oneOf: [ + { + type: 'object', + properties: { + depends_on: { + maxLength: '25', + type: 'string', + }, + }, + }, + { + type: 'object', + properties: { + irrelevant: { + type: 'boolean', + }, + }, + }, + ], + }; + + const results = await testRule(ruleId, rule, testDocument); + expect(results).toHaveLength(0); + }); }); describe('Should yield errors', () => {