/** * @param ResourceEvent $e * @return CargoRoutingDto * @throws \PhlyRestfully\Exception\CreationException */ public function onCreate(ResourceEvent $e) { $data = $e->getParam('data'); $this->cargoFrom->setData((array) $data); if (!$this->cargoFrom->isValid()) { $creationException = new CreationException("Provided Cargo data is invalid."); $creationException->setAdditionalDetails(array('errors' => $this->cargoFrom->getMessages())); throw $creationException; } $trackingId = $this->bookingService->bookNewCargo($this->cargoFrom->get('origin')->getValue(), $this->cargoFrom->get('final_destination')->getValue()); $cargoRouting = new CargoRoutingDto(); $cargoRouting->setTrackingId($trackingId); $cargoRouting->setOrigin($this->cargoFrom->get('origin')->getValue()); $cargoRouting->setFinalDestination($this->cargoFrom->get('final_destination')->getValue()); return $cargoRouting; }
/** * @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)); } }