Skip to content
Open
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
28 changes: 28 additions & 0 deletions tests/Support/Seeder/SeederGeneratorMockTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace RonasIT\Support\Tests\Support\Seeder;

use org\bovigo\vfs\vfsStream;
use RonasIT\Support\Tests\Support\GeneratorMockTrait;

trait SeederGeneratorMockTrait
{
use GeneratorMockTrait;

public function mockFilesystem(): void
{
$structure = [
'database' => [
'seeders' => [],
],
];

$root = vfsStream::setup('root', null, $structure);

$databaseSeederContent = file_get_contents(getcwd() . '/tests/fixtures/SeederGeneratorTest/database_seeder_existing.php');

vfsStream::newFile('database/seeders/DatabaseSeeder.php')
->at($root)
->setContent($databaseSeederContent);
}
}
18 changes: 18 additions & 0 deletions tests/fixtures/SeederGeneratorTest/database_seeder_existing.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);
}
}
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);
}
}