Skip to content
Merged
1 change: 0 additions & 1 deletion ReadMe.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,6 @@ Since 1.3 version you need to add to your config/entity-generator.php following
```php
'paths' => [
... // your old data
'seeds' => 'database/seeds',
'database_seeder' => 'database/seeds/DatabaseSeeder.php',
'translations' => 'lang/en/validation.php'
],
Expand Down
4 changes: 3 additions & 1 deletion src/Generators/SeederGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ public function generate(): void

$this->createNamespace('seeders');

$this->createDatabaseSeeder();
if (!file_exists($this->databaseSeederPath)) {
$this->createDatabaseSeeder();
}

$this->createEntitySeeder();

Expand Down
22 changes: 19 additions & 3 deletions tests/SeederGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
use RonasIT\Support\DTO\RelationsDTO;
use RonasIT\Support\Events\WarningEvent;
use RonasIT\Support\Generators\SeederGenerator;
use RonasIT\Support\Tests\Support\Seeder\SeederGeneratorMockTrait;
use RonasIT\Support\Exceptions\ResourceAlreadyExistsException;
use RonasIT\Support\Tests\Support\Repository\RepositoryMockTrait;

class SeederGeneratorTest extends TestCase
{
use RepositoryMockTrait;
use SeederGeneratorMockTrait;

public function testCreateSeeder()
{
Expand All @@ -22,7 +22,23 @@ public function testCreateSeeder()
->setModel('Post')
->generate();

$this->assertGeneratedFileEquals('database_seeder.php', 'database/seeders/DatabaseSeeder.php');
$this->assertGeneratedFileEquals('database_seeder_created.php', 'database/seeders/DatabaseSeeder.php');
$this->assertGeneratedFileEquals('post_seeder.php', 'database/seeders/PostSeeder.php');
}

public function testCreateSeederDatabaseSeederExists()
{
$this->mockFilesystem();

app(SeederGenerator::class)
->setRelations(new RelationsDTO(
hasMany: ['Comment'],
belongsTo: ['User'],
))
->setModel('Post')
->generate();

$this->assertGeneratedFileEquals('database_seeder_modified.php', 'database/seeders/DatabaseSeeder.php');
$this->assertGeneratedFileEquals('post_seeder.php', 'database/seeders/PostSeeder.php');
}

Expand Down
9 changes: 9 additions & 0 deletions tests/Support/FileSystemMock.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class FileSystemMock
public ?array $factories = null;
public ?array $translations = null;
public ?array $config = null;
public ?array $seeders = null;

public function setStructure(): void
{
Expand Down Expand Up @@ -124,6 +125,14 @@ public function setStructure(): void
}
}

if (!is_null($this->seeders)) {
$structure['database']['seeders'] = [];

foreach ($this->seeders as $seeder => $content) {
$structure['database']['seeders'][$seeder] = $content;
}
}

vfsStream::create($structure);
}
}
21 changes: 21 additions & 0 deletions tests/Support/Seeder/SeederGeneratorMockTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace RonasIT\Support\Tests\Support\Seeder;

use RonasIT\Support\Tests\Support\FileSystemMock;
use RonasIT\Support\Tests\Support\GeneratorMockTrait;

trait SeederGeneratorMockTrait
{
use GeneratorMockTrait;

public function mockFilesystem(): void
{
$fileSystemMock = new FileSystemMock();
$fileSystemMock->seeders = [
'DatabaseSeeder.php' => file_get_contents(getcwd() . '/tests/fixtures/SeederGeneratorTest/existed_database_seeder.php'),
];

$fileSystemMock->setStructure();
}
}
19 changes: 19 additions & 0 deletions tests/fixtures/SeederGeneratorTest/database_seeder_modified.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(AuthorSeeder::class);
$this->call(PostSeeder::class);
}
}
18 changes: 18 additions & 0 deletions tests/fixtures/SeederGeneratorTest/existed_database_seeder.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(AuthorSeeder::class);
}
}