diff --git a/packages/ruleset/src/utils/date-based-utils.js b/packages/ruleset/src/utils/date-based-utils.js index 6d940901..2d891bbb 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 f746c6dd..86d9dda5 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', () => {