← Code-Übersicht

SourceInvoiceTest.php

Pfad: tests/Rechnung/SourceInvoiceTest.php

Ext: php

Größe: 1301 Bytes

Geändert: 2026-07-16 16:54:17+02

<?php
declare(strict_types=1);

namespace Tests\Rechnung;

use Demo\Domain\Rechnung\InvoiceRecord;
use Demo\Domain\Rechnung\SourceInvoice;
use PHPUnit\Framework\TestCase;

/**
 * Prueft die URL-unabhaengige Rechnungsidentitaet.
 */
final class SourceInvoiceTest extends TestCase
{
    /** Zwei Portal-URLs derselben Rechnung muessen denselben Schluessel liefern. */
    public function testFachschluesselIstUnabhaengigVonQuelleUndUrl(): void
    {
        $first = new SourceInvoice('a', 'WEtell GmbH', 'https://mein.wetell.de/a.pdf', '2026-07-04', 'RF183233049809');
        $second = new SourceInvoice('b', 'WEtell GmbH', 'https://mein.wetell.de/b.pdf', '2026-07-04', 'RF183233049809');
        self::assertSame($first->rechnungsschluessel(), $second->rechnungsschluessel());
        self::assertStringNotContainsString('a-', $first->rechnungsschluessel());
    }

    /** Persistierte Betragswerte bleiben exakte Dezimalstrings. */
    public function testLegacyFloatWirdBeimLadenNormalisiert(): void
    {
        $record = InvoiceRecord::fromArray(['quelleId' => 'x', 'rechnungsschluessel' => 'k', 'status' => 'EXTRACTED', 'netto' => 26.0504, 'steuer' => 4.9496, 'brutto' => 31]);
        self::assertSame('26.0504', $record->netto);
        self::assertSame('31.0000', $record->brutto);
    }
}