/** * Create DOMDocumentFragment with the <Item> node. * @param EbayEnterprise_Catalog_Model_Pim_Product $pimProduct * @param string $childNode * @return DOMDocumentFragment */ protected function _buildItemNode(EbayEnterprise_Catalog_Model_Pim_Product $pimProduct, $childNode) { $fragment = $this->_doc->createDocumentFragment(); $attributes = $pimProduct->getPimAttributes(); if (count($attributes)) { $itemNode = $fragment->appendChild($this->_doc->createElement($childNode)); foreach (array_unique($attributes) as $pimAttribute) { $this->_appendAttributeValue($itemNode, $pimAttribute); } } return $fragment; }
/** * Create the DOMDocument representing the feed. Should initialize (add root * node and message header) the DOMDocument, build out and append fragments * for each item to be included, and validate the resulting DOM. */ public function testCreateDomFromFeedData() { $itemNode = 'Item'; $isValidate = 'true'; $this->_doc->loadXML('<root></root>'); $itemFragment = $this->_doc->createDocumentFragment(); $itemFragment->appendChild($this->_doc->createElement('Item')); $pimProduct = $this->getModelMockBuilder('ebayenterprise_catalog/pim_product')->disableOriginalConstructor()->getMock(); $this->replaceByMock('helper', 'eb2ccore', $this->_coreHelper); $this->_coreHelper->expects($this->once())->method('parseBool')->with($this->identicalTo($isValidate))->will($this->returnValue(true)); $this->_pimProductCollection->expects($this->once())->method('getItems')->will($this->returnValue(array($pimProduct))); $pim = $this->getModelMockBuilder('ebayenterprise_catalog/pim')->disableOriginalConstructor()->setMethods(array('_buildItemNode', '_startDocument', '_validateDocument', '_getFeedConfig'))->getMock(); $pim->expects($this->once())->method('_startDocument')->will($this->returnSelf()); $pim->expects($this->once())->method('_buildItemNode')->with($this->identicalTo($pimProduct), $this->identicalTo($itemNode))->will($this->returnValue($itemFragment)); $pim->expects($this->once())->method('_validateDocument')->will($this->returnSelf()); $pim->expects($this->once())->method('_getFeedConfig')->will($this->returnValue($this->_feedTypeConfig)); EcomDev_Utils_Reflection::setRestrictedPropertyValue($pim, '_doc', $this->_doc); $this->assertSame($this->_doc, EcomDev_Utils_Reflection::invokeRestrictedMethod($pim, '_createDomFromFeedData', array($this->_pimProductCollection, $this->_feedTypeConfig))); $this->assertSame('<root><Item></Item></root>', $this->_doc->C14N()); }