<?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>
        <testsuite name="Contract">
            <directory>tests/Contract</directory>
        </testsuite>
    </testsuites>
    <source>
        <include>
            <directory>app</directory>
        </include>
    </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"/>

        <!--
            Тесты идут против MySQL, а не sqlite: длины индексов, поведение
            внешних ключей и JSON-колонок должны совпадать с production (ТЗ §3.1).
            База создаётся один раз: CREATE DATABASE restomesto_test.
        -->
        <env name="DB_CONNECTION" value="mysql"/>
        <env name="DB_DATABASE" value="restomesto_test"/>
        <env name="DB_URL" value=""/>

        <env name="MAIL_MAILER" value="array"/>
        <env name="QUEUE_CONNECTION" value="sync"/>
        <env name="SESSION_DRIVER" value="array"/>

        <!--
            Вход гостя в тестах не звонит и не ходит в VK с Яндексом: драйверы
            фиксируются здесь, чтобы значения из .env разработчика не превращали
            прогон тестов в обращение к платному сервису (ТЗ §11.2, §25.3).
        -->
        <env name="FLASH_CALL_DRIVER" value="manual"/>
        <env name="FLASH_CALL_DEV_CODE" value="0000"/>
        <env name="SOCIAL_AUTH_DRIVER" value="fake"/>

        <!--
            ИИ-модерация в тестах детерминирована и бесплатна: обращаться к
            платной языковой модели на каждом прогоне нельзя, а её ответ
            нельзя считать воспроизводимым (ТЗ §13.4).
        -->
        <env name="AI_DRIVER" value="fake"/>

        <!-- Интеграция Restoplace в тестах всегда на контрактных fixtures (ТЗ §25.3). -->
        <env name="RESTOPLACE_DRIVER" value="fake"/>
        <env name="RESTOPLACE_WEBHOOK_SECRET" value="test-webhook-secret"/>
        <env name="RESTOPLACE_PARTNER_TOKEN" value="test-partner-token"/>
    </php>
</phpunit>
