public function __invoke(ServerRequestInterface $request, ResponseInterface $response)
 {
     $data = $request->getParsedBody();
     Assertion::keyExists($data, 'origin');
     Assertion::keyExists($data, 'destination');
     $trackingId = $this->bookingService->bookNewCargo($data['origin'], $data['destination']);
     return new JsonResponse(['trackingId' => $trackingId]);
 }
 /**
  * @test
  */
 public function it_lists_all_stored_cargos()
 {
     $trackingIdOne = $this->bookingService->bookNewCargo('USNYC', 'DEHAM');
     $trackingIdTwo = $this->bookingService->bookNewCargo('NLRTM', 'USNYC');
     $cargoRoutingDtos = $this->bookingService->listAllCargos();
     $this->assertEquals(2, count($cargoRoutingDtos));
     $generatedTrackingIds = [$trackingIdOne, $trackingIdTwo];
     foreach ($cargoRoutingDtos as $cargoRoutingDto) {
         $this->assertTrue(in_array($cargoRoutingDto->getTrackingId(), $generatedTrackingIds));
     }
 }