Files
shopit-back/tests/Feature/Migrations/AssociateAdminAppTicketsMenuWithDesfileTest.php

82 lines
2.6 KiB
PHP

<?php
namespace Tests\Feature\Migrations;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Tests\TestCase;
class AssociateAdminAppTicketsMenuWithDesfileTest extends TestCase
{
protected function setUp(): void
{
parent::setUp();
Schema::create('menues', function (Blueprint $table): void {
$table->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',
]);
}
}