From 2d727775386f3b8c64a1a42a970fd781f1c945e5 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Wed, 23 Oct 2024 10:47:38 +0500 Subject: [PATCH 01/10] feat: rename SomePost to WelcomeBonus entity in NovaGenerator Test --- src/Generators/NovaTestGenerator.php | 2 +- stubs/nova_test.blade.php | 67 +++++++++++++++------------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/Generators/NovaTestGenerator.php b/src/Generators/NovaTestGenerator.php index 9beb988b..1f6f28fe 100644 --- a/src/Generators/NovaTestGenerator.php +++ b/src/Generators/NovaTestGenerator.php @@ -75,7 +75,7 @@ protected function getActions(): array $actionClass = class_basename($action); return [ - 'url' => Str::kebab($actionClass), + 'className' => Str::kebab($actionClass), 'fixture' => Str::snake($actionClass), ]; }, $actions); diff --git a/stubs/nova_test.blade.php b/stubs/nova_test.blade.php index 410f0da8..7d9b6fbd 100644 --- a/stubs/nova_test.blade.php +++ b/stubs/nova_test.blade.php @@ -29,7 +29,7 @@ public function testCreate(): void { $data = $this->getJsonFixture('create_{{$snake_entity}}_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('post', '/nova-api/{{$url_path}}', $data); + $response = $this->novaActingAs(self::$user)->novaCreateResource({{$entity}}::class, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_CREATED); @@ -45,7 +45,7 @@ public function testCreate(): void public function testCreateNoAuth(): void { - $response = $this->json('post', '/nova-api/{{$url_path}}'); + $response = $this->novaCreateResource(Card::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -58,7 +58,7 @@ public function testCreateNoAuth(): void public function testCreateValidationError(): void { - $response = $this->actingAs(self::$user, 'web')->json('post', '/nova-api/{{$url_path}}'); + $response = $this->novaActingAs(self::$user)->novaCreateResource({{$entity}}::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNPROCESSABLE_ENTITY); @@ -76,7 +76,7 @@ public function testUpdate(): void { $data = $this->getJsonFixture('update_{{$snake_entity}}_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/{{$url_path}}/1', $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 1, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NO_CONTENT); @@ -92,7 +92,7 @@ public function testUpdateNotExists(): void { $data = $this->getJsonFixture('update_{{$snake_entity}}_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/{{$url_path}}/0', $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 0, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -103,7 +103,7 @@ public function testUpdateNotExists(): void public function testUpdateNoAuth(): void { - $response = $this->json('put', '/nova-api/{{$url_path}}/1'); + $response = $this->novaUpdateResource({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -114,7 +114,7 @@ public function testUpdateNoAuth(): void public function testUpdateValidationError(): void { - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/{{$url_path}}/4'); + $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 4); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNPROCESSABLE_ENTITY); @@ -128,7 +128,7 @@ public function testUpdateValidationError(): void public function testGetUpdatableFields(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/1/update-fields'); + $response = $this->novaActingAs(self::$user)->novaGetUpdatableFields({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -142,9 +142,10 @@ public function testGetUpdatableFields(): void public function testDelete(): void { - $response = $this->actingAs(self::$user, 'web')->json('delete', '/nova-api/{{$url_path}}', [ - 'resources' => [1, 2] - ]); + $response = $this->novaActingAs(self::$user)->novaDeleteResource( + resourceClass: {{$entity}}::class, + resourceIds: [1, 2], + ); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -158,9 +159,10 @@ public function testDelete(): void public function testDeleteNotExists(): void { - $response = $this->actingAs(self::$user, 'web')->json('delete', '/nova-api/{{$url_path}}', [ - 'resources' => [0] - ]); + $response = $this->novaActingAs(self::$user)->novaDeleteResource( + resourceClass: {{$entity}}::class, + resourceIds: [0], + ); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -171,9 +173,10 @@ public function testDeleteNotExists(): void public function testDeleteNoAuth(): void { - $response = $this->json('delete', '/nova-api/{{$url_path}}', [ - 'resources' => [1, 2] - ]); + $response = $this$this->novaDeleteResource( + resourceClass: {{$entity}}::class, + resourceIds: [1, 2], + ); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -184,7 +187,7 @@ public function testDeleteNoAuth(): void public function testGet(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/1'); + $response = $this->novaActingAs(self::$user)->novaGetResource({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -198,7 +201,7 @@ public function testGet(): void public function testGetNotExists(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/0'); + $response = $this->novaActingAs(self::$user)->novaGetResource({{$entity}}::class, 0); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -209,7 +212,7 @@ public function testGetNotExists(): void public function testGetNoAuth(): void { - $response = $this->json('get', '/nova-api/{{$url_path}}/1'); + $response = $this->novaGetResource({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -220,7 +223,13 @@ public function testGetNoAuth(): void public function testSearchUnauthorized(): void { - $response = $this->json('get', '/nova-api/{{$url_path}}'); + $response = $this->novaSearchResource( + resourceClass: {{$entity}}::class, + request: [ + 'orderBy' => 'id', + 'orderByDirection' => 'asc', + ], + ); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -231,7 +240,7 @@ public function testSearchUnauthorized(): void public function testGetFieldsVisibleOnCreate(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/creation-fields'); + $response = $this->novaActingAs(self::$user)->novaGetCreationFields({{$entity}}::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -248,7 +257,7 @@ public function getRun{{$entity}}ActionsData(): array return [ @foreach($actions as $action) [ - 'action' => '{{$action['url']}}', + 'action' => {{$action['className']}}::class, 'request' => [ 'resources' => '1,2', ], @@ -263,7 +272,7 @@ public function getRun{{$entity}}ActionsData(): array */ public function testRun{{$entity}}Actions($action, $request, ${{$lower_entities}}StateFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('post', "/nova-api/{{$url_path}}/action?action={$action}", $request); + $response = $this->novaActingAs(self::$user)->json('post', "/nova-api/{{$url_path}}/action?action={$action}", $request); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -282,9 +291,7 @@ public function get{{$entity}}ActionsData(): array return [ @foreach($actions as $action) [ - 'request' => [ - 'resources' => '1,2', - ], + 'resources' => [1, 2], 'response_fixture' => 'get_{{$snake_entity}}_actions_{{$action['fixture']}}.json', ], @endforeach @@ -294,9 +301,9 @@ public function get{{$entity}}ActionsData(): array /** * @dataProvider get{{$entity}}ActionsData */ - public function testGet{{$entity}}Actions(array $request, string $responseFixture): void + public function testGet{{$entity}}Actions(array $resources, string $responseFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/actions', $request); + $response = $this->novaActingAs(self::$user)->novaGetActions({{$entity}}::class, $resources); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -327,7 +334,7 @@ public function get{{$entity}}FiltersData(): array */ public function testFilter{{$entity}}(array $request, string $responseFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}', $request); + $response = $this->novaActingAs(self::$user)->novaSearchResource({{$entity}}::class, $request); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); From c6d227334d12e47dc96951b434c1587d80e8fea0 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Wed, 23 Oct 2024 10:47:38 +0500 Subject: [PATCH 02/10] feat: update nova test generator template --- src/Generators/NovaTestGenerator.php | 2 +- stubs/nova_test.blade.php | 67 +++++++++++++++------------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/Generators/NovaTestGenerator.php b/src/Generators/NovaTestGenerator.php index 9beb988b..1f6f28fe 100644 --- a/src/Generators/NovaTestGenerator.php +++ b/src/Generators/NovaTestGenerator.php @@ -75,7 +75,7 @@ protected function getActions(): array $actionClass = class_basename($action); return [ - 'url' => Str::kebab($actionClass), + 'className' => Str::kebab($actionClass), 'fixture' => Str::snake($actionClass), ]; }, $actions); diff --git a/stubs/nova_test.blade.php b/stubs/nova_test.blade.php index 410f0da8..7d9b6fbd 100644 --- a/stubs/nova_test.blade.php +++ b/stubs/nova_test.blade.php @@ -29,7 +29,7 @@ public function testCreate(): void { $data = $this->getJsonFixture('create_{{$snake_entity}}_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('post', '/nova-api/{{$url_path}}', $data); + $response = $this->novaActingAs(self::$user)->novaCreateResource({{$entity}}::class, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_CREATED); @@ -45,7 +45,7 @@ public function testCreate(): void public function testCreateNoAuth(): void { - $response = $this->json('post', '/nova-api/{{$url_path}}'); + $response = $this->novaCreateResource(Card::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -58,7 +58,7 @@ public function testCreateNoAuth(): void public function testCreateValidationError(): void { - $response = $this->actingAs(self::$user, 'web')->json('post', '/nova-api/{{$url_path}}'); + $response = $this->novaActingAs(self::$user)->novaCreateResource({{$entity}}::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNPROCESSABLE_ENTITY); @@ -76,7 +76,7 @@ public function testUpdate(): void { $data = $this->getJsonFixture('update_{{$snake_entity}}_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/{{$url_path}}/1', $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 1, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NO_CONTENT); @@ -92,7 +92,7 @@ public function testUpdateNotExists(): void { $data = $this->getJsonFixture('update_{{$snake_entity}}_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/{{$url_path}}/0', $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 0, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -103,7 +103,7 @@ public function testUpdateNotExists(): void public function testUpdateNoAuth(): void { - $response = $this->json('put', '/nova-api/{{$url_path}}/1'); + $response = $this->novaUpdateResource({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -114,7 +114,7 @@ public function testUpdateNoAuth(): void public function testUpdateValidationError(): void { - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/{{$url_path}}/4'); + $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 4); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNPROCESSABLE_ENTITY); @@ -128,7 +128,7 @@ public function testUpdateValidationError(): void public function testGetUpdatableFields(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/1/update-fields'); + $response = $this->novaActingAs(self::$user)->novaGetUpdatableFields({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -142,9 +142,10 @@ public function testGetUpdatableFields(): void public function testDelete(): void { - $response = $this->actingAs(self::$user, 'web')->json('delete', '/nova-api/{{$url_path}}', [ - 'resources' => [1, 2] - ]); + $response = $this->novaActingAs(self::$user)->novaDeleteResource( + resourceClass: {{$entity}}::class, + resourceIds: [1, 2], + ); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -158,9 +159,10 @@ public function testDelete(): void public function testDeleteNotExists(): void { - $response = $this->actingAs(self::$user, 'web')->json('delete', '/nova-api/{{$url_path}}', [ - 'resources' => [0] - ]); + $response = $this->novaActingAs(self::$user)->novaDeleteResource( + resourceClass: {{$entity}}::class, + resourceIds: [0], + ); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -171,9 +173,10 @@ public function testDeleteNotExists(): void public function testDeleteNoAuth(): void { - $response = $this->json('delete', '/nova-api/{{$url_path}}', [ - 'resources' => [1, 2] - ]); + $response = $this$this->novaDeleteResource( + resourceClass: {{$entity}}::class, + resourceIds: [1, 2], + ); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -184,7 +187,7 @@ public function testDeleteNoAuth(): void public function testGet(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/1'); + $response = $this->novaActingAs(self::$user)->novaGetResource({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -198,7 +201,7 @@ public function testGet(): void public function testGetNotExists(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/0'); + $response = $this->novaActingAs(self::$user)->novaGetResource({{$entity}}::class, 0); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -209,7 +212,7 @@ public function testGetNotExists(): void public function testGetNoAuth(): void { - $response = $this->json('get', '/nova-api/{{$url_path}}/1'); + $response = $this->novaGetResource({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -220,7 +223,13 @@ public function testGetNoAuth(): void public function testSearchUnauthorized(): void { - $response = $this->json('get', '/nova-api/{{$url_path}}'); + $response = $this->novaSearchResource( + resourceClass: {{$entity}}::class, + request: [ + 'orderBy' => 'id', + 'orderByDirection' => 'asc', + ], + ); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -231,7 +240,7 @@ public function testSearchUnauthorized(): void public function testGetFieldsVisibleOnCreate(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/creation-fields'); + $response = $this->novaActingAs(self::$user)->novaGetCreationFields({{$entity}}::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -248,7 +257,7 @@ public function getRun{{$entity}}ActionsData(): array return [ @foreach($actions as $action) [ - 'action' => '{{$action['url']}}', + 'action' => {{$action['className']}}::class, 'request' => [ 'resources' => '1,2', ], @@ -263,7 +272,7 @@ public function getRun{{$entity}}ActionsData(): array */ public function testRun{{$entity}}Actions($action, $request, ${{$lower_entities}}StateFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('post', "/nova-api/{{$url_path}}/action?action={$action}", $request); + $response = $this->novaActingAs(self::$user)->json('post', "/nova-api/{{$url_path}}/action?action={$action}", $request); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -282,9 +291,7 @@ public function get{{$entity}}ActionsData(): array return [ @foreach($actions as $action) [ - 'request' => [ - 'resources' => '1,2', - ], + 'resources' => [1, 2], 'response_fixture' => 'get_{{$snake_entity}}_actions_{{$action['fixture']}}.json', ], @endforeach @@ -294,9 +301,9 @@ public function get{{$entity}}ActionsData(): array /** * @dataProvider get{{$entity}}ActionsData */ - public function testGet{{$entity}}Actions(array $request, string $responseFixture): void + public function testGet{{$entity}}Actions(array $resources, string $responseFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}/actions', $request); + $response = $this->novaActingAs(self::$user)->novaGetActions({{$entity}}::class, $resources); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -327,7 +334,7 @@ public function get{{$entity}}FiltersData(): array */ public function testFilter{{$entity}}(array $request, string $responseFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/{{$url_path}}', $request); + $response = $this->novaActingAs(self::$user)->novaSearchResource({{$entity}}::class, $request); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); From b60578f872c9a932479d676386d3d46693403530 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Wed, 23 Oct 2024 10:54:11 +0500 Subject: [PATCH 03/10] fix: nova action class name --- src/Generators/NovaTestGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Generators/NovaTestGenerator.php b/src/Generators/NovaTestGenerator.php index 1f6f28fe..837d7ea8 100644 --- a/src/Generators/NovaTestGenerator.php +++ b/src/Generators/NovaTestGenerator.php @@ -75,7 +75,7 @@ protected function getActions(): array $actionClass = class_basename($action); return [ - 'className' => Str::kebab($actionClass), + 'className' => $actionClass, 'fixture' => Str::snake($actionClass), ]; }, $actions); From 7fa3c949aa83f4aa0f22d5c3b6d0e4d65c8b72e8 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Wed, 23 Oct 2024 11:29:02 +0500 Subject: [PATCH 04/10] fix: nova action class name --- composer.json | 2 +- composer.lock | 16 ++-- stubs/nova_test.blade.php | 2 +- tests/NovaTestGeneratorTest.php | 2 +- .../created_resource_test.php | 73 ++++++++++--------- 5 files changed, 50 insertions(+), 45 deletions(-) diff --git a/composer.json b/composer.json index 02ae3387..31c9b644 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "require": { "php": "^8.3", "laravel/framework": "^11.21", - "ronasit/laravel-helpers": "^3.0.0-beta", + "ronasit/laravel-helpers": "dev-modify-nova-test-trait", "laravel/legacy-factories": ">=1.3.0", "ext-json": "*" }, diff --git a/composer.lock b/composer.lock index 1bdec6f2..537f4abf 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "05ad603d3c0dbf729a64fcd4e9f72e78", + "content-hash": "bf4555046359d1945ef756735d1ff575", "packages": [ { "name": "brick/math", @@ -4345,16 +4345,16 @@ }, { "name": "ronasit/laravel-helpers", - "version": "3.0.0-beta", + "version": "dev-modify-nova-test-trait", "source": { "type": "git", "url": "https://github.com/RonasIT/laravel-helpers.git", - "reference": "b967de51d6a79cc8e18ee707cd8677900fecd304" + "reference": "7b219b283ccd3f51c6f888cd71f00f9536fbc87b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/RonasIT/laravel-helpers/zipball/b967de51d6a79cc8e18ee707cd8677900fecd304", - "reference": "b967de51d6a79cc8e18ee707cd8677900fecd304", + "url": "https://api.github.com/repos/RonasIT/laravel-helpers/zipball/7b219b283ccd3f51c6f888cd71f00f9536fbc87b", + "reference": "7b219b283ccd3f51c6f888cd71f00f9536fbc87b", "shasum": "" }, "require": { @@ -4421,9 +4421,9 @@ ], "support": { "issues": "https://github.com/RonasIT/laravel-helpers/issues", - "source": "https://github.com/RonasIT/laravel-helpers/tree/3.0.0-beta" + "source": "https://github.com/RonasIT/laravel-helpers/tree/modify-nova-test-trait" }, - "time": "2024-08-22T13:20:06+00:00" + "time": "2024-10-23T06:28:05+00:00" }, { "name": "sebastian/cli-parser", @@ -10127,7 +10127,7 @@ "aliases": [], "minimum-stability": "beta", "stability-flags": { - "ronasit/laravel-helpers": 10 + "ronasit/laravel-helpers": 20 }, "prefer-stable": false, "prefer-lowest": false, diff --git a/stubs/nova_test.blade.php b/stubs/nova_test.blade.php index 7d9b6fbd..d41f6e55 100644 --- a/stubs/nova_test.blade.php +++ b/stubs/nova_test.blade.php @@ -173,7 +173,7 @@ public function testDeleteNotExists(): void public function testDeleteNoAuth(): void { - $response = $this$this->novaDeleteResource( + $response = $this->novaDeleteResource( resourceClass: {{$entity}}::class, resourceIds: [1, 2], ); diff --git a/tests/NovaTestGeneratorTest.php b/tests/NovaTestGeneratorTest.php index c0ae91c6..0f4e5813 100644 --- a/tests/NovaTestGeneratorTest.php +++ b/tests/NovaTestGeneratorTest.php @@ -65,7 +65,7 @@ public function testCreateWithActions() $this->rollbackToDefaultBasePath(); - $this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusTest.php'); + $this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusTest.php', true); $this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusTest/nova_welcome_bonus_dump.sql'); $this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_request.json'); $this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_response.json'); diff --git a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php index 0034597a..bdb14729 100644 --- a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php +++ b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php @@ -27,7 +27,7 @@ public function testCreate(): void { $data = $this->getJsonFixture('create_welcome_bonus_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('post', '/nova-api/welcome-bonus-resources', $data); + $response = $this->novaActingAs(self::$user)->novaCreateResource(WelcomeBonus::class, $data); $response->assertCreated(); @@ -39,7 +39,7 @@ public function testCreate(): void public function testCreateNoAuth(): void { - $response = $this->json('post', '/nova-api/welcome-bonus-resources'); + $response = $this->novaCreateResource(Card::class); $response->assertUnauthorized(); @@ -48,7 +48,7 @@ public function testCreateNoAuth(): void public function testCreateValidationError(): void { - $response = $this->actingAs(self::$user, 'web')->json('post', '/nova-api/welcome-bonus-resources'); + $response = $this->novaActingAs(self::$user)->novaCreateResource(WelcomeBonus::class); $response->assertUnprocessable(); @@ -62,7 +62,7 @@ public function testUpdate(): void { $data = $this->getJsonFixture('update_welcome_bonus_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/welcome-bonus-resources/1', $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResource(WelcomeBonus::class, 1, $data); $response->assertNoContent(); @@ -74,21 +74,21 @@ public function testUpdateNotExists(): void { $data = $this->getJsonFixture('update_welcome_bonus_request.json'); - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/welcome-bonus-resources/0', $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResource(WelcomeBonus::class, 0, $data); $response->assertNotFound(); } public function testUpdateNoAuth(): void { - $response = $this->json('put', '/nova-api/welcome-bonus-resources/1'); + $response = $this->novaUpdateResource(WelcomeBonus::class, 1); $response->assertUnauthorized(); } public function testUpdateValidationError(): void { - $response = $this->actingAs(self::$user, 'web')->json('put', '/nova-api/welcome-bonus-resources/4'); + $response = $this->novaActingAs(self::$user)->novaUpdateResource(WelcomeBonus::class, 4); $response->assertUnprocessable(); @@ -98,7 +98,7 @@ public function testUpdateValidationError(): void public function testGetUpdatableFields(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/welcome-bonus-resources/1/update-fields'); + $response = $this->novaActingAs(self::$user)->novaGetUpdatableFields(WelcomeBonus::class, 1); $response->assertOk(); @@ -108,9 +108,10 @@ public function testGetUpdatableFields(): void public function testDelete(): void { - $response = $this->actingAs(self::$user, 'web')->json('delete', '/nova-api/welcome-bonus-resources', [ - 'resources' => [1, 2] - ]); + $response = $this->novaActingAs(self::$user)->novaDeleteResource( + resourceClass: WelcomeBonus::class, + resourceIds: [1, 2], + ); $response->assertOk(); @@ -120,25 +121,27 @@ public function testDelete(): void public function testDeleteNotExists(): void { - $response = $this->actingAs(self::$user, 'web')->json('delete', '/nova-api/welcome-bonus-resources', [ - 'resources' => [0] - ]); + $response = $this->novaActingAs(self::$user)->novaDeleteResource( + resourceClass: WelcomeBonus::class, + resourceIds: [0], + ); $response->assertNotFound(); } public function testDeleteNoAuth(): void { - $response = $this->json('delete', '/nova-api/welcome-bonus-resources', [ - 'resources' => [1, 2] - ]); + $response = $this->novaDeleteResource( + resourceClass: WelcomeBonus::class, + resourceIds: [1, 2], + ); $response->assertUnauthorized(); } public function testGet(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/welcome-bonus-resources/1'); + $response = $this->novaActingAs(self::$user)->novaGetResource(WelcomeBonus::class, 1); $response->assertOk(); @@ -148,28 +151,34 @@ public function testGet(): void public function testGetNotExists(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/welcome-bonus-resources/0'); + $response = $this->novaActingAs(self::$user)->novaGetResource(WelcomeBonus::class, 0); $response->assertNotFound(); } public function testGetNoAuth(): void { - $response = $this->json('get', '/nova-api/welcome-bonus-resources/1'); + $response = $this->novaGetResource(WelcomeBonus::class, 1); $response->assertUnauthorized(); } public function testSearchUnauthorized(): void { - $response = $this->json('get', '/nova-api/welcome-bonus-resources'); + $response = $this->novaSearchResource( + resourceClass: WelcomeBonus::class, + request: [ + 'orderBy' => 'id', + 'orderByDirection' => 'asc', + ], + ); $response->assertUnauthorized(); } public function testGetFieldsVisibleOnCreate(): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/welcome-bonus-resources/creation-fields'); + $response = $this->novaActingAs(self::$user)->novaGetCreationFields(WelcomeBonus::class); $response->assertOk(); @@ -181,14 +190,14 @@ public function getRunWelcomeBonusActionsData(): array { return [ [ - 'action' => 'publish-post-action', + 'action' => PublishPostAction::class, 'request' => [ 'resources' => '1,2', ], 'state' => 'run_publish_post_action_state.json', ], [ - 'action' => 'un-publish-post-action', + 'action' => UnPublishPostAction::class, 'request' => [ 'resources' => '1,2', ], @@ -202,7 +211,7 @@ public function getRunWelcomeBonusActionsData(): array */ public function testRunWelcomeBonusActions($action, $request, $welcome_bonusesStateFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('post', "/nova-api/welcome-bonus-resources/action?action={$action}", $request); + $response = $this->novaActingAs(self::$user)->json('post', "/nova-api/welcome-bonus-resources/action?action={$action}", $request); $response->assertOk(); @@ -216,15 +225,11 @@ public function getWelcomeBonusActionsData(): array { return [ [ - 'request' => [ - 'resources' => '1,2', - ], + 'resources' => [1, 2], 'response_fixture' => 'get_welcome_bonus_actions_publish_post_action.json', ], [ - 'request' => [ - 'resources' => '1,2', - ], + 'resources' => [1, 2], 'response_fixture' => 'get_welcome_bonus_actions_un_publish_post_action.json', ], ]; @@ -233,9 +238,9 @@ public function getWelcomeBonusActionsData(): array /** * @dataProvider getWelcomeBonusActionsData */ - public function testGetWelcomeBonusActions(array $request, string $responseFixture): void + public function testGetWelcomeBonusActions(array $resources, string $responseFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/welcome-bonus-resources/actions', $request); + $response = $this->novaActingAs(self::$user)->novaGetActions(WelcomeBonus::class, $resources); $response->assertOk(); @@ -266,7 +271,7 @@ public function getWelcomeBonusFiltersData(): array */ public function testFilterWelcomeBonus(array $request, string $responseFixture): void { - $response = $this->actingAs(self::$user, 'web')->json('get', '/nova-api/welcome-bonus-resources', $request); + $response = $this->novaActingAs(self::$user)->novaSearchResource(WelcomeBonus::class, $request); $response->assertOk(); From 2d80b11ac482cbc9219eab8fe0284b85cc650148 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Wed, 30 Oct 2024 15:03:01 +0500 Subject: [PATCH 05/10] fix: nova action class name --- composer.lock | 8 ++--- stubs/nova_test.blade.php | 32 +++++++++---------- tests/NovaTestGeneratorTest.php | 3 +- .../created_resource_test.php | 32 +++++++++---------- 4 files changed, 37 insertions(+), 38 deletions(-) diff --git a/composer.lock b/composer.lock index 537f4abf..e4258958 100644 --- a/composer.lock +++ b/composer.lock @@ -4349,12 +4349,12 @@ "source": { "type": "git", "url": "https://github.com/RonasIT/laravel-helpers.git", - "reference": "7b219b283ccd3f51c6f888cd71f00f9536fbc87b" + "reference": "0d1a30ed5d86b4cda2d1ce29004eafbbe03991bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/RonasIT/laravel-helpers/zipball/7b219b283ccd3f51c6f888cd71f00f9536fbc87b", - "reference": "7b219b283ccd3f51c6f888cd71f00f9536fbc87b", + "url": "https://api.github.com/repos/RonasIT/laravel-helpers/zipball/0d1a30ed5d86b4cda2d1ce29004eafbbe03991bc", + "reference": "0d1a30ed5d86b4cda2d1ce29004eafbbe03991bc", "shasum": "" }, "require": { @@ -4423,7 +4423,7 @@ "issues": "https://github.com/RonasIT/laravel-helpers/issues", "source": "https://github.com/RonasIT/laravel-helpers/tree/modify-nova-test-trait" }, - "time": "2024-10-23T06:28:05+00:00" + "time": "2024-10-30T07:37:59+00:00" }, { "name": "sebastian/cli-parser", diff --git a/stubs/nova_test.blade.php b/stubs/nova_test.blade.php index d41f6e55..bad6d776 100644 --- a/stubs/nova_test.blade.php +++ b/stubs/nova_test.blade.php @@ -3,7 +3,7 @@ use App\Models\{{$entity}}; use RonasIT\Support\Tests\ModelTestState; -use RonasIT\Support\Tests\NovaTestTraitTest; +use RonasIT\Support\Traits\NovaTestTrait; @if($shouldUseStatus) use Symfony\Component\HttpFoundation\Response; @endif @@ -29,7 +29,7 @@ public function testCreate(): void { $data = $this->getJsonFixture('create_{{$snake_entity}}_request.json'); - $response = $this->novaActingAs(self::$user)->novaCreateResource({{$entity}}::class, $data); + $response = $this->novaActingAs(self::$user)->novaCreateResourceAPICall({{$entity}}::class, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_CREATED); @@ -45,7 +45,7 @@ public function testCreate(): void public function testCreateNoAuth(): void { - $response = $this->novaCreateResource(Card::class); + $response = $this->novaCreateResourceAPICall({{$entity}}::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -58,7 +58,7 @@ public function testCreateNoAuth(): void public function testCreateValidationError(): void { - $response = $this->novaActingAs(self::$user)->novaCreateResource({{$entity}}::class); + $response = $this->novaActingAs(self::$user)->novaCreateResourceAPICall({{$entity}}::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNPROCESSABLE_ENTITY); @@ -76,7 +76,7 @@ public function testUpdate(): void { $data = $this->getJsonFixture('update_{{$snake_entity}}_request.json'); - $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 1, $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResourceAPICall({{$entity}}::class, 1, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NO_CONTENT); @@ -114,7 +114,7 @@ public function testUpdateNoAuth(): void public function testUpdateValidationError(): void { - $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 4); + $response = $this->novaActingAs(self::$user)->novaUpdateResourceAPICall({{$entity}}::class, 4); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNPROCESSABLE_ENTITY); @@ -142,7 +142,7 @@ public function testGetUpdatableFields(): void public function testDelete(): void { - $response = $this->novaActingAs(self::$user)->novaDeleteResource( + $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall( resourceClass: {{$entity}}::class, resourceIds: [1, 2], ); @@ -159,7 +159,7 @@ public function testDelete(): void public function testDeleteNotExists(): void { - $response = $this->novaActingAs(self::$user)->novaDeleteResource( + $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall( resourceClass: {{$entity}}::class, resourceIds: [0], ); @@ -173,7 +173,7 @@ public function testDeleteNotExists(): void public function testDeleteNoAuth(): void { - $response = $this->novaDeleteResource( + $response = $this->novaDeleteResourceAPICall( resourceClass: {{$entity}}::class, resourceIds: [1, 2], ); @@ -187,7 +187,7 @@ public function testDeleteNoAuth(): void public function testGet(): void { - $response = $this->novaActingAs(self::$user)->novaGetResource({{$entity}}::class, 1); + $response = $this->novaActingAs(self::$user)->novaGetResourceAPICall({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -201,7 +201,7 @@ public function testGet(): void public function testGetNotExists(): void { - $response = $this->novaActingAs(self::$user)->novaGetResource({{$entity}}::class, 0); + $response = $this->novaActingAs(self::$user)->novaGetResourceAPICall({{$entity}}::class, 0); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -212,7 +212,7 @@ public function testGetNotExists(): void public function testGetNoAuth(): void { - $response = $this->novaGetResource({{$entity}}::class, 1); + $response = $this->novaGetResourceAPICall({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -223,7 +223,7 @@ public function testGetNoAuth(): void public function testSearchUnauthorized(): void { - $response = $this->novaSearchResource( + $response = $this->novaSearchResourceAPICall( resourceClass: {{$entity}}::class, request: [ 'orderBy' => 'id', @@ -240,7 +240,7 @@ public function testSearchUnauthorized(): void public function testGetFieldsVisibleOnCreate(): void { - $response = $this->novaActingAs(self::$user)->novaGetCreationFields({{$entity}}::class); + $response = $this->novaActingAs(self::$user)->novaGetCreationFieldsAPICall({{$entity}}::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -303,7 +303,7 @@ public function get{{$entity}}ActionsData(): array */ public function testGet{{$entity}}Actions(array $resources, string $responseFixture): void { - $response = $this->novaActingAs(self::$user)->novaGetActions({{$entity}}::class, $resources); + $response = $this->novaActingAs(self::$user)->novaGetActionsAPICall({{$entity}}::class, $resources); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -334,7 +334,7 @@ public function get{{$entity}}FiltersData(): array */ public function testFilter{{$entity}}(array $request, string $responseFixture): void { - $response = $this->novaActingAs(self::$user)->novaSearchResource({{$entity}}::class, $request); + $response = $this->novaActingAs(self::$user)->novaSearchResourceAPICall({{$entity}}::class, $request); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); diff --git a/tests/NovaTestGeneratorTest.php b/tests/NovaTestGeneratorTest.php index 0f4e5813..ed3e9201 100644 --- a/tests/NovaTestGeneratorTest.php +++ b/tests/NovaTestGeneratorTest.php @@ -2,7 +2,6 @@ namespace RonasIT\Support\Tests; -use org\bovigo\vfs\vfsStream; use RonasIT\Support\Exceptions\ClassAlreadyExistsException; use RonasIT\Support\Exceptions\ClassNotExistsException; use RonasIT\Support\Generators\NovaTestGenerator; @@ -65,7 +64,7 @@ public function testCreateWithActions() $this->rollbackToDefaultBasePath(); - $this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusTest.php', true); + $this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusTest.php'); $this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusTest/nova_welcome_bonus_dump.sql'); $this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_request.json'); $this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_response.json'); diff --git a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php index bdb14729..0fb784b3 100644 --- a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php +++ b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php @@ -4,7 +4,7 @@ use App\Models\WelcomeBonus; use RonasIT\Support\Tests\ModelTestState; -use RonasIT\Support\Tests\NovaTestTraitTest; +use RonasIT\Support\Traits\NovaTestTrait; class NovaWelcomeBonusTest extends TestCase { @@ -27,7 +27,7 @@ public function testCreate(): void { $data = $this->getJsonFixture('create_welcome_bonus_request.json'); - $response = $this->novaActingAs(self::$user)->novaCreateResource(WelcomeBonus::class, $data); + $response = $this->novaActingAs(self::$user)->novaCreateResourceAPICall(WelcomeBonus::class, $data); $response->assertCreated(); @@ -39,7 +39,7 @@ public function testCreate(): void public function testCreateNoAuth(): void { - $response = $this->novaCreateResource(Card::class); + $response = $this->novaCreateResourceAPICall(WelcomeBonus::class); $response->assertUnauthorized(); @@ -48,7 +48,7 @@ public function testCreateNoAuth(): void public function testCreateValidationError(): void { - $response = $this->novaActingAs(self::$user)->novaCreateResource(WelcomeBonus::class); + $response = $this->novaActingAs(self::$user)->novaCreateResourceAPICall(WelcomeBonus::class); $response->assertUnprocessable(); @@ -62,7 +62,7 @@ public function testUpdate(): void { $data = $this->getJsonFixture('update_welcome_bonus_request.json'); - $response = $this->novaActingAs(self::$user)->novaUpdateResource(WelcomeBonus::class, 1, $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResourceAPICall(WelcomeBonus::class, 1, $data); $response->assertNoContent(); @@ -88,7 +88,7 @@ public function testUpdateNoAuth(): void public function testUpdateValidationError(): void { - $response = $this->novaActingAs(self::$user)->novaUpdateResource(WelcomeBonus::class, 4); + $response = $this->novaActingAs(self::$user)->novaUpdateResourceAPICall(WelcomeBonus::class, 4); $response->assertUnprocessable(); @@ -108,7 +108,7 @@ public function testGetUpdatableFields(): void public function testDelete(): void { - $response = $this->novaActingAs(self::$user)->novaDeleteResource( + $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall( resourceClass: WelcomeBonus::class, resourceIds: [1, 2], ); @@ -121,7 +121,7 @@ public function testDelete(): void public function testDeleteNotExists(): void { - $response = $this->novaActingAs(self::$user)->novaDeleteResource( + $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall( resourceClass: WelcomeBonus::class, resourceIds: [0], ); @@ -131,7 +131,7 @@ public function testDeleteNotExists(): void public function testDeleteNoAuth(): void { - $response = $this->novaDeleteResource( + $response = $this->novaDeleteResourceAPICall( resourceClass: WelcomeBonus::class, resourceIds: [1, 2], ); @@ -141,7 +141,7 @@ public function testDeleteNoAuth(): void public function testGet(): void { - $response = $this->novaActingAs(self::$user)->novaGetResource(WelcomeBonus::class, 1); + $response = $this->novaActingAs(self::$user)->novaGetResourceAPICall(WelcomeBonus::class, 1); $response->assertOk(); @@ -151,21 +151,21 @@ public function testGet(): void public function testGetNotExists(): void { - $response = $this->novaActingAs(self::$user)->novaGetResource(WelcomeBonus::class, 0); + $response = $this->novaActingAs(self::$user)->novaGetResourceAPICall(WelcomeBonus::class, 0); $response->assertNotFound(); } public function testGetNoAuth(): void { - $response = $this->novaGetResource(WelcomeBonus::class, 1); + $response = $this->novaGetResourceAPICall(WelcomeBonus::class, 1); $response->assertUnauthorized(); } public function testSearchUnauthorized(): void { - $response = $this->novaSearchResource( + $response = $this->novaSearchResourceAPICall( resourceClass: WelcomeBonus::class, request: [ 'orderBy' => 'id', @@ -178,7 +178,7 @@ public function testSearchUnauthorized(): void public function testGetFieldsVisibleOnCreate(): void { - $response = $this->novaActingAs(self::$user)->novaGetCreationFields(WelcomeBonus::class); + $response = $this->novaActingAs(self::$user)->novaGetCreationFieldsAPICall(WelcomeBonus::class); $response->assertOk(); @@ -240,7 +240,7 @@ public function getWelcomeBonusActionsData(): array */ public function testGetWelcomeBonusActions(array $resources, string $responseFixture): void { - $response = $this->novaActingAs(self::$user)->novaGetActions(WelcomeBonus::class, $resources); + $response = $this->novaActingAs(self::$user)->novaGetActionsAPICall(WelcomeBonus::class, $resources); $response->assertOk(); @@ -271,7 +271,7 @@ public function getWelcomeBonusFiltersData(): array */ public function testFilterWelcomeBonus(array $request, string $responseFixture): void { - $response = $this->novaActingAs(self::$user)->novaSearchResource(WelcomeBonus::class, $request); + $response = $this->novaActingAs(self::$user)->novaSearchResourceAPICall(WelcomeBonus::class, $request); $response->assertOk(); From 158d9e10fb81eeb683f4ab1391d043cee88c35cf Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Tue, 5 Nov 2024 10:34:55 +0500 Subject: [PATCH 06/10] chore: update laravel helpers --- composer.json | 2 +- composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index 31c9b644..9bd4bd0d 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "require": { "php": "^8.3", "laravel/framework": "^11.21", - "ronasit/laravel-helpers": "dev-modify-nova-test-trait", + "ronasit/laravel-helpers": "^3.0.1-beta", "laravel/legacy-factories": ">=1.3.0", "ext-json": "*" }, diff --git a/composer.lock b/composer.lock index e4258958..197df82f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bf4555046359d1945ef756735d1ff575", + "content-hash": "a82b7377b826040ff9547a8cc13cf241", "packages": [ { "name": "brick/math", @@ -4345,16 +4345,16 @@ }, { "name": "ronasit/laravel-helpers", - "version": "dev-modify-nova-test-trait", + "version": "3.0.1-beta", "source": { "type": "git", "url": "https://github.com/RonasIT/laravel-helpers.git", - "reference": "0d1a30ed5d86b4cda2d1ce29004eafbbe03991bc" + "reference": "5bf2992029c1f71269d0fddd036a102822399925" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/RonasIT/laravel-helpers/zipball/0d1a30ed5d86b4cda2d1ce29004eafbbe03991bc", - "reference": "0d1a30ed5d86b4cda2d1ce29004eafbbe03991bc", + "url": "https://api.github.com/repos/RonasIT/laravel-helpers/zipball/5bf2992029c1f71269d0fddd036a102822399925", + "reference": "5bf2992029c1f71269d0fddd036a102822399925", "shasum": "" }, "require": { @@ -4421,9 +4421,9 @@ ], "support": { "issues": "https://github.com/RonasIT/laravel-helpers/issues", - "source": "https://github.com/RonasIT/laravel-helpers/tree/modify-nova-test-trait" + "source": "https://github.com/RonasIT/laravel-helpers/tree/3.0.1-beta" }, - "time": "2024-10-30T07:37:59+00:00" + "time": "2024-11-04T10:52:30+00:00" }, { "name": "sebastian/cli-parser", @@ -10127,7 +10127,7 @@ "aliases": [], "minimum-stability": "beta", "stability-flags": { - "ronasit/laravel-helpers": 20 + "ronasit/laravel-helpers": 10 }, "prefer-stable": false, "prefer-lowest": false, From 1aeaf54ff6b818093ab8af5964aa12abe3852cac Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Tue, 5 Nov 2024 14:42:58 +0500 Subject: [PATCH 07/10] chore: update laravel helpers --- stubs/nova_test.blade.php | 12 ++++++------ .../NovaTestGeneratorTest/created_resource_test.php | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/stubs/nova_test.blade.php b/stubs/nova_test.blade.php index bad6d776..f2b04610 100644 --- a/stubs/nova_test.blade.php +++ b/stubs/nova_test.blade.php @@ -92,7 +92,7 @@ public function testUpdateNotExists(): void { $data = $this->getJsonFixture('update_{{$snake_entity}}_request.json'); - $response = $this->novaActingAs(self::$user)->novaUpdateResource({{$entity}}::class, 0, $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResourceAPICall({{$entity}}::class, 0, $data); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -103,7 +103,7 @@ public function testUpdateNotExists(): void public function testUpdateNoAuth(): void { - $response = $this->novaUpdateResource({{$entity}}::class, 1); + $response = $this->novaUpdateResourceAPICall({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); @@ -128,7 +128,7 @@ public function testUpdateValidationError(): void public function testGetUpdatableFields(): void { - $response = $this->novaActingAs(self::$user)->novaGetUpdatableFields({{$entity}}::class, 1); + $response = $this->novaActingAs(self::$user)->novaGetUpdatableFieldsAPICall({{$entity}}::class, 1); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -270,9 +270,9 @@ public function getRun{{$entity}}ActionsData(): array /** * @dataProvider getRun{{$entity}}ActionsData */ - public function testRun{{$entity}}Actions($action, $request, ${{$lower_entities}}StateFixture): void + public function testRun{{$entity}}Actions($action, $request, $state): void { - $response = $this->novaActingAs(self::$user)->json('post', "/nova-api/{{$url_path}}/action?action={$action}", $request); + $response = $this->novaActingAs(self::$user)->novaRunActionAPICall({{$entity}}::class, $action, $request); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -283,7 +283,7 @@ public function testRun{{$entity}}Actions($action, $request, ${{$lower_entities} $this->assertEmpty($response->getContent()); // TODO: Need to remove after first successful start - self::${{$dromedary_entity}}State->assertChangesEqualsFixture(${{$lower_entities}}StateFixture, true); + self::${{$dromedary_entity}}State->assertChangesEqualsFixture($state, true); } public function get{{$entity}}ActionsData(): array diff --git a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php index 0fb784b3..77c0ac3f 100644 --- a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php +++ b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php @@ -74,14 +74,14 @@ public function testUpdateNotExists(): void { $data = $this->getJsonFixture('update_welcome_bonus_request.json'); - $response = $this->novaActingAs(self::$user)->novaUpdateResource(WelcomeBonus::class, 0, $data); + $response = $this->novaActingAs(self::$user)->novaUpdateResourceAPICall(WelcomeBonus::class, 0, $data); $response->assertNotFound(); } public function testUpdateNoAuth(): void { - $response = $this->novaUpdateResource(WelcomeBonus::class, 1); + $response = $this->novaUpdateResourceAPICall(WelcomeBonus::class, 1); $response->assertUnauthorized(); } @@ -98,7 +98,7 @@ public function testUpdateValidationError(): void public function testGetUpdatableFields(): void { - $response = $this->novaActingAs(self::$user)->novaGetUpdatableFields(WelcomeBonus::class, 1); + $response = $this->novaActingAs(self::$user)->novaGetUpdatableFieldsAPICall(WelcomeBonus::class, 1); $response->assertOk(); @@ -209,16 +209,16 @@ public function getRunWelcomeBonusActionsData(): array /** * @dataProvider getRunWelcomeBonusActionsData */ - public function testRunWelcomeBonusActions($action, $request, $welcome_bonusesStateFixture): void + public function testRunWelcomeBonusActions($action, $request, $state): void { - $response = $this->novaActingAs(self::$user)->json('post', "/nova-api/welcome-bonus-resources/action?action={$action}", $request); + $response = $this->novaActingAs(self::$user)->novaRunActionAPICall(WelcomeBonus::class, $action, $request); $response->assertOk(); $this->assertEmpty($response->getContent()); // TODO: Need to remove after first successful start - self::$welcomeBonusState->assertChangesEqualsFixture($welcome_bonusesStateFixture, true); + self::$welcomeBonusState->assertChangesEqualsFixture($state, true); } public function getWelcomeBonusActionsData(): array From e8b6434d9f69e2fc4bca5c0f3a7f3be6f8b5b3a9 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Tue, 5 Nov 2024 14:45:39 +0500 Subject: [PATCH 08/10] chore: update laravel helpers --- stubs/nova_test.blade.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/stubs/nova_test.blade.php b/stubs/nova_test.blade.php index f2b04610..69d3bc3e 100644 --- a/stubs/nova_test.blade.php +++ b/stubs/nova_test.blade.php @@ -223,13 +223,7 @@ public function testGetNoAuth(): void public function testSearchUnauthorized(): void { - $response = $this->novaSearchResourceAPICall( - resourceClass: {{$entity}}::class, - request: [ - 'orderBy' => 'id', - 'orderByDirection' => 'asc', - ], - ); + $response = $this->novaSearchResourceAPICall({{$entity}}::class); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); From 94f4e8ad18f345dc01480178b1524afb8b9ce264 Mon Sep 17 00:00:00 2001 From: Anton Zabolotnikov Date: Tue, 5 Nov 2024 14:53:41 +0500 Subject: [PATCH 09/10] chore: update laravel helpers --- .../NovaTestGeneratorTest/created_resource_test.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php index 77c0ac3f..791f9934 100644 --- a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php +++ b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php @@ -165,13 +165,7 @@ public function testGetNoAuth(): void public function testSearchUnauthorized(): void { - $response = $this->novaSearchResourceAPICall( - resourceClass: WelcomeBonus::class, - request: [ - 'orderBy' => 'id', - 'orderByDirection' => 'asc', - ], - ); + $response = $this->novaSearchResourceAPICall(WelcomeBonus::class); $response->assertUnauthorized(); } From 554aeba82ab52583f404637d31d7361c26b6486a Mon Sep 17 00:00:00 2001 From: DenTray Date: Mon, 11 Nov 2024 20:41:01 +0600 Subject: [PATCH 10/10] Apply suggestions from code review --- stubs/nova_test.blade.php | 15 +++------------ .../created_resource_test.php | 15 +++------------ 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/stubs/nova_test.blade.php b/stubs/nova_test.blade.php index 69d3bc3e..c27ef395 100644 --- a/stubs/nova_test.blade.php +++ b/stubs/nova_test.blade.php @@ -142,10 +142,7 @@ public function testGetUpdatableFields(): void public function testDelete(): void { - $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall( - resourceClass: {{$entity}}::class, - resourceIds: [1, 2], - ); + $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall({{$entity}}::class, [1, 2]); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_OK); @@ -159,10 +156,7 @@ public function testDelete(): void public function testDeleteNotExists(): void { - $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall( - resourceClass: {{$entity}}::class, - resourceIds: [0], - ); + $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall({{$entity}}::class, [0]); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_NOT_FOUND); @@ -173,10 +167,7 @@ public function testDeleteNotExists(): void public function testDeleteNoAuth(): void { - $response = $this->novaDeleteResourceAPICall( - resourceClass: {{$entity}}::class, - resourceIds: [1, 2], - ); + $response = $this->novaDeleteResourceAPICall({{$entity}}::class, [1, 2]); @if($shouldUseStatus) $response->assertStatus(Response::HTTP_UNAUTHORIZED); diff --git a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php index 791f9934..73ff5bb6 100644 --- a/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php +++ b/tests/fixtures/NovaTestGeneratorTest/created_resource_test.php @@ -108,10 +108,7 @@ public function testGetUpdatableFields(): void public function testDelete(): void { - $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall( - resourceClass: WelcomeBonus::class, - resourceIds: [1, 2], - ); + $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall(WelcomeBonus::class, [1, 2]); $response->assertOk(); @@ -121,20 +118,14 @@ public function testDelete(): void public function testDeleteNotExists(): void { - $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall( - resourceClass: WelcomeBonus::class, - resourceIds: [0], - ); + $response = $this->novaActingAs(self::$user)->novaDeleteResourceAPICall(WelcomeBonus::class, [0]); $response->assertNotFound(); } public function testDeleteNoAuth(): void { - $response = $this->novaDeleteResourceAPICall( - resourceClass: WelcomeBonus::class, - resourceIds: [1, 2], - ); + $response = $this->novaDeleteResourceAPICall(WelcomeBonus::class, [1, 2]); $response->assertUnauthorized(); }