36 lines
1.1 KiB
PHP
36 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Tests;
|
|
|
|
use Commands\Migration;
|
|
use Override;
|
|
use PHPUnit\Framework\TestCase as PHPunitTestCase;
|
|
|
|
abstract class TestCase extends PHPunitTestCase
|
|
{
|
|
private static Migration $db_migration;
|
|
|
|
#[Override]
|
|
public static function setUpBeforeClass(): void
|
|
{
|
|
// Garantiza que ningún test corra contra la base de datos real.
|
|
self::assertSame('sqlite', DB_TYPE, 'Tests must run on SQLite.');
|
|
self::assertSame(':memory:', DB_NAME, 'Tests must run on an in-memory database.');
|
|
|
|
static::$db_migration = new Migration(verbose: false);
|
|
static::$db_migration->ensureDatabaseExists();
|
|
// fresh() limpia el historial de migraciones y vuelve a aplicarlas: en
|
|
// modo aislado, el proceso padre también ejecuta este hook y deja el
|
|
// archivo de control poblado, por lo que migrate() se saltaría el
|
|
// esquema sobre la base :memory: vacía del hijo.
|
|
static::$db_migration->fresh();
|
|
}
|
|
|
|
#[Override]
|
|
public static function tearDownAfterClass(): void
|
|
{
|
|
// Ejecutar el rollback de las migraciones
|
|
static::$db_migration->rollback();
|
|
}
|
|
}
|