<?php

namespace Tests;

use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

/**
 * Base class untuk semua test yang membutuhkan database.
 *
 * Menggunakan migration tunggal dari `database/migrations/safe`
 * yang SQLite-compatible (mengganti ENUM dengan string dan
 * menghilangkan DB::statement MySQL-only).
 */
abstract class DatabaseTestCase extends BaseTestCase
{
    use RefreshDatabase;

    /**
     * Override migrateDatabases() agar hanya menjalankan migration safe.
     * Ini menggantikan `migrate:fresh` default yang menjalankan semua
     * migration termasuk yang MySQL-specific.
     */
    protected function migrateDatabases(): void
    {
        $this->artisan('migrate:fresh', [
            '--path'     => 'database/migrations/safe',
            '--realpath' => false,
        ]);
    }
}
