diff --git a/src/Generators/ModelFactoryGenerator.php b/src/Generators/ModelFactoryGenerator.php index 6be8b9a..0771116 100644 --- a/src/Generators/ModelFactoryGenerator.php +++ b/src/Generators/ModelFactoryGenerator.php @@ -51,6 +51,12 @@ class ModelFactoryGenerator extends BaseGenerator $modelFactoryFileContent = str_replace($string, $replacement, $modelFactoryFileContent); } + if ($this->modelNames['model_path'] != 'Models') { + $string = 'Database\Factories'; + $replacement = $string.'\\'.str_replace('/', '\\', $this->modelNames['model_path']); + $modelFactoryFileContent = str_replace($string, $replacement, $modelFactoryFileContent); + } + return $this->replaceStubString($modelFactoryFileContent); } } diff --git a/tests/Generators/ModelFactoryGeneratorTest.php b/tests/Generators/ModelFactoryGeneratorTest.php index 846d7ce..161efbf 100644 --- a/tests/Generators/ModelFactoryGeneratorTest.php +++ b/tests/Generators/ModelFactoryGeneratorTest.php @@ -41,6 +41,50 @@ class {$this->model_name}Factory extends Factory } /** @test */ + public function it_creates_correct_model_factory_content_with_namespaced_model() + { + $inputName = 'Entities/References/Category'; + $modelName = 'Category'; + $fullModelName = 'App\Entities\References\Category'; + $pluralModelName = 'Categories'; + $tableName = 'categories'; + $langName = 'category'; + $modelPath = 'Entities/References'; + $factoryNamespace = 'Entities\References'; + + $this->artisan('make:crud-api', ['name' => $inputName, '--no-interaction' => true]); + + $modelFactoryPath = database_path('factories/'.$inputName.'Factory.php'); + $this->assertFileExists($modelFactoryPath); + $modelFactoryContent = " \$this->faker->word, + 'description' => \$this->faker->sentence, + 'creator_id' => function () { + return User::factory()->create()->id; + }, + ]; + } +} +"; + $this->assertEquals($modelFactoryContent, file_get_contents($modelFactoryPath)); + } + + + /** @test */ public function it_creates_model_factory_file_content_from_published_stub() { app('files')->makeDirectory(base_path('stubs/simple-crud/database/factories'), 0777, true, true);