Skip to content

Commit 1891bcc

Browse files
authored
Merge pull request #214 from RonasIT/140-use-NovaResource-class-in-NovaTestGenerator-instead-of-Model
refactor: set resource name in dump/fixtures
2 parents 5f0f81a + 29c4f08 commit 1891bcc

File tree

5 files changed

+47
-33
lines changed

5 files changed

+47
-33
lines changed

src/Generators/AbstractTestsGenerator.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,11 @@ protected function getMockModel($model): array
186186
protected function generateFixtures(): void
187187
{
188188
$object = $this->getFixtureValuesList($this->model);
189-
$entity = Str::snake($this->model);
190189

191190
$this->createFixtureFolder();
192191

192+
$entity = Str::snake($this->getTestingEntityName());
193+
193194
foreach (self::FIXTURE_TYPES as $type => $modifications) {
194195
if ($this->isFixtureNeeded($type)) {
195196
foreach ($modifications as $modification) {
@@ -259,6 +260,8 @@ abstract protected function isFixtureNeeded($type): bool;
259260

260261
abstract protected function generateTests(): void;
261262

263+
abstract protected function getTestingEntityName(): string;
264+
262265
private function filterBadModelField($fields): array
263266
{
264267
return array_diff($fields, [

src/Generators/NovaTestGenerator.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ class NovaTestGenerator extends AbstractTestsGenerator
2020
public function generate(): void
2121
{
2222
if (class_exists(NovaServiceProvider::class)) {
23-
$this->checkResourceExists('nova', "Nova{$this->model}ResourceTest");
24-
2523
$novaResources = $this->getCommonNovaResources();
2624

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

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

46+
$this->checkResourceExists('nova', $this->getTestClassName());
47+
4848
parent::generate();
4949
} else {
5050
event(new SuccessCreateMessage("Nova is not installed and NovaTest is skipped"));
@@ -60,24 +60,22 @@ public function generateTests(): void
6060
$actions = $this->getActions();
6161
$filters = $this->collectFilters();
6262

63-
$resourceClass = Str::afterLast($this->novaResourceClassName, '\\');
64-
6563
$fileContent = $this->getStub('nova_test', [
6664
'entity_namespace' => $this->generateNamespace($this->paths['models'], $this->modelSubFolder),
6765
'entity' => $this->model,
68-
'resource_name' => $resourceClass,
66+
'resource_name' => $this->getTestingEntityName(),
6967
'resource_namespace' => $this->novaResourceClassName,
70-
'snake_resource' => Str::snake($resourceClass),
68+
'snake_resource' => Str::snake($this->getTestingEntityName()),
7169
'dromedary_entity' => Str::lcfirst($this->model),
7270
'lower_entities' => $this->getPluralName(Str::snake($this->model)),
7371
'actions' => $actions,
7472
'filters' => $filters,
7573
'models_namespace' => $this->generateNamespace($this->paths['models']),
7674
]);
7775

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

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

8381
protected function getActions(): array
@@ -155,7 +153,7 @@ protected function loadNovaFilters()
155153

156154
public function getTestClassName(): string
157155
{
158-
return "Nova{$this->model}Test";
156+
return "Nova{$this->getTestingEntityName()}Test";
159157
}
160158

161159
protected function isFixtureNeeded($type): bool
@@ -213,8 +211,13 @@ protected function getFilters(): array
213211

214212
protected function getDumpName(): string
215213
{
216-
$modelName = Str::snake($this->model);
214+
$entityName = Str::snake($this->getTestingEntityName());
217215

218-
return "nova_{$modelName}_dump.sql";
216+
return "nova_{$entityName}_dump.sql";
217+
}
218+
219+
protected function getTestingEntityName(): string
220+
{
221+
return Str::afterLast($this->novaResourceClassName, '\\');
219222
}
220223
}

src/Generators/TestsGenerator.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,9 @@ protected function generateTests(): void
6060

6161
event(new SuccessCreateMessage($createMessage));
6262
}
63+
64+
protected function getTestingEntityName(): string
65+
{
66+
return $this->model;
67+
}
6368
}

tests/CommandTest.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ public function testCallCommand()
9191
$this->assertGeneratedFileEquals('validation.php', 'lang/en/validation.php');
9292
$this->assertGeneratedFileEquals('nova_resource.php', 'app/Nova/PostResource.php');
9393
$this->assertGeneratedFileEquals('nova_test.php', 'tests/NovaPostResourceTest.php');
94-
$this->assertGeneratedFileEquals('nova_dump.php', 'tests/fixtures/NovaPostTest/nova_post_dump.sql');
95-
$this->assertGeneratedFileEquals('create_request.json', 'tests/fixtures/NovaPostTest/create_post_request.json');
96-
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/NovaPostTest/create_post_response.json');
97-
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/NovaPostTest/update_post_request.json');
94+
$this->assertGeneratedFileEquals('nova_dump.php', 'tests/fixtures/NovaPostResourceTest/nova_post_resource_dump.sql');
95+
$this->assertGeneratedFileEquals('create_request.json', 'tests/fixtures/NovaPostResourceTest/create_post_resource_request.json');
96+
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/NovaPostResourceTest/create_post_resource_response.json');
97+
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/NovaPostResourceTest/update_post_resource_request.json');
9898
}
9999

100100
public function testCallCommandSubFoldersModel()
@@ -137,10 +137,10 @@ public function testCallCommandSubFoldersModel()
137137
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/PostTest/create_post_response.json');
138138
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/PostTest/update_post_request.json');
139139
$this->assertGeneratedFileEquals('validation.php', 'lang/en/validation.php');
140-
$this->assertGeneratedFileEquals('nova_dump.php', 'tests/fixtures/NovaPostTest/nova_post_dump.sql');
141-
$this->assertGeneratedFileEquals('create_request.json', 'tests/fixtures/NovaPostTest/create_post_request.json');
142-
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/NovaPostTest/create_post_response.json');
143-
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/NovaPostTest/update_post_request.json');
140+
$this->assertGeneratedFileEquals('nova_dump.php', 'tests/fixtures/NovaPostResourceTest/nova_post_resource_dump.sql');
141+
$this->assertGeneratedFileEquals('create_request.json', 'tests/fixtures/NovaPostResourceTest/create_post_resource_request.json');
142+
$this->assertGeneratedFileEquals('create_response.json', 'tests/fixtures/NovaPostResourceTest/create_post_resource_response.json');
143+
$this->assertGeneratedFileEquals('update_request.json', 'tests/fixtures/NovaPostResourceTest/update_post_resource_request.json');
144144
}
145145

146146
public function testMakeOnly()

tests/NovaTestGeneratorTest.php

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ public function testGenerateNovaTestAlreadyExists()
6868

6969
$this->mockClass(NovaTestGenerator::class, [
7070
$this->classExistsMethodCall(['nova', 'NovaPostResourceTest']),
71+
$this->getCommonNovaResourcesMock([
72+
'PostResource',
73+
]),
7174
]);
7275

7376
$this->assertExceptionThrew(
@@ -106,11 +109,11 @@ public function testNovaTestStubNotExist()
106109
->setModel('WelcomeBonus')
107110
->generate();
108111

109-
$this->assertFileDoesNotExist('tests/NovaWelcomeBonusTest.php');
110-
$this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusTest/nova_welcome_bonus_dump.sql');
111-
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_request.json');
112-
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_response.json');
113-
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/update_welcome_bonus_request.json');
112+
$this->assertFileDoesNotExist('tests/NovaWelcomeBonusResourceTest.php');
113+
$this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusResourceTest/nova_welcome_bonus_resource_dump.sql');
114+
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_request.json');
115+
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_response.json');
116+
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/update_welcome_bonus_resource_request.json');
114117

115118
$this->assertEventPushed(
116119
className: WarningEvent::class,
@@ -140,10 +143,10 @@ public function testDumpStubNotExist()
140143
->generate();
141144

142145
$this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusResourceTest.php');
143-
$this->assertFileDoesNotExist('tests/fixtures/NovaWelcomeBonusTest/nova_welcome_bonus_dump.sql');
144-
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_request.json');
145-
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_response.json');
146-
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/update_welcome_bonus_request.json');
146+
$this->assertFileDoesNotExist('tests/fixtures/NovaWelcomeBonusResourceTest/nova_welcome_bonus_resource_dump.sql');
147+
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_request.json');
148+
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_response.json');
149+
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/update_welcome_bonus_resource_request.json');
147150

148151
$this->assertEventPushed(
149152
className: WarningEvent::class,
@@ -177,10 +180,10 @@ public function testSuccess()
177180
->generate();
178181

179182
$this->assertGeneratedFileEquals('created_resource_test.php', 'tests/NovaWelcomeBonusResourceTest.php');
180-
$this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusTest/nova_welcome_bonus_dump.sql');
181-
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_request.json');
182-
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusTest/create_welcome_bonus_response.json');
183-
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusTest/update_welcome_bonus_request.json');
183+
$this->assertGeneratedFileEquals('dump.sql', 'tests/fixtures/NovaWelcomeBonusResourceTest/nova_welcome_bonus_resource_dump.sql');
184+
$this->assertGeneratedFileEquals('create_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_request.json');
185+
$this->assertGeneratedFileEquals('create_welcome_bonus_response.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/create_welcome_bonus_resource_response.json');
186+
$this->assertGeneratedFileEquals('update_welcome_bonus_request.json', 'tests/fixtures/NovaWelcomeBonusResourceTest/update_welcome_bonus_resource_request.json');
184187
}
185188

186189
public function testGenerateNovaPackageNotInstall()

0 commit comments

Comments
 (0)