PruefeKatalogTest.php
Pfad: tests/PruefeKatalogTest.php
Ext: php
Größe: 1885 Bytes
Geändert: 2026-07-16 00:36:35+02
<?php
declare(strict_types=1);
namespace Tests;
use Demo\Application\Abgleich\PruefeKatalog;
use Demo\Domain\Abgleich\ArtefaktKatalog;
use Demo\Domain\Abgleich\Abweichung;
use Demo\Domain\Abgleich\KatalogEintrag;
use Demo\Domain\Abgleich\RealitaetsPruefung;
use PHPUnit\Framework\TestCase;
/**
* Prueft, dass der Abgleich jeden Eintrag mit seinem Befund verknuepft.
*/
final class PruefeKatalogTest extends TestCase
{
/**
* Registriert den Autoloader vor jedem Testfall.
*/
protected function setUp(): void
{
$root = dirname(__DIR__);
require_once $root . '/src/Autoloader.php';
(new \Demo\Autoloader($root . '/src'))->register();
}
/**
* fehlt_real und nicht_pruefbar werden korrekt durchgereicht.
*/
public function testBefundeProEintrag(): void
{
$katalog = new class implements ArtefaktKatalog {
/** @return list<KatalogEintrag> Feste Eintraege. */
public function alle(): array
{
return [
new KatalogEintrag('tabelle', 'public.fehlt'),
new KatalogEintrag('schnittstelle', 'GET /x'),
];
}
};
$pruefung = new class implements RealitaetsPruefung {
/** Liefert je Typ einen festen Befund. */
public function pruefe(string $typ, string $bezeichner): string
{
return $typ === 'schnittstelle' ? Abweichung::NICHT_PRUEFBAR : Abweichung::FEHLT_REAL;
}
};
$ergebnis = (new PruefeKatalog($katalog, $pruefung))->execute();
self::assertCount(2, $ergebnis);
self::assertSame('public.fehlt', $ergebnis[0]->bezeichner);
self::assertSame(Abweichung::FEHLT_REAL, $ergebnis[0]->befund);
self::assertSame(Abweichung::NICHT_PRUEFBAR, $ergebnis[1]->befund);
}
}