public function testBuildElementWithVariations() { $parent = new Product(); $parent->setSku('sku_2'); $image = new Image(); $image->setSource('http://www.brand.com/product/image.jpg'); $product = new Variation(); $product->setProduct($parent); $product->setImages(new ArrayCollection(array($image))); $collection = new ArrayCollection(); $collection->add($product); // Some properties explicitly declared on CommonProduct $product->setSku('sku_1'); $product->setStatus('Online'); $product->setTitle('Product'); $product->getMeta()->offsetSet('brand', 'Brand'); $product->setUpc('000000000000'); $product->setLength(1); $product->setWidth(1); $product->setHeight(1); $product->setDimensionUnit('MM'); $product->setWeight(1); $product->setWeightUnit('GR'); $product->setCurrency('USD'); $product->setMsrp(5000); $product->setPrice(2500); $product->setQuantity(5); // If a property is not explicitly declared, it goes in Meta $product->getMeta()->offsetSet('category', '100166'); $product->getMeta()->offsetSet('color', 'blue'); $product->getMeta()->offsetSet('size', 'small'); $product->getMeta()->offsetSet('link', 'http://www.brand.com/product'); $product->getMeta()->offsetSet('startDate', '11/12/2014'); $product->getMeta()->offsetSet('endDate', '12/12/2014'); $product->getMeta()->offsetSet('shipper', 'Supplier'); $product->getMeta()->offsetSet('basicCost', 5000); $product->getMeta()->offsetSet('dropshipFee', 199); $element = $this->requestHandler->buildElement($collection); $xml = $element->asXML(); $expectedXml = file_get_contents(dirname(__DIR__) . '/Resources/SingleFeed-2013-10-01-053333_with_variation.xml'); $this->assertXmlStringEqualsXmlString($expectedXml, $xml); }
public function testIsVariationUnique() { // Variations Empty $variation1 = $this->buildMock('AntiMattr\\Common\\Product\\Variation'); $this->assertTrue($this->product->isVariationUnique($variation1)); $variation2 = new Variation(); $variation2Option1 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation2Option2 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation2Option3 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation2->addOption($variation2Option1); $variation2->addOption($variation2Option2); $variation2->addOption($variation2Option3); $variation3 = new Variation(); $variation3Option1 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation3Option2 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation3Option3 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation3->addOption($variation3Option1); $variation3->addOption($variation3Option2); $variation3->addOption($variation3Option3); $variation4 = new Variation(); $variation4Option1 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation4Option2 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation4Option3 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation4->addOption($variation4Option1); $variation4->addOption($variation4Option2); $variation4->addOption($variation4Option3); $variation3Duplicate = new Variation(); $variation3DuplicateOption1 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation3DuplicateOption2 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation3DuplicateOption3 = $this->buildMock('AntiMattr\\Common\\Product\\Option'); $variation3Duplicate->addOption($variation3DuplicateOption1); $variation3Duplicate->addOption($variation3DuplicateOption2); $variation3Duplicate->addOption($variation3DuplicateOption3); $variation2Option1->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('color_red')); $variation2Option2->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('size_small')); $variation2Option3->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('fabric_cotton')); $variation3Option1->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('color_yellow')); $variation3Option2->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('size_medium')); $variation3Option3->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('fabric_cotton')); $variation4Option1->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('color_red')); $variation4Option2->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('size_medium')); $variation4Option3->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('fabric_nylon')); $variation3DuplicateOption1->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('color_yellow')); $variation3DuplicateOption2->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('size_medium')); $variation3DuplicateOption3->expects($this->any())->method('getUniqueIdentifier')->will($this->returnValue('fabric_cotton')); $this->product->addVariation($variation2); $this->product->addVariation($variation3); // Confirm pre-existing references are affirmative $this->assertTrue($this->product->isVariationUnique($variation2)); $this->assertTrue($this->product->isVariationUnique($variation3)); // Confirm untracked and unique references are affirmative $this->assertTrue($this->product->isVariationUnique($variation4)); $this->product->addVariation($variation4); $this->assertFalse($this->product->isVariationUnique($variation3Duplicate)); }