Step 00 — Squelette + intégration naïve

3 Bounded Contexts (Sales, Invoicing, LegacyFulfillment) avec :
- Domaines complets (agrégats, VOs, événements, invariants)
- Couche application (commands, queries, ports)
- Infrastructure in-memory (repos, gateway fake)
- Controllers HTTP Symfony
- Couplage naïf synchrone entre BC via NaiveSalesEventPublisher
- 20 tests unitaires et d'intégration passants
This commit is contained in:
2026-03-04 00:27:15 +01:00
commit a4a14e441b
86 changed files with 7059 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<?php
declare(strict_types=1);
namespace MiniShop\LegacyFulfillment\Infrastructure\Gateway;
use MiniShop\LegacyFulfillment\Application\Port\LegacyFulfillmentGateway;
use MiniShop\LegacyFulfillment\Domain\Model\ShipmentRequest;
final class FakeLegacyFulfillmentGateway implements LegacyFulfillmentGateway
{
/** @var list<ShipmentRequest> */
private array $sentRequests = [];
public function sendShipmentRequest(ShipmentRequest $request): void
{
$this->sentRequests[] = $request;
}
/** @return list<ShipmentRequest> */
public function sentRequests(): array
{
return $this->sentRequests;
}
}

View File

@@ -0,0 +1,25 @@
<?php
declare(strict_types=1);
namespace MiniShop\LegacyFulfillment\Infrastructure\Persistence;
use MiniShop\LegacyFulfillment\Application\Port\ShipmentRequestRepository;
use MiniShop\LegacyFulfillment\Domain\Model\LegacyOrderRef;
use MiniShop\LegacyFulfillment\Domain\Model\ShipmentRequest;
final class InMemoryShipmentRequestRepository implements ShipmentRequestRepository
{
/** @var array<string, ShipmentRequest> */
private array $requests = [];
public function save(ShipmentRequest $request): void
{
$this->requests[$request->orderRef->toString()] = $request;
}
public function findByOrderRef(LegacyOrderRef $orderRef): ?ShipmentRequest
{
return $this->requests[$orderRef->toString()] ?? null;
}
}