Skip to content

Test: MySQL coverage for PdoShipmentStore #609

Description

@Ibochkarev

Описание функции

Интеграционный PHPUnit @group mysql для PdoShipmentStore и миграции ms3_shipments.

Проблема, которую решает

Lifecycle в #605 покрыт InMemoryShipmentStore. Production-путь (PDO, JSON meta, table prefix, unique order_id, unique (delivery_id, provider, external_id), duplicate create) в CI не гоняется. Регрессии SQL всплывут только на живой базе.

Предлагаемое решение

Тест в tests/Integration/Mysql/ по образцу OptionSyncMysqlTest: MysqlTestConnection::requireOrSkip, создать таблицу как в 20260819150000_create_shipments.php, прогнать create/update/findByOrderId/findByExternalId и конфликт unique.

Включить в job, который уже поднимает MySQL 8.0 в .github/workflows/ci.yml при MS3_TEST_MYSQL_DSN.

Альтернативные варианты

SQLite in-memory для store. Быстрее локально, но unique NULL и JSON могут разойтись с MySQL.

Оставить только InMemory. Дешевле, SQL не проверяется.

Примеры использования

MS3_TEST_MYSQL_DSN=... MS3_TEST_MYSQL_USER=... MS3_TEST_MYSQL_PASSWORD=... \
vendor/bin/phpunit --group mysql tests/Integration/Mysql/PdoShipmentStoreMysqlTest.php

Дополнительный контекст

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions