From 7be9b9141466b1ebd1985d779d46552b22ced2c4 Mon Sep 17 00:00:00 2001 From: eparusov Date: Thu, 12 Dec 2024 17:33:25 +0300 Subject: [PATCH 1/2] #97: Use model test states in tests generator --- src/Generators/ControllerGenerator.php | 3 +-- src/Generators/RequestsGenerator.php | 2 +- src/Generators/ResourceGenerator.php | 6 +++--- stubs/collection_resource.blade.php | 6 ++++-- stubs/controller.blade.php | 6 +++--- stubs/resource.blade.php | 6 ++++-- stubs/test.blade.php | 2 +- .../created_controller.php | 16 ++++++++-------- 8 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/Generators/ControllerGenerator.php b/src/Generators/ControllerGenerator.php index fd0f97ab..945ba852 100644 --- a/src/Generators/ControllerGenerator.php +++ b/src/Generators/ControllerGenerator.php @@ -17,7 +17,6 @@ public function generate(): void "Cannot create {$this->model}Controller cause {$this->model}Controller already exists.", "Remove {$this->model}Controller.", ); - } if (!$this->classExists('services', "{$this->model}Service")) { @@ -45,7 +44,7 @@ protected function getControllerContent($model): string { return $this->getStub('controller', [ 'entity' => $model, - 'requestsFolder' => $this->getPluralName($model), + 'requestsFolder' => $model, 'namespace' => $this->getOrCreateNamespace('controllers'), 'requestsNamespace' => $this->getOrCreateNamespace('requests'), 'resourcesNamespace' => $this->getOrCreateNamespace('resources'), diff --git a/src/Generators/RequestsGenerator.php b/src/Generators/RequestsGenerator.php index 702eba5c..1c3d30de 100644 --- a/src/Generators/RequestsGenerator.php +++ b/src/Generators/RequestsGenerator.php @@ -67,7 +67,7 @@ public function generate(): void protected function createRequest($method, $needToValidate = true, $parameters = []): void { - $requestsFolder = $this->getPluralName($this->model); + $requestsFolder = $this->model; $modelName = $this->getEntityName($method); $content = $this->getStub('request', [ diff --git a/src/Generators/ResourceGenerator.php b/src/Generators/ResourceGenerator.php index 6a369781..6e509fc9 100644 --- a/src/Generators/ResourceGenerator.php +++ b/src/Generators/ResourceGenerator.php @@ -36,7 +36,7 @@ public function generateCollectionResource(): void 'namespace' => $this->getOrCreateNamespace('resources') ]); - $this->saveClass('resources', "{$pluralName}CollectionResource", $collectionResourceContent); + $this->saveClass('resources', "{$pluralName}CollectionResource", $collectionResourceContent, $this->model); event(new SuccessCreateMessage("Created a new CollectionResource: {$pluralName}CollectionResource")); } @@ -57,8 +57,8 @@ public function generateResource(): void 'model_namespace' => $this->getOrCreateNamespace('models'), ]); - $this->saveClass('resources', "{$this->model}Resource", $resourceContent); + $this->saveClass('resources', "{$this->model}Resource", $resourceContent, $this->model); event(new SuccessCreateMessage("Created a new Resource: {$this->model}Resource")); } -} \ No newline at end of file +} diff --git a/stubs/collection_resource.blade.php b/stubs/collection_resource.blade.php index 0996813b..584aa897 100644 --- a/stubs/collection_resource.blade.php +++ b/stubs/collection_resource.blade.php @@ -1,8 +1,10 @@ -namespace {{$namespace}}; +namespace {{$namespace}}{{$singular_name}}; use Illuminate\Http\Resources\Json\ResourceCollection; class {{$plural_name}}CollectionResource extends ResourceCollection { + public static $wrap = null; + public $collects = {{$singular_name}}Resource::class; -} \ No newline at end of file +} diff --git a/stubs/controller.blade.php b/stubs/controller.blade.php index bcf73f8d..4912363c 100644 --- a/stubs/controller.blade.php +++ b/stubs/controller.blade.php @@ -1,7 +1,7 @@ namespace {{$namespace}}; @inject('str', 'Illuminate\Support\Str') -use {{$resourcesNamespace}}\{{$str::plural($entity)}}CollectionResource; +use {{$resourcesNamespace}}\{{$entity}}\{{$str::plural($entity)}}CollectionResource; @if (in_array('C', $options)) use {{$requestsNamespace}}\{{$requestsFolder}}\Create{{$entity}}Request; @endif @@ -15,7 +15,7 @@ @if (in_array('U', $options)) use {{$requestsNamespace}}\{{$requestsFolder}}\Update{{$entity}}Request; @endif -use {{$resourcesNamespace}}\{{$entity}}Resource; +use {{$resourcesNamespace}}\{{$entity}}\{{$entity}}Resource; use {{$servicesNamespace}}\{{$entity}}Service; @if (in_array('D', $options) || in_array('U', $options)) use Symfony\Component\HttpFoundation\Response; @@ -70,4 +70,4 @@ public function delete(Delete{{$entity}}Request $request, {{$entity}}Service $se return response('', Response::HTTP_NO_CONTENT); } @endif -} \ No newline at end of file +} diff --git a/stubs/resource.blade.php b/stubs/resource.blade.php index 9f3d23be..564d95ba 100644 --- a/stubs/resource.blade.php +++ b/stubs/resource.blade.php @@ -1,4 +1,4 @@ -namespace {{$namespace}}; +namespace {{$namespace}}\{{$entity}}; use Illuminate\Http\Resources\Json\JsonResource; use {{$model_namespace}}\{{$entity}}; @@ -8,9 +8,11 @@ */ class {{$entity}}Resource extends JsonResource { + public static $wrap = null; + //TODO implement custom serialization logic or remove method redefining public function toArray($request): array { return parent::toArray($request); } -} \ No newline at end of file +} diff --git a/stubs/test.blade.php b/stubs/test.blade.php index cda50a5b..ad74a9d9 100644 --- a/stubs/test.blade.php +++ b/stubs/test.blade.php @@ -197,7 +197,7 @@ public static function getSearchFilters(): array #[DataProvider('getSearchFilters')] public function testSearch(array $filter, string $fixture) { - $response = $this->json('get', '/{{$entities}}', $filter); + $response = $this->actingAs(self::$user)->json('get', '/{{$entities}}', $filter); $response->assertOk(); diff --git a/tests/fixtures/ControllerGeneratorTest/created_controller.php b/tests/fixtures/ControllerGeneratorTest/created_controller.php index 0d1a533e..922be5ab 100644 --- a/tests/fixtures/ControllerGeneratorTest/created_controller.php +++ b/tests/fixtures/ControllerGeneratorTest/created_controller.php @@ -2,13 +2,13 @@ namespace App\Http\Controllers; -use App\Http\Resources\PostsCollectionResource; -use App\Http\Requests\Posts\CreatePostRequest; -use App\Http\Requests\Posts\DeletePostRequest; -use App\Http\Requests\Posts\GetPostRequest; -use App\Http\Requests\Posts\SearchPostsRequest; -use App\Http\Requests\Posts\UpdatePostRequest; -use App\Http\Resources\PostResource; +use App\Http\Resources\Post\PostsCollectionResource; +use App\Http\Requests\Post\CreatePostRequest; +use App\Http\Requests\Post\DeletePostRequest; +use App\Http\Requests\Post\GetPostRequest; +use App\Http\Requests\Post\SearchPostsRequest; +use App\Http\Requests\Post\UpdatePostRequest; +use App\Http\Resources\Post\PostResource; use App\Services\PostService; use Symfony\Component\HttpFoundation\Response; @@ -53,4 +53,4 @@ public function delete(DeletePostRequest $request, PostService $service, $id): R return response('', Response::HTTP_NO_CONTENT); } -} \ No newline at end of file +} From 90fa94bb77c32e9b390a45d1314351a37a93f7bb Mon Sep 17 00:00:00 2001 From: DenTray Date: Mon, 16 Dec 2024 16:17:55 +0600 Subject: [PATCH 2/2] Update stubs/collection_resource.blade.php --- stubs/collection_resource.blade.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/stubs/collection_resource.blade.php b/stubs/collection_resource.blade.php index 584aa897..79c29639 100644 --- a/stubs/collection_resource.blade.php +++ b/stubs/collection_resource.blade.php @@ -4,7 +4,5 @@ class {{$plural_name}}CollectionResource extends ResourceCollection { - public static $wrap = null; - public $collects = {{$singular_name}}Resource::class; }