/** * Test validation in the setters */ public function testFaultyProperties() { $box = new Box(); try { $box->setStatus(str_repeat('a', 10)); } catch (\Exception $e) { $this->assertInstanceOf('TijsVerkoyen\\Bpost\\Exception', $e); $this->assertEquals('Invalid value, possible values are: ' . implode(', ', Box::getPossibleStatusValues()) . '.', $e->getMessage()); } }
/** * @param \SimpleXMLElement $xml * @return Box */ public static function createFromXML(\SimpleXMLElement $xml) { $box = new Box(); if (isset($xml->sender)) { $box->setSender(Sender::createFromXML($xml->sender->children('http://schema.post.be/shm/deepintegration/v3/common'))); } if (isset($xml->nationalBox)) { $nationalBoxData = $xml->nationalBox->children('http://schema.post.be/shm/deepintegration/v3/national'); // build classname based on the tag name $className = '\\TijsVerkoyen\\Bpost\\Bpost\\Order\\Box\\' . ucfirst($nationalBoxData->getName()); if ($nationalBoxData->getName() == 'at24-7') { $className = '\\TijsVerkoyen\\Bpost\\Bpost\\Order\\Box\\At247'; } if (!method_exists($className, 'createFromXML')) { throw new Exception('Not Implemented'); } $nationalBox = call_user_func(array($className, 'createFromXML'), $nationalBoxData); $box->setNationalBox($nationalBox); } if (isset($xml->internationalBox)) { $internationalBoxData = $xml->internationalBox->children('http://schema.post.be/shm/deepintegration/v3/international'); // build classname based on the tag name $className = '\\TijsVerkoyen\\Bpost\\Bpost\\Order\\Box\\' . ucfirst($internationalBoxData->getName()); if (!method_exists($className, 'createFromXML')) { var_dump($className); throw new Exception('Not Implemented'); } $internationalBox = call_user_func(array($className, 'createFromXML'), $internationalBoxData); $box->setInternationalBox($internationalBox); } if (isset($xml->remark) && $xml->remark != '') { $box->setRemark((string) $xml->remark); } if (isset($xml->status) && $xml->status != '') { $box->setStatus((string) $xml->status); } return $box; }