public function testAssignmentsXml() { $document = new Document('TestCatalog'); foreach (['PROD1' => 'CAT1', 'PROD1' => 'CAT2', 'PROD2' => 'CAT1', 'PROD3' => 'CAT3'] as $product => $category) { // simulate some application logic $primary = 'PROD1' === $product && 'CAT2' === $category; $deleted = 'PROD2' === $product && 'CAT1' === $category; $element = new Assignment($product, $category); // flag as deleted if app logic says so, otherwise handle primary flag... if ($deleted) { $element->setDeleted(); } else { $element->setPrimary($primary); } $document->addObject($element); // simulate some more application logic, put all primary products in CAT42 if ($primary) { $element = new Assignment($product, 'CAT42'); $document->addObject($element); } } $sampleXml = $this->loadFixture('assignments.xml'); $outputXml = $document->getDomDocument(); $this->assertEqualXMLStructure($sampleXml->firstChild, $outputXml->firstChild); }
public function setUp() { $document = new Document('TestCatalog'); foreach (['Product', 'Set', 'Bundle', 'Variation'] as $index => $example) { $element = new Product(strtoupper($example) . '123'); $element->setName($example . ' number 123'); $element->setDescription('The description for an <i>example</i> ' . strtolower($example) . '! • Bullet Point', true); $element->setUpc('50000000000' . $index); $element->setQuantities(); // include, but use defaults $element->setRank(1); $element->setSitemap(); // include, but use defaults $element->setBrand('SampleBrand™'); $element->setFlags(true, false); $element->setDates('2015-01-23 01:23:45', '2025-01-23 01:23:45'); $element->setPageAttributes('Amazing ' . $example, 'Buy our ' . $example . ' today!', $example . ', test, example', 'http://example.com/' . strtolower($example) . '/123'); $element->setCustomAttributes(['type' => 'Examples', 'zzz' => 'Should be exported last within custom-attributes', 'primaryImage' => strtolower($example) . '-123.png', 'multiWow' => ['so', 'such', 'many', 'much', 'very'], 'boolTrue' => true, 'boolFalse' => false]); // elements/attributes specific to bundle/set/product if ('Bundle' === $example) { $element->setProductQuantities(['SKU0000001' => 10, 'SKU0000002' => 20]); $element->setTax(20); } elseif ('Set' === $example) { $element->setProducts(['PRODUCT123', 'PRODUCT456']); } elseif ('Product' === $example) { $element->setSharedAttributes(['AT001', 'AT002']); $element->setVariants(['SKU0000001' => false, 'SKU0000002' => false, 'SKU0000003' => true]); } if ('Variation' !== $example) { $element->setClassification('CAT123', 'TestCatalog'); } $document->addObject($element); } $this->document = $document; }
public function testVariantsXml() { $document = new Document('TestCatalog'); $variants = ['colour' => ['red' => 'Red', 'blue' => 'Blue'], 'height' => ['H1' => 'Grande', 'H2' => 'Tall']]; foreach ($variants as $variant => $values) { $element = new Variant($variant); $element->addTags($values); $document->addObject($element); } $sampleXml = $this->loadFixture('variants.xml'); $outputXml = $document->getDomDocument(); $this->assertEqualXMLStructure($sampleXml->firstChild, $outputXml->firstChild); }
public function testAssignmentsXml() { $document = new Document('TestCatalog'); // PROD1 has a primary assignment, non-primary, and unspecified $element = new Assignment('PROD1', 'CAT1'); $element->setPrimary(false); $document->addObject($element); $element = new Assignment('PROD1', 'CAT2'); $element->setPrimary(true); $document->addObject($element); $element = new Assignment('PROD1', 'CAT42'); $document->addObject($element); // PROD2 has a deleted assignment $element = new Assignment('PROD2', 'CAT1'); $element->setDeleted(); $document->addObject($element); // PROD3 has a primary assignment $element = new Assignment('PROD3', 'CAT3'); $element->setPrimary(false); $document->addObject($element); $sampleXml = $this->loadFixture('assignments.xml'); $outputXml = $document->getDomDocument(); $this->assertEqualXMLStructure($sampleXml->firstChild, $outputXml->firstChild); }