/** * @expectedException \Magento\Framework\Exception\CouldNotSaveException * @expectedExceptionMessage Invalid data provided for linked products */ public function testSaveWithException() { $entityMock = $this->getMock('\\Magento\\Catalog\\Model\\ProductLink\\Link', [], [], '', false); $productMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', [], [], '', false); $linkedProductMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', [], [], '', false); $this->productRepositoryMock->expects($this->exactly(2))->method('get')->will($this->returnValueMap([['product', false, null, false, $productMock], ['linkedProduct', false, null, false, $linkedProductMock]])); $entityMock->expects($this->once())->method('getLinkedProductSku')->willReturn('linkedProduct'); $entityMock->expects($this->once())->method('getSku')->willReturn('product'); $entityMock->expects($this->exactly(2))->method('getLinkType')->willReturn('linkType'); $entityMock->expects($this->once())->method('__toArray')->willReturn([]); $linkedProductMock->expects($this->exactly(2))->method('getId')->willReturn(42); $this->entityCollectionProviderMock->expects($this->once())->method('getCollection')->willReturn([]); $this->linkInitializerMock->expects($this->once())->method('initializeLinks')->with($productMock, ['linkType' => [42 => ['product_id' => 42]]]); $productMock->expects($this->once())->method('save')->willThrowException(new \Exception()); $this->model->save($entityMock); }
/** * @expectedException \Magento\Framework\Exception\CouldNotSaveException * @expectedExceptionMessage Invalid data provided for linked products */ public function testSaveWithException() { $entityMock = $this->getMock('\\Magento\\Catalog\\Model\\ProductLink\\Link', [], [], '', false); $productMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', [], [], '', false); $linkedProductMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', [], [], '', false); $parentId = 42; $linkedProductId = 37; $typeId = 4; $this->productRepositoryMock->expects($this->exactly(2))->method('get')->will($this->returnValueMap([['product', false, null, false, $productMock], ['linkedProduct', false, null, false, $linkedProductMock]])); $entityMock->expects($this->once())->method('getLinkedProductSku')->willReturn('linkedProduct'); $entityMock->expects($this->once())->method('getSku')->willReturn('product'); $entityMock->expects($this->exactly(1))->method('getLinkType')->willReturn('linkType'); $this->linkTypeProvider->expects($this->once())->method('getLinkTypes')->willReturn(['linkType' => $typeId]); $this->metadataMock->expects($this->once())->method('getLinkField')->willReturn('linkField'); $this->hydratorMock->expects($this->once())->method('extract')->with($productMock)->willReturn(['linkField' => $parentId]); $this->linkResourceMock->expects($this->once())->method('saveProductLinks')->with($parentId, [$linkedProductId => ['product_id' => $linkedProductId]], $typeId)->willThrowException(new \Exception()); $entityMock->expects($this->once())->method('__toArray')->willReturn([]); $linkedProductMock->expects($this->exactly(2))->method('getId')->willReturn($linkedProductId); $this->model->save($entityMock); }