Ejemplo n.º 1
0
 /**
  * Tests Box->toXML
  */
 public function testInternationalToXML()
 {
     $data = array('sender' => array('name' => 'Tijs Verkoyen', 'company' => 'Sumo Coders', 'address' => array('streetName' => 'Afrikalaan', 'number' => '289', 'box' => '3', 'postalCode' => '9000', 'locality' => 'Gent', 'countryCode' => 'BE'), 'emailAddress' => '*****@*****.**', 'phoneNumber' => '+32 9 395 02 51'), 'internationalBox' => array('international' => array('product' => 'bpack World Express Pro', 'receiver' => array('name' => 'Tijs Verkoyen', 'company' => 'Sumo Coders', 'address' => array('streetName' => 'Kerkstraat', 'number' => '108', 'postalCode' => '9050', 'locality' => 'Gentbrugge', 'countryCode' => 'BE'), 'emailAddress' => '*****@*****.**', 'phoneNumber' => '+32 9 395 02 51'))), 'remark' => 'remark');
     $expectedDocument = self::createDomDocument();
     $box = $expectedDocument->createElement('box');
     $expectedDocument->appendChild($box);
     $sender = $expectedDocument->createElement('sender');
     foreach ($data['sender'] as $key => $value) {
         $key = 'common:' . $key;
         if ($key == 'common:address') {
             $address = $expectedDocument->createElement($key);
             foreach ($value as $key2 => $value2) {
                 $key2 = 'common:' . $key2;
                 $address->appendChild($expectedDocument->createElement($key2, $value2));
             }
             $sender->appendChild($address);
         } else {
             $sender->appendChild($expectedDocument->createElement($key, $value));
         }
     }
     $nationalBox = $expectedDocument->createElement('internationalBox');
     $atHome = $expectedDocument->createElement('international:international');
     $nationalBox->appendChild($atHome);
     $atHome->appendChild($expectedDocument->createElement('international:product', $data['internationalBox']['international']['product']));
     $receiver = $expectedDocument->createElement('international:receiver');
     $atHome->appendChild($receiver);
     foreach ($data['internationalBox']['international']['receiver'] as $key => $value) {
         $key = 'common:' . $key;
         if ($key == 'common:address') {
             $address = $expectedDocument->createElement($key);
             foreach ($value as $key2 => $value2) {
                 $key2 = 'common:' . $key2;
                 $address->appendChild($expectedDocument->createElement($key2, $value2));
             }
             $receiver->appendChild($address);
         } else {
             $receiver->appendChild($expectedDocument->createElement($key, $value));
         }
     }
     $box->appendChild($sender);
     $box->appendChild($nationalBox);
     $box->appendChild($expectedDocument->createElement('remark', $data['remark']));
     $actualDocument = self::createDomDocument();
     $address = new Address($data['sender']['address']['streetName'], $data['sender']['address']['number'], $data['sender']['address']['box'], $data['sender']['address']['postalCode'], $data['sender']['address']['locality'], $data['sender']['address']['countryCode']);
     $sender = new Sender();
     $sender->setName($data['sender']['name']);
     $sender->setCompany($data['sender']['company']);
     $sender->setAddress($address);
     $sender->setEmailAddress($data['sender']['emailAddress']);
     $sender->setPhoneNumber($data['sender']['phoneNumber']);
     $address = new Address($data['internationalBox']['international']['receiver']['address']['streetName'], $data['internationalBox']['international']['receiver']['address']['number'], null, $data['internationalBox']['international']['receiver']['address']['postalCode'], $data['internationalBox']['international']['receiver']['address']['locality'], $data['internationalBox']['international']['receiver']['address']['countryCode']);
     $receiver = new Receiver();
     $receiver->setAddress($address);
     $receiver->setName($data['internationalBox']['international']['receiver']['name']);
     $receiver->setCompany($data['internationalBox']['international']['receiver']['company']);
     $receiver->setPhoneNumber($data['internationalBox']['international']['receiver']['phoneNumber']);
     $receiver->setEmailAddress($data['internationalBox']['international']['receiver']['emailAddress']);
     $international = new International();
     $international->setProduct($data['internationalBox']['international']['product']);
     $international->setReceiver($receiver);
     $box = new Box();
     $box->setSender($sender);
     $box->setInternationalBox($international);
     $box->setRemark($data['remark']);
     $actualDocument->appendChild($box->toXML($actualDocument, null));
     $this->assertEquals($expectedDocument, $actualDocument);
 }
Ejemplo n.º 2
0
 /**
  * @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;
 }