From 54e412c7018a44fb519cf2ffef9037de37a877f9 Mon Sep 17 00:00:00 2001 From: Gianluca Bine Date: Sat, 16 May 2020 15:05:43 -0300 Subject: [PATCH 1/3] Fix no rules generated for belongs to relationship --- src/Generators/Statements/FormRequestGenerator.php | 2 +- src/Translators/Rules.php | 11 +++++++++-- .../Generator/Statements/FormRequestGeneratorTest.php | 1 - .../fixtures/definitions/model-reference-validate.bp | 3 ++- tests/fixtures/form-requests/certificate-store.php | 1 + tests/fixtures/form-requests/certificate-update.php | 1 + 6 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Generators/Statements/FormRequestGenerator.php b/src/Generators/Statements/FormRequestGenerator.php index 86d04592..1ca26eef 100644 --- a/src/Generators/Statements/FormRequestGenerator.php +++ b/src/Generators/Statements/FormRequestGenerator.php @@ -146,7 +146,7 @@ private function validationRules(string $qualifier, string $column) } else { /** @var \Blueprint\Models\Model $column */ foreach ($model->columns() as $column) { - if ($column->dataType() === 'id') { + if ($column->name() === 'id') { continue; } diff --git a/src/Translators/Rules.php b/src/Translators/Rules.php index c23441c2..6cc57c9e 100644 --- a/src/Translators/Rules.php +++ b/src/Translators/Rules.php @@ -17,8 +17,15 @@ public static function fromColumn(string $context, Column $column) } if ($column->dataType() === 'id' && Str::endsWith($column->name(), '_id')) { - [$prefix, $field] = explode('_', $column->name()); - $rules = array_merge($rules, ['integer', 'exists:' . Str::plural($prefix) . ',' . $field]); + $parts = explode('_', $column->name()); + + $prefix = ""; + $field = end($parts); + for ($i = 0; $i < count($parts) - 1; $i++) { + $prefix .= "_" . $parts[$i]; + } + + $rules = array_merge($rules, ['integer', 'exists:' . Str::plural(trim($prefix, "_")) . ',' . $field]); } if (in_array($column->dataType(), [ diff --git a/tests/Feature/Generator/Statements/FormRequestGeneratorTest.php b/tests/Feature/Generator/Statements/FormRequestGeneratorTest.php index ee5fb632..145e9abb 100644 --- a/tests/Feature/Generator/Statements/FormRequestGeneratorTest.php +++ b/tests/Feature/Generator/Statements/FormRequestGeneratorTest.php @@ -219,7 +219,6 @@ public function it_respects_configuration() $this->assertEquals(['created' => ['src/path/Http/Requests/PostStoreRequest.php']], $this->subject->output($tree)); } - /** * @test */ diff --git a/tests/fixtures/definitions/model-reference-validate.bp b/tests/fixtures/definitions/model-reference-validate.bp index 7d5ffec4..2174602e 100644 --- a/tests/fixtures/definitions/model-reference-validate.bp +++ b/tests/fixtures/definitions/model-reference-validate.bp @@ -1,10 +1,11 @@ models: Certificate: name: string + certificate_type_id: id reference: string document: string expiry_date: date - remarks: nullable text + remarks: text nullable controllers: Certificate: diff --git a/tests/fixtures/form-requests/certificate-store.php b/tests/fixtures/form-requests/certificate-store.php index f619dc57..b8a22c29 100644 --- a/tests/fixtures/form-requests/certificate-store.php +++ b/tests/fixtures/form-requests/certificate-store.php @@ -25,6 +25,7 @@ public function rules() { return [ 'name' => 'required|string', + 'certificate_type_id' => 'required|integer|exists:certificate_types,id', 'reference' => 'required|string', 'document' => 'required|string', 'expiry_date' => 'required|date', diff --git a/tests/fixtures/form-requests/certificate-update.php b/tests/fixtures/form-requests/certificate-update.php index b34a081b..958f23ad 100644 --- a/tests/fixtures/form-requests/certificate-update.php +++ b/tests/fixtures/form-requests/certificate-update.php @@ -25,6 +25,7 @@ public function rules() { return [ 'name' => 'required|string', + 'certificate_type_id' => 'required|integer|exists:certificate_types,id', 'reference' => 'required|string', 'document' => 'required|string', 'expiry_date' => 'required|date', From ae73826a75fde51c0e5ceb14bc3e0598dc659065 Mon Sep 17 00:00:00 2001 From: Jason McCreary Date: Tue, 19 May 2020 08:58:37 -0400 Subject: [PATCH 2/3] BaseCoding --- src/Translators/Rules.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/Translators/Rules.php b/src/Translators/Rules.php index 6cc57c9e..b16a217c 100644 --- a/src/Translators/Rules.php +++ b/src/Translators/Rules.php @@ -17,15 +17,7 @@ public static function fromColumn(string $context, Column $column) } if ($column->dataType() === 'id' && Str::endsWith($column->name(), '_id')) { - $parts = explode('_', $column->name()); - - $prefix = ""; - $field = end($parts); - for ($i = 0; $i < count($parts) - 1; $i++) { - $prefix .= "_" . $parts[$i]; - } - - $rules = array_merge($rules, ['integer', 'exists:' . Str::plural(trim($prefix, "_")) . ',' . $field]); + $rules = array_merge($rules, ['integer', 'exists:' . Str::plural(Str::beforeLast($column->name, '_id')) . ',id']); } if (in_array($column->dataType(), [ From c1a6b06ffcca52d946a50dad00ff57ca5d751452 Mon Sep 17 00:00:00 2001 From: Jason McCreary Date: Tue, 19 May 2020 09:00:20 -0400 Subject: [PATCH 3/3] Fix method reference --- src/Translators/Rules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Translators/Rules.php b/src/Translators/Rules.php index b16a217c..3e1b3314 100644 --- a/src/Translators/Rules.php +++ b/src/Translators/Rules.php @@ -17,7 +17,7 @@ public static function fromColumn(string $context, Column $column) } if ($column->dataType() === 'id' && Str::endsWith($column->name(), '_id')) { - $rules = array_merge($rules, ['integer', 'exists:' . Str::plural(Str::beforeLast($column->name, '_id')) . ',id']); + $rules = array_merge($rules, ['integer', 'exists:' . Str::plural(Str::beforeLast($column->name(), '_id')) . ',id']); } if (in_array($column->dataType(), [