/** * Test modification. */ public function testModify() { // Non-existant product in db. $expectedProduct1 = new ProductDocument(); $expectedProduct1->setId('6b698c33118caee4ca0882c33f513d2f'); $expectedProduct1->setActive(true); $expectedProduct1->setSku('85-8573-846-1-4-3'); $expectedProduct1->setTitle('PRODUCT NO. 1'); $expectedProduct1->setDescription('Product number one for testing'); $expectedProduct1->setPrice(25.5); $expectedProduct1->setOldPrice(36.7); $expectedProduct1->setManufacturer(null); $expectedProduct1->setLongDescription(null); $expectedProduct1->setVendor(null); $expectedProduct1->setStock(5); $expectedProduct1->setAttributes([]); $url = new UrlNested(); $url->setUrl('Test/Product/1'); $expectedProduct1->setUrls(new \ArrayIterator([$url])); $expectedProduct1->setExpiredUrls([]); $expectedProduct2 = new VariantObject(); $expectedProduct2->setId('6b6a6aedca3e438e98d51f0a5d586c0b'); $expectedProduct2->setActive(false); $expectedProduct2->setSku('0702-85-853-9-2'); $expectedProduct2->setTitle('PRODUCT NO. 2'); $expectedProduct2->setDescription('Product number two for testing'); $expectedProduct2->setPrice(46.6); $expectedProduct2->setOldPrice(35.7); $expectedProduct2->setLongDescription('Product number two description for testing from extension'); $expectedProduct2->setStock(2); $expectedProduct2->setAttributes([]); $expectedProduct1->setVariants([$expectedProduct2]); $expectedEntities = [$expectedProduct1]; $productItems = $this->getTestElements(['6b698c33118caee4ca0882c33f513d2f', '6b6a6aedca3e438e98d51f0a5d586c0b'], 'ONGROXIDConnectorBundleTest:Article'); $this->assertCount(2, $productItems); $seoFinder = new SeoFinder(); $seoFinder->setEntityManager($this->getEntityManager()); $seoFinder->setShopId(0); $seoFinder->setRepository('ONGROXIDConnectorBundleTest:Seo'); $modifier = new ProductModifier(new AttributesToDocumentsService()); $modifier->setSeoFinderService($seoFinder); /** @var ItemPipelineEvent|\PHPUnit_Framework_MockObject_MockObject $event */ $event = $this->getMock('ONGR\\ConnectionsBundle\\Pipeline\\Event\\ItemPipelineEvent', [], [], '', false); foreach ($expectedEntities as $key => $expectedProduct) { $actualProduct = new ProductDocument(); $modifier->modify(new ImportItem($productItems[$key], $actualProduct), $event); $this->assertEquals($expectedProduct, $actualProduct); } }
/** * Test product modifier listener. */ public function testProductModifierListener() { $articleExtension = $this->getMock('\\ONGR\\OXIDConnectorBundle\\Tests\\Functional\\Entity\\ArticleExtension'); $articleExtension->expects($this->once())->method('getLongDesc')->will($this->returnValue('testLongDescription')); $vendor = $this->getMock('\\ONGR\\OXIDConnectorBundle\\Tests\\Functional\\Entity\\Vendor'); $vendor->expects($this->once())->method('getTitle')->will($this->returnValue('testVendorTitle')); $manufacturer = $this->getMock('\\ONGR\\OXIDConnectorBundle\\Tests\\Functional\\Entity\\Manufacturer'); $manufacturer->expects($this->once())->method('getTitle')->will($this->returnValue('testManufacturerTitle')); $objectToCategories = []; $objectToCategories[0] = new ObjectToCategory(); $category1 = $this->getMock('\\ONGR\\OXIDConnectorBundle\\Tests\\Functional\\Entity\\Category'); $category1->expects($this->once())->method('isActive')->will($this->returnValue(true)); $category1->expects($this->once())->method('getId')->will($this->returnValue(123)); $objectToCategories[0]->setCategory($category1); // The following category should be skipped because of isActive=false. $objectToCategories[1] = new ObjectToCategory(); $category2 = $this->getMock('\\ONGR\\OXIDConnectorBundle\\Tests\\Functional\\Entity\\Category'); $category2->expects($this->once())->method('isActive')->will($this->returnValue(false)); $category2->expects($this->never())->method('getId'); $objectToCategories[1]->setCategory($category2); $this->mockExpectsMethods($this->prodEntity, [['getId', 1, 123], ['isActive', 1, true], ['getArtNum', 1, 'testArtNum'], ['getTitle', 1, 'testTitle'], ['getShortDesc', 1, 'testShortDescription'], ['getPrice', 1, 20.2], ['getTPrice', 1, 25.0], ['getParent', 1, null], ['getStock', 1, 50], ['getAttributes', 1, [1, 2, 3]], ['getExtension', 1, $articleExtension], ['getVendor', 1, $vendor], ['getManufacturer', 1, $manufacturer], ['getCategories', 1, $objectToCategories]]); $this->mockExpectsMethods($this->prodDocument, [['setId', 1, null, 123], ['setActive', 1, null, true], ['setSku', 1, null, 'testArtNum'], ['setTitle', 1, null, 'testTitle'], ['setDescription', 1, null, 'testShortDescription'], ['setPrice', 1, null, 20.2], ['setOldPrice', 1, null, 25.0], ['setStock', 1, null, 50], ['setAttributes', 1, null, [11, 22, 33]], ['setLongDescription', 1, null, 'testLongDescription'], ['setVendor', 1, null, 'testVendorTitle'], ['setManufacturer', 1, null, 'testManufacturerTitle'], ['setCategories', 1, null, [123]]]); $this->attrToDocService->expects($this->once())->method('transform')->with([1, 2, 3])->will($this->returnValue([11, 22, 33])); /** @var ImportItem|MockObject $importItem */ $importItem = $this->getMockBuilder('ONGR\\ConnectionsBundle\\Pipeline\\Item\\ImportItem')->disableOriginalConstructor()->getMock(); $importItem->expects($this->once())->method('getEntity')->will($this->returnValue($this->prodEntity)); $importItem->expects($this->once())->method('getDocument')->will($this->returnValue($this->prodDocument)); /** @var ItemPipelineEvent|MockObject $itemPipelineEvent */ $itemPipelineEvent = $this->getMockBuilder('\\ONGR\\ConnectionsBundle\\Pipeline\\Event\\ItemPipelineEvent')->disableOriginalConstructor()->getMock(); $itemPipelineEvent->expects($this->once())->method('getItem')->will($this->returnValue($importItem)); $this->prodModifierListener->onModify($itemPipelineEvent); }
/** * Tests skipping. */ public function testModifySkip() { /** @var Article $entityParent */ $entityParent = $this->getMockForAbstractClass('ONGR\\OXIDConnectorBundle\\Entity\\Article'); $entityParent->setId('id'); /** @var Article $entity */ $entity = $this->getMockForAbstractClass('ONGR\\OXIDConnectorBundle\\Entity\\Article'); $entity->setParent($entityParent); $document = new ProductDocument(); /** @var ItemPipelineEvent|\PHPUnit_Framework_MockObject_MockObject $event */ $event = $this->getMock('ONGR\\ConnectionsBundle\\Pipeline\\Event\\ItemPipelineEvent', [], [], '', false); $event->expects($this->once())->method('setItemSkip'); $this->modifier->modify(new ImportItem($entity, $document), $event); }