From 403e19a47f0efa8f118e18cd967b8f0f912081a5 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 14 Mar 2021 23:44:03 +0800 Subject: [PATCH] Prevent overriding the existing model class --- src/Generators/ModelGenerator.php | 10 ++++++---- tests/Generators/ModelGeneratorTest.php | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/Generators/ModelGenerator.php b/src/Generators/ModelGenerator.php index c98b7ec..11a3442 100644 --- a/src/Generators/ModelGenerator.php +++ b/src/Generators/ModelGenerator.php @@ -14,11 +14,13 @@ class ModelGenerator extends BaseGenerator { $modelPath = $this->modelNames['model_path']; $modelDirectory = $this->makeDirectory(app_path($modelPath)); + $modelClassPath = $modelDirectory.'/'.$this->modelNames['model_name'].'.php'; - $this->generateFile( - $modelDirectory.'/'.$this->modelNames['model_name'].'.php', - $this->getContent('models/model') - ); + if ($this->files->exists($modelClassPath)) { + return; + } + + $this->generateFile($modelClassPath, $this->getContent('models/model')); $this->command->info($this->modelNames['model_name'].' model generated.'); } diff --git a/tests/Generators/ModelGeneratorTest.php b/tests/Generators/ModelGeneratorTest.php index c6ab792..2d99b5f 100644 --- a/tests/Generators/ModelGeneratorTest.php +++ b/tests/Generators/ModelGeneratorTest.php @@ -97,4 +97,30 @@ class Category extends Model $this->removeFileOrDir(resource_path('views/categories')); $this->removeFileOrDir(resource_path("lang/en/category.php")); } + + /** @test */ + public function it_doesnt_override_the_existing_model() + { + $this->mockConsoleOutput = true; + config(['auth.providers.users.model' => 'App\Models\User']); + $this->artisan('make:model', ['name' => 'Models/'.$this->model_name, '--no-interaction' => true]); + $this->artisan('make:crud', ['name' => $this->model_name, '--no-interaction' => true]) + ->expectsQuestion('Model file exists, are you sure to generate CRUD files?', true); + + $modelPath = app_path('Models/'.$this->model_name.'.php'); + $this->assertFileExists($modelPath); + $modelClassContent = "model_name} extends Model +{ + use HasFactory; +} +"; + $this->assertEquals($modelClassContent, file_get_contents($modelPath)); + } }