/**
  * @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);
 }
Exemple #2
0
 /**
  * @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);
 }