Skip to content
5 changes: 4 additions & 1 deletion src/Generators/AbstractTestsGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -186,10 +186,11 @@ protected function getMockModel($model): array
protected function generateFixtures(): void
{
$object = $this->getFixtureValuesList($this->model);
$entity = Str::snake($this->model);

$this->createFixtureFolder();

$entity = Str::snake($this->getTestingEntityName());

foreach (self::FIXTURE_TYPES as $type => $modifications) {
if ($this->isFixtureNeeded($type)) {
foreach ($modifications as $modification) {
Expand Down Expand Up @@ -259,6 +260,8 @@ abstract protected function isFixtureNeeded($type): bool;

abstract protected function generateTests(): void;

abstract protected function getTestingEntityName(): string;

private function filterBadModelField($fields): array
{
return array_diff($fields, [
Expand Down
30 changes: 17 additions & 13 deletions src/Generators/NovaTestGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ class NovaTestGenerator extends AbstractTestsGenerator
public function generate(): void
{
if (class_exists(NovaServiceProvider::class)) {
$this->checkResourceExists('nova', "Nova{$this->model}ResourceTest");

$novaResources = $this->getCommonNovaResources();

if (count($novaResources) > 1) {
Expand All @@ -45,6 +43,8 @@ public function generate(): void

$this->novaResourceClassName = Arr::first($novaResources);

$this->checkResourceExists('nova', $this->getTestClassName(), $this->modelSubFolder);

parent::generate();
} else {
event(new SuccessCreateMessage("Nova is not installed and NovaTest is skipped"));
Expand All @@ -60,24 +60,23 @@ public function generateTests(): void
$actions = $this->getActions();
$filters = $this->collectFilters();

$resourceClass = Str::afterLast($this->novaResourceClassName, '\\');

$fileContent = $this->getStub('nova_test', [
'entity_namespace' => $this->generateNamespace($this->paths['models'], $this->modelSubFolder),
'entity_namespace' => $this->generateNamespace('models', $this->modelSubFolder),
'entity' => $this->model,
'resource_name' => $resourceClass,
'resource_name' => $this->getTestingEntityName(),
'resource_namespace' => $this->novaResourceClassName,
'snake_resource' => Str::snake($resourceClass),
'snake_resource' => Str::snake($this->getTestingEntityName()),
'dromedary_entity' => Str::lcfirst($this->model),
'lower_entities' => $this->getPluralName(Str::snake($this->model)),
'actions' => $actions,
'filters' => $filters,
'models_namespace' => $this->generateNamespace($this->paths['models']),
'models_namespace' => $this->generateNamespace('models', $this->modelSubFolder),
'user_model_path' => $this->generateNamespace('models') . '\User',
]);

$this->saveClass('tests', "Nova{$this->model}ResourceTest", $fileContent);
$this->saveClass('tests', $this->getTestClassName(), $fileContent);

event(new SuccessCreateMessage("Created a new Nova test: Nova{$this->model}ResourceTest"));
event(new SuccessCreateMessage("Created a new Nova test: {$this->getTestClassName()}"));
}

protected function getActions(): array
Expand Down Expand Up @@ -155,7 +154,7 @@ protected function loadNovaFilters()

public function getTestClassName(): string
{
return "Nova{$this->model}Test";
return "Nova{$this->getTestingEntityName()}Test";
}

protected function isFixtureNeeded($type): bool
Expand Down Expand Up @@ -213,8 +212,13 @@ protected function getFilters(): array

protected function getDumpName(): string
{
$modelName = Str::snake($this->model);
$entityName = Str::snake($this->getTestingEntityName());

return "nova_{$modelName}_dump.sql";
return "nova_{$entityName}_dump.sql";
}

protected function getTestingEntityName(): string
{
return Str::afterLast($this->novaResourceClassName, '\\');
}
}
5 changes: 5 additions & 0 deletions src/Generators/TestsGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,9 @@ protected function generateTests(): void

event(new SuccessCreateMessage($createMessage));
}

protected function getTestingEntityName(): string
{
return $this->model;
}
}
2 changes: 1 addition & 1 deletion stubs/nova_test.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use RonasIT\Support\Testing\ModelTestState;
use RonasIT\Support\Traits\NovaTestTrait;
use {{ $resource_namespace }};
use {{ $models_namespace }}\User;
use {{ $user_model_path }};

class Nova{{ $resource_name }}Test extends TestCase
{
Expand Down
16 changes: 8 additions & 8 deletions tests/CommandTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ public function testCallCommand()
$this->assertGeneratedFileEquals('validation.php', 'lang/en/validation.php');
$this->assertGeneratedFileEquals('nova_resource.php', 'app/Nova/PostResource.php');
$this->assertGeneratedFileEquals('nova_test.php', 'tests/NovaPostResourceTest.php');
$this->assertGeneratedFileEquals('nova_dump.php', 'tests/fixtures/NovaPostTest/nova_post_dump.sql');
$this->assertGeneratedFileEquals('create_request.json', 'tests/fixtures/NovaPostTest/create_post_request.json');
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/NovaPostTest/create_post_response.json');
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/NovaPostTest/update_post_request.json');
$this->assertGeneratedFileEquals('nova_dump.php', 'tests/fixtures/NovaPostResourceTest/nova_post_resource_dump.sql');
$this->assertGeneratedFileEquals('create_request.json', 'tests/fixtures/NovaPostResourceTest/create_post_resource_request.json');
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/NovaPostResourceTest/create_post_resource_response.json');
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/NovaPostResourceTest/update_post_resource_request.json');
}

public function testCallCommandSubFoldersModel()
Expand Down Expand Up @@ -137,10 +137,10 @@ public function testCallCommandSubFoldersModel()
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/PostTest/create_post_response.json');
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/PostTest/update_post_request.json');
$this->assertGeneratedFileEquals('validation.php', 'lang/en/validation.php');
$this->assertGeneratedFileEquals('nova_dump.php', 'tests/fixtures/NovaPostTest/nova_post_dump.sql');
$this->assertGeneratedFileEquals('create_request.json', 'tests/fixtures/NovaPostTest/create_post_request.json');
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/NovaPostTest/create_post_response.json');
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/NovaPostTest/update_post_request.json');
$this->assertGeneratedFileEquals('nova_dump.php', 'tests/fixtures/NovaPostResourceTest/nova_post_resource_dump.sql');
$this->assertGeneratedFileEquals('create_request.json', 'tests/fixtures/NovaPostResourceTest/create_post_resource_request.json');
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/NovaPostResourceTest/create_post_resource_response.json');
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/NovaPostResourceTest/update_post_resource_request.json');
}

public function testMakeOnly()
Expand Down
29 changes: 16 additions & 13 deletions tests/NovaTestGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ public function testGenerateNovaTestAlreadyExists()

$this->mockClass(NovaTestGenerator::class, [
$this->classExistsMethodCall(['nova', 'NovaPostResourceTest']),
$this->getCommonNovaResourcesMock([
'PostResource',
]),
]);

$this->assertExceptionThrew(
Expand Down Expand Up @@ -106,11 +109,11 @@ public function testNovaTestStubNotExist()
->setModel('WelcomeBonus')
->generate();

$this->assertFileDoesNotExist('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');
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/update_welcome_bonus_request.json');
$this->assertFileDoesNotExist('tests/NovaWelcomeBonusResourceTest.php');
$this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusResourceTest/nova_welcome_bonus_resource_dump.sql');
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_request.json');
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_response.json');
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/update_welcome_bonus_resource_request.json');

$this->assertEventPushed(
className: WarningEvent::class,
Expand Down Expand Up @@ -140,10 +143,10 @@ public function testDumpStubNotExist()
->generate();

$this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusResourceTest.php');
$this->assertFileDoesNotExist('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');
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/update_welcome_bonus_request.json');
$this->assertFileDoesNotExist('tests/fixtures/NovaWelcomeBonusResourceTest/nova_welcome_bonus_resource_dump.sql');
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_request.json');
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_response.json');
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/update_welcome_bonus_resource_request.json');

$this->assertEventPushed(
className: WarningEvent::class,
Expand Down Expand Up @@ -177,10 +180,10 @@ public function testSuccess()
->generate();

$this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusResourceTest.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');
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/update_welcome_bonus_request.json');
$this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusResourceTest/nova_welcome_bonus_resource_dump.sql');
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_request.json');
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_response.json');
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/update_welcome_bonus_resource_request.json');
}

public function testGenerateNovaPackageNotInstall()
Expand Down
4 changes: 2 additions & 2 deletions tests/fixtures/CommandTest/nova_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace App\Tests;

use RonasIT\Support\Tests\Support\Command\Models\Post;
use Models\Post;
use PHPUnit\Framework\Attributes\DataProvider;
use RonasIT\Support\Testing\ModelTestState;
use RonasIT\Support\Traits\NovaTestTrait;
use App\Nova\PostResource;
use RonasIT\Support\Tests\Support\Command\Models\User;
use Models\User;

class NovaPostResourceTest extends TestCase
{
Expand Down
4 changes: 2 additions & 2 deletions tests/fixtures/CommandTest/subfolder/nova_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace App\Tests;

use RonasIT\Support\Tests\Support\Command\Models\Forum\Post;
use Models\Forum\Post;
use PHPUnit\Framework\Attributes\DataProvider;
use RonasIT\Support\Testing\ModelTestState;
use RonasIT\Support\Traits\NovaTestTrait;
use App\Nova\Forum\PostResource;
use RonasIT\Support\Tests\Support\Command\Models\User;
use Models\User;

class NovaPostResourceTest extends TestCase
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

namespace App\Tests;

use RonasIT\Support\Tests\Support\Models\WelcomeBonus;
use Models\WelcomeBonus;
use PHPUnit\Framework\Attributes\DataProvider;
use RonasIT\Support\Testing\ModelTestState;
use RonasIT\Support\Traits\NovaTestTrait;
use App\Nova\WelcomeBonusResource;
use RonasIT\Support\Tests\Support\Models\User;
use Models\User;

class NovaWelcomeBonusResourceTest extends TestCase
{
Expand Down