From fac4406885ef77e902fc15a1263bb686517d82dc Mon Sep 17 00:00:00 2001 From: roman Date: Tue, 10 Dec 2024 14:49:49 +0600 Subject: [PATCH 1/4] fix: test generation when model in not default directory refs: https://github.com/RonasIT/laravel-entity-generator/issues/100 --- src/Generators/AbstractTestsGenerator.php | 4 ++-- src/Generators/FactoryGenerator.php | 1 + stubs/factory.blade.php | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Generators/AbstractTestsGenerator.php b/src/Generators/AbstractTestsGenerator.php index d4011e37..61013ed8 100644 --- a/src/Generators/AbstractTestsGenerator.php +++ b/src/Generators/AbstractTestsGenerator.php @@ -172,8 +172,8 @@ protected function getMockModel($model): array return []; } - $modelClass = $this->getModelClass($model); - $factory = $modelClass::factory(); + $factoryNamespace = "{$this->getOrCreateNamespace('factories')}\\{$model}Factory"; + $factory = $factoryNamespace::new(); return $factory ->make() diff --git a/src/Generators/FactoryGenerator.php b/src/Generators/FactoryGenerator.php index fe18caf8..64942a56 100644 --- a/src/Generators/FactoryGenerator.php +++ b/src/Generators/FactoryGenerator.php @@ -51,6 +51,7 @@ public function generate(): void 'namespace' => $this->getOrCreateNamespace('factories'), 'entity' => $this->model, 'fields' => $this->prepareFields(), + 'modelNamespace' => $this->getOrCreateNamespace('models'), ]); $this->saveClass('factories', "{$this->model}Factory", $factoryContent); diff --git a/stubs/factory.blade.php b/stubs/factory.blade.php index bedba559..e53798e5 100644 --- a/stubs/factory.blade.php +++ b/stubs/factory.blade.php @@ -2,9 +2,12 @@ use Faker\Generator as Faker; use Illuminate\Database\Eloquent\Factories\Factory; +use {{$modelNamespace}}\{{$entity}}; class {{$entity}}Factory extends Factory { + protected $model = {{$entity}}::class; + public function definition(): array { @if(!empty($fields)) From d372eef9a6b15c6d7bf3dac536a7b31c8e1f748a Mon Sep 17 00:00:00 2001 From: roman Date: Tue, 10 Dec 2024 15:03:50 +0600 Subject: [PATCH 2/4] fix: test refs: https://github.com/RonasIT/laravel-entity-generator/issues/100 --- tests/fixtures/FactoryGeneratorTest/post_factory.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/fixtures/FactoryGeneratorTest/post_factory.php b/tests/fixtures/FactoryGeneratorTest/post_factory.php index 0b23874f..02259d17 100644 --- a/tests/fixtures/FactoryGeneratorTest/post_factory.php +++ b/tests/fixtures/FactoryGeneratorTest/post_factory.php @@ -4,9 +4,12 @@ use Faker\Generator as Faker; use Illuminate\Database\Eloquent\Factories\Factory; +use App\Models\Post; class PostFactory extends Factory { + protected $model = Post::class; + public function definition(): array { $faker = app(Faker::class); From 2e6a8f4fdf58a5bf9cb956dd798f22a027879d8f Mon Sep 17 00:00:00 2001 From: roman Date: Tue, 17 Dec 2024 15:46:33 +0600 Subject: [PATCH 3/4] feat: remove use of HasFactory trait refs: https://github.com/RonasIT/laravel-entity-generator/issues/100 --- stubs/model.blade.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/stubs/model.blade.php b/stubs/model.blade.php index 03d1b338..aa1694af 100644 --- a/stubs/model.blade.php +++ b/stubs/model.blade.php @@ -1,12 +1,11 @@ namespace {{$namespace}}; -use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use RonasIT\Support\Traits\ModelTrait; class {{$entity}} extends Model { - use HasFactory, ModelTrait; + use ModelTrait; protected $fillable = [ @foreach($fields as $field) From 7d65b7961992edf3408638f80aa470d6ae764a7b Mon Sep 17 00:00:00 2001 From: roman Date: Tue, 17 Dec 2024 16:24:54 +0600 Subject: [PATCH 4/4] feat: remove method exists check refs: https://github.com/RonasIT/laravel-entity-generator/issues/100 --- src/Generators/AbstractTestsGenerator.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Generators/AbstractTestsGenerator.php b/src/Generators/AbstractTestsGenerator.php index ad1fdd07..03067fe0 100644 --- a/src/Generators/AbstractTestsGenerator.php +++ b/src/Generators/AbstractTestsGenerator.php @@ -90,9 +90,7 @@ protected function getInserts(): array protected function isFactoryExists(string $modelName): bool { - $modelClass = $this->getModelClass($modelName); - - return $this->classExists('factories', "{$modelName}Factory") && method_exists($modelClass, 'factory'); + return $this->classExists('factories', "{$modelName}Factory"); } protected function isMethodExists($modelName, $method): bool