← Code-Übersicht

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);
    }
}