/** * @param array $schedule * @param $busLineName * @return Schedule * @throws \InvalidArgumentException */ public static function createSchedule(array $schedule, $busLineName) { self::verifyRequiredFields($schedule); if (!is_int($schedule["_id"])) { throw new \InvalidArgumentException("The id must be a number"); } $departureDateTime = \DateTime::createFromFormat('Ymd H:i', $schedule["_departure_date"] . " " . $schedule["_departure_time"]); if (!$departureDateTime) { $message = "The departure date or time is invalid: "; $message .= $schedule["_departure_date"] . " " . $schedule["_departure_time"]; throw new \InvalidArgumentException($message); } $arrivalDateTime = \DateTime::createFromFormat('Ymd H:i', $schedule["_arrival_date"] . " " . $schedule["_arrival_time"]); if (!$arrivalDateTime) { $message = "The arrival date or time is invalid: "; $message .= $schedule["_arrival_date"] . " " . $schedule["_arrival_time"]; throw new \InvalidArgumentException($message); } if (empty($schedule["_service"])) { throw new \InvalidArgumentException("The service is required"); } $newSchedule = new Schedule(); $newSchedule->setId($schedule["_id"]); $newSchedule->setDepartureDateTime($departureDateTime); $newSchedule->setArrivalDateTime($arrivalDateTime); $newSchedule->setService($schedule["_service"]); $newSchedule->setBusLine($busLineName); $categories = []; foreach ($schedule["_category"] as $category) { $categories[] = CategoryFactory::create($category); } $newSchedule->setCategories($categories); return $newSchedule; }
/** * @expectedException Exception */ public function test_category_not_found_should_raise_an_exception() { $schedule = new Schedule(); $schedule->setCategories([]); $schedule->getCategoryByType("ADULT"); }