diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 8c89d2e..d1b6138 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -11,30 +11,31 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // Seed basic system data + // System defaults and catalog data required in every environment $this->call([ MediaStorageTargetSeeder::class, LegalPagesSeeder::class, PackageSeeder::class, - ]); - - // Seed core demo data for frontend previews - $this->call([ EventTypesSeeder::class, EmotionsSeeder::class, - TasksSeeder::class, - EventTasksSeeder::class, TaskCollectionsSeeder::class, InviteLayoutSeeder::class, ]); - // Seed demo and admin data $this->call([ + BlogPostSeeder::class, SuperAdminSeeder::class, - DemoTenantSeeder::class, - DemoEventSeeder::class, ]); + if (! app()->environment('production')) { + $this->call([ + DemoTenantSeeder::class, + DemoEventSeeder::class, + TasksSeeder::class, + EventTasksSeeder::class, + ]); + } + if (app()->environment(['local', 'development', 'demo'])) { $this->call([ DemoPhotosSeeder::class, diff --git a/tests/Feature/DatabaseSeederTest.php b/tests/Feature/DatabaseSeederTest.php new file mode 100644 index 0000000..5c3222a --- /dev/null +++ b/tests/Feature/DatabaseSeederTest.php @@ -0,0 +1,46 @@ +seedDatabaseForEnvironment('production'); + + $this->assertDatabaseHas('packages', ['slug' => 'starter']); + $this->assertDatabaseHas('blog_posts', ['slug' => '10-kreative-fotoaufgaben-fuer-eure-hochzeit']); + $this->assertDatabaseMissing('tenants', ['slug' => 'demo-tenant']); + } + + public function test_non_production_seed_includes_demo_tenant(): void + { + $this->seedDatabaseForEnvironment('local'); + + $this->assertDatabaseHas('tenants', ['slug' => 'demo-tenant']); + } + + private function seedDatabaseForEnvironment(string $environment): void + { + $originalEnvironment = app()->environment(); + app()->detectEnvironment(fn () => $environment); + + try { + $options = ['--class' => DatabaseSeeder::class]; + + if ($environment === 'production') { + $options['--force'] = true; + } + + $this->artisan('db:seed', $options); + } finally { + app()->detectEnvironment(fn () => $originalEnvironment); + } + } +}