From f1710f9813fbe4861fc39ce1aa777f852b2170e4 Mon Sep 17 00:00:00 2001 From: Roman Lytvynenko Date: Wed, 12 Feb 2025 09:33:36 +0200 Subject: [PATCH] date rule support --- .../RulesExtractor/RulesMapper.php | 9 +++++++++ tests/ValidationRulesDocumentingTest.php | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/Support/OperationExtensions/RulesExtractor/RulesMapper.php b/src/Support/OperationExtensions/RulesExtractor/RulesMapper.php index 2bf4cb88..178ad0a9 100644 --- a/src/Support/OperationExtensions/RulesExtractor/RulesMapper.php +++ b/src/Support/OperationExtensions/RulesExtractor/RulesMapper.php @@ -219,4 +219,13 @@ public function url(Type $type) return $type->format('uri'); } + + public function date(Type $type) + { + if ($type instanceof UnknownType) { + $type = $this->string($type); + } + + return $type->format('date-time'); + } } diff --git a/tests/ValidationRulesDocumentingTest.php b/tests/ValidationRulesDocumentingTest.php index 27e225ec..910e19d5 100644 --- a/tests/ValidationRulesDocumentingTest.php +++ b/tests/ValidationRulesDocumentingTest.php @@ -398,6 +398,20 @@ function validationRulesToDocumentationWithDeep($rulesToParameters) ->toHaveProperty('nullable', true); }); +it('documents date rule', function () { + $rules = [ + 'some_date' => 'date', + ]; + + $params = ($this->buildRulesToParameters)($rules)->handle(); + + expect($params = collect($params)->all()) + ->toHaveCount(1) + ->and($params[0]->schema->type) + ->toBeInstanceOf(\Dedoc\Scramble\Support\Generator\Types\StringType::class) + ->toHaveProperty('format', 'date-time'); +}); + it('extracts rules from request->validate call', function () { RouteFacade::get('api/test', [ValidationRulesDocumenting_Test::class, 'index']);