string('code')->primary(); }); Schema::create('tenants', function (Blueprint $table): void { $table->string('codigo')->primary(); }); Schema::create('tenants_menues', function (Blueprint $table): void { $table->id(); $table->string('tenant_code'); $table->string('menu_code'); $table->json('static_content')->nullable(); $table->timestamps(); $table->unique(['tenant_code', 'menu_code']); }); DB::table('menues')->insert(['code' => 'adminapp.tickets']); DB::table('tenants')->insert([ ['codigo' => 'desfile_pura_tendencia'], ['codigo' => 'fiesta_futbol_infantil'], ]); DB::table('tenants_menues')->insert([ 'tenant_code' => 'fiesta_futbol_infantil', 'menu_code' => 'adminapp.tickets', ]); } protected function tearDown(): void { Schema::dropIfExists('tenants_menues'); Schema::dropIfExists('tenants'); Schema::dropIfExists('menues'); parent::tearDown(); } public function test_it_associates_the_tickets_menu_only_with_desfile_and_rolls_back_that_association(): void { $migration = require database_path( 'migrations/2026_09_25_000000_associate_adminapp_tickets_menu_with_desfile.php' ); $migration->down(); $migration->up(); $migration->up(); $this->assertSame(1, DB::table('tenants_menues') ->where('tenant_code', 'desfile_pura_tendencia') ->where('menu_code', 'adminapp.tickets') ->count()); $this->assertDatabaseHas('tenants_menues', [ 'tenant_code' => 'fiesta_futbol_infantil', 'menu_code' => 'adminapp.tickets', ]); $migration->down(); $this->assertDatabaseMissing('tenants_menues', [ 'tenant_code' => 'desfile_pura_tendencia', 'menu_code' => 'adminapp.tickets', ]); $this->assertDatabaseHas('tenants_menues', [ 'tenant_code' => 'fiesta_futbol_infantil', 'menu_code' => 'adminapp.tickets', ]); } }