Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "*"
},
Expand Down
16 changes: 8 additions & 8 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/Generators/NovaTestGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ protected function getActions(): array
$actionClass = class_basename($action);

return [
'url' => Str::kebab($actionClass),
'className' => $actionClass,
'fixture' => Str::snake($actionClass),
];
}, $actions);
Expand Down
67 changes: 37 additions & 30 deletions stubs/nova_test.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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->novaDeleteResource(
resourceClass: {{$entity}}::class,
resourceIds: [1, 2],
);

@if($shouldUseStatus)
$response->assertStatus(Response::HTTP_UNAUTHORIZED);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -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',
],
Expand All @@ -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);
Expand All @@ -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
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion tests/NovaTestGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
$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');
Expand Down
Loading
Loading