tests: gemeinsamer Testhelfer, DB_URL-Guard vor RefreshDatabase, Larastan voller Scope ohne Meldung (Umsetzungsaudit 29.09.: Q-01, Q-02; 02.10.: O02)

- makeCustomerForShowPhase8a() nach tests/Pest.php — die Suite läuft damit
  auch parallel (--parallel) und dateiweise grün
- phpunit.xml leert DB_URL, der Guard in TestCase::setUpTraits() bricht bei
  gesetzter url ab, bevor RefreshDatabase eine Verbindung öffnet
- HasUniqueSlug ohne widersprüchliche @var-Annotation

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-02 13:09:00 +00:00
parent 98c465b691
commit dfb0513e73
6 changed files with 74 additions and 34 deletions

View file

@ -33,3 +33,24 @@ test('the database guard rejects anything but sqlite in memory', function () {
config()->set('database.default', 'sqlite');
}
});
test('the database guard rejects a url override on the sqlite connection', function () {
/** @var TestCase $this */
$guard = fn () => $this->assertTestDatabaseIsInMemorySqlite();
// Laravel löst `url` erst beim Verbindungsaufbau auf und überschreibt
// damit Treiber und Datenbank — die rohen sqlite/:memory:-Werte allein
// beweisen nichts (Umsetzungsaudit 02.10.2026, O02). Nur Config, keine
// Verbindung: der Guard muss vorher abbrechen.
try {
config()->set('database.connections.sqlite.url', 'mysql://root:secret@127.0.0.1:3306/pressekonto');
expect($guard)->toThrow(RuntimeException::class, 'DB_URL');
} finally {
config()->set('database.connections.sqlite.url', null);
}
});
test('phpunit neutralises DB_URL for the whole run', function () {
expect(config('database.connections.sqlite.url'))->toBeEmpty();
});