<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
         bootstrap="vendor/autoload.php"
         colors="true"
>
    <testsuites>
        <testsuite name="Unit">
            <directory>tests/Unit</directory>
        </testsuite>
        <testsuite name="Feature">
            <directory>tests/Feature</directory>
        </testsuite>
    </testsuites>
    <!--
        No <coverage><report> block here on purpose.

        Declaring a report output in the config suppresses PHPUnit's normal test
        output when no coverage driver is loaded, which makes a passing run look
        like a silent failure. Coverage is requested on the command line instead
        (`composer test:coverage`), which also checks for the driver first and
        says so plainly when it is missing.
    -->
    <source>
        <include>
            <directory>app</directory>
        </include>
        <exclude>
            <!-- Framework scaffolding with no branching worth measuring. -->
            <file>app/Http/Controllers/Controller.php</file>
        </exclude>
    </source>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="APP_MAINTENANCE_DRIVER" value="file"/>
        <env name="BCRYPT_ROUNDS" value="4"/>
        <env name="BROADCAST_CONNECTION" value="null"/>
        <env name="CACHE_STORE" value="array"/>
        <env name="DB_CONNECTION" value="sqlite"/>
        <env name="DB_DATABASE" value=":memory:"/>
        <env name="DB_URL" value=""/>
        <env name="MAIL_MAILER" value="array"/>
        <env name="QUEUE_CONNECTION" value="sync"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="PULSE_ENABLED" value="false"/>
        <env name="TELESCOPE_ENABLED" value="false"/>
        <env name="NIGHTWATCH_ENABLED" value="false"/>
        <env name="APP_URL" value="http://localhost:8000"/>
        <env name="FRONTEND_URL" value="http://localhost:5173"/>
        <!-- SQLite does not enforce foreign keys unless asked; the suite must. -->
        <env name="DB_FOREIGN_KEYS" value="true"/>
        <!-- Pin marketplace economics so assertions do not drift with .env. -->
        <env name="MARKETPLACE_BASE_CURRENCY" value="USD"/>
        <env name="MARKETPLACE_DEFAULT_SELLER_COMMISSION_BPS" value="1000"/>
        <env name="MARKETPLACE_DEFAULT_BUYER_FEE_BPS" value="0"/>
        <env name="OFFER_DEFAULT_EXPIRY_HOURS" value="168"/>
        <env name="PAYOUT_HOLD_PERIOD_HOURS" value="72"/>
    </php>
</phpunit>
