function testProduct() { $decoder = new XmlDecoder(); $product = $decoder->decodeProduct($this->getXml()); $this->assertEquals('2mtqj837tow0', $product->getUid()); $this->assertEquals('Hladká vyztužená podprsenka CHANGE Tactel černá', $product->getName()); $this->assertEquals(new \DateTime('2016-03-07 15:30:05'), $product->getCreated()); $this->assertEquals(new \DateTime('2016-03-28 13:59:06'), $product->getUpdated()); $this->assertFalse($product->isDeleted()); $this->assertEquals(Availability::IN_STOCK, $product->getAvailability()->getCode()); $this->assertEquals(0, $product->getAvailability()->getHours()); $this->assertEquals(6, $product->getAvailability()->getQuantity()); $this->assertEquals('ihned k odeslání', $product->getAvailability()->getText()); $this->assertEquals('v2ae564zkhcs', $product->getImages()[0]->getUid()); $this->assertEquals('https://cdn.shopapi.cz/img/orig/9/8/69/986943cc69c7292472e6f9146934bfa8.jpg', $product->getImages()[0]->getUrl()); $this->assertEquals(420, $product->getPrice()); $this->assertEquals(635, $product->getPriceRetail()); $this->assertEquals(21, $product->getVatRate()); $this->assertEquals('88000011212', $product->getEan()); $this->assertEquals('CB19604108-BLACK', $product->getCode()); $this->assertEquals('89suej9s5ukg', $product->getBrand()->getUid()); $this->assertEquals('CHANGE Lingerie', $product->getBrand()->getName()); $this->assertEquals('description', $product->getDescription()); $this->assertEquals('fulldescription', $product->getFullDescription()); $this->assertEquals(24, $product->getWarranty()); $this->assertEquals('https://www.perfektnipradlo.cz/Podprsenky/vyztuzene/Hladka-vyztuzena-podprsenka-CHANGE-Tactel-cerna', $product->getUrl()); $this->assertEquals('3vbdae456tc0', $product->getVariants()[0]->getUid()); $this->assertEquals('28q0qb1pvl5w', $product->getVariants()[1]->getUid()); $this->assertEquals('b9i9ssr4lxk4', $product->getAttributes()[0]->getAttribute()->getUid()); $this->assertEquals('Barva', $product->getAttributes()[0]->getAttribute()->getName()); $this->assertEquals(['bílá', 'modrá', 'ocelová'], $product->getAttributes()[0]->getValues()); $this->assertEquals('b9i9ssr4lxk4', $product->getAttribute('b9i9ssr4lxk4')->getAttribute()->getUid()); $this->assertNull($product->getAttribute('xxx')); $this->assertEquals('0f26c54d0a9cd4dbad6c096cfd587847', $product->getChecksum()); }
/** * @param $xmlFilePath * @return \Generator|Product[] */ public function readFromPath($xmlFilePath) { $xml = new \XMLReader(); $xml->open($xmlFilePath); while ($xml->read() && $xml->name !== 'product') { } $decoder = new XmlDecoder(); while ($xmlData = $xml->readOuterXml()) { (yield $decoder->decodeProduct(new \SimpleXMLElement($xmlData))); $xml->next('product'); } $xml->close(); }