Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
ListTripsController
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 list
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5namespace App\Trip\Infrastructure\Controllers;
6
7use App\Identity\Infrastructure\Http\ResolvesAuthenticatedUser;
8use App\Trip\Application\Query\ListTripsHandler;
9use App\Trip\Application\Query\ListTripsQuery;
10use App\Trip\Application\Query\TripView;
11use OpenApi\Attributes as OA;
12use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
13use Symfony\Component\HttpFoundation\JsonResponse;
14use Symfony\Component\Routing\Attribute\Route;
15
16#[OA\Tag(name: 'Trips')]
17class ListTripsController extends AbstractController
18{
19    use ResolvesAuthenticatedUser;
20
21    public function __construct(
22        private readonly ListTripsHandler $handler,
23    ) {
24    }
25
26    #[Route('/trips', name: 'trips_list', methods: ['GET'])]
27    public function list(): JsonResponse
28    {
29        $securityUser = $this->securityUser();
30
31        $views = $this->handler->handle(new ListTripsQuery($securityUser->userId()));
32
33        return new JsonResponse(array_map(static fn (TripView $view) => $view->toArray(), $views), 200);
34    }
35}