/** * @SuppressWarnings(PHPMD.UnusedLocalVariable) */ public function testUpdate() { $productId = 1; $storeId = 2; $optionId = 5; $existingOptionId = 5; $existingOptionTitle = 'option_title'; $storeMock = $this->getMock('\\Magento\\Store\\Model\\Store', ['getId'], [], '', false); $storeMock->expects($this->once())->method('getId')->willReturn($storeId); $this->storeManagerMock->expects($this->once())->method('getStore')->willReturn($storeMock); $productMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', [], [], '', false); $productMock->expects($this->once())->method('getId')->willReturn($productId); $optionMock = $this->getMock('\\Magento\\Bundle\\Model\\Option', ['setStoreId', 'setParentId', 'getProductLinks', 'getOptionId', 'setOptionId', 'setDefaultTitle', 'getTitle'], [], '', false); $optionMock->expects($this->once())->method('setStoreId')->with($storeId)->willReturnSelf(); $optionMock->expects($this->once())->method('setParentId')->with($productId)->willReturnSelf(); $optionMock->expects($this->any())->method('getOptionId')->willReturn($optionId); $optCollectionMock = $this->getMock('\\Magento\\Bundle\\Model\\Resource\\Option\\Collection', [], [], '', false); $this->typeMock->expects($this->once())->method('getOptionsCollection')->with($productMock)->willReturn($optCollectionMock); $existingOptionMock = $this->getMock('\\Magento\\Bundle\\Model\\Option', ['getOptionId', 'getTitle', 'getProductLinks'], [], '', false); $optCollectionMock->expects($this->once())->method('setIdFilter')->with($optionId)->willReturnSelf(); $optCollectionMock->expects($this->once())->method('getFirstItem')->willReturn($existingOptionMock); $existingOptionMock->expects($this->any())->method('getOptionId')->willReturn($existingOptionId); $existingOptionMock->expects($this->once())->method('getProductLinks')->willReturn(null); $linkedProductMock = $this->getMock('\\Magento\\Bundle\\Api\\Data\\LinkInterface'); $optionMock->expects($this->exactly(2))->method('getProductLinks')->willReturn([$linkedProductMock]); $this->optionResourceMock->expects($this->once())->method('save')->with($optionMock)->willReturnSelf(); $this->linkManagementMock->expects($this->once())->method('addChild')->with($productMock, $optionId, $linkedProductMock)->willReturn(1); $this->assertEquals($optionId, $this->model->save($productMock, $optionMock)); }
/** * @expectedException \Magento\Framework\Exception\CouldNotSaveException * @expectedExceptionMessage Could not save option */ public function testSaveCanNotSave() { $productId = 1; $productSku = 'bundle_sku'; $storeId = 2; $optionId = 5; $storeMock = $this->getMock('\Magento\Store\Model\Store', ['getId'], [], '', false); $storeMock->expects($this->once())->method('getId')->willReturn($storeId); $this->storeManagerMock->expects($this->once())->method('getStore')->willReturn($storeMock); $productMock = $this->getMock('\Magento\Catalog\Model\Product', [], [], '', false); $productMock->expects($this->once())->method('getId')->willReturn($productId); $productMock->expects($this->any())->method('getSku')->willReturn($productSku); $optionMock = $this->getMock( '\Magento\Bundle\Model\Option', [ 'setStoreId', 'setParentId', 'getProductLinks', 'getOptionId', 'setOptionId', 'setDefaultTitle', 'getTitle' ], [], '', false ); $optionMock->expects($this->once())->method('setStoreId')->with($storeId)->willReturnSelf(); $optionMock->expects($this->once())->method('setParentId')->with($productId)->willReturnSelf(); $optionMock->method('getOptionId')->will($this->onConsecutiveCalls(null, $optionId, $optionId, $optionId)); $productLink1 = $this->getMock('\Magento\Bundle\Api\Data\LinkInterface'); $productLink2 = $this->getMock('\Magento\Bundle\Api\Data\LinkInterface'); $optionMock->expects($this->exactly(2)) ->method('getProductLinks') ->willReturn([$productLink1, $productLink2]); $this->optionResourceMock->expects($this->once())->method('save')->with($optionMock) ->willThrowException($this->getMock('\Exception')); $this->model->save($productMock, $optionMock); }
/** * @expectedException \Magento\Framework\Exception\CouldNotSaveException * @expectedExceptionMessage Could not save option */ public function testSaveCanNotSave() { $productId = 1; $productSku = 'bundle_sku'; $storeId = 2; $optionId = 5; $productMock = $this->getMock('\\Magento\\Catalog\\Model\\Product', [], [], '', false); $productMock->expects($this->once())->method('getData')->willReturn($productId); $productMock->expects($this->once())->method('getStoreId')->willReturn($storeId); $productMock->expects($this->any())->method('getSku')->willReturn($productSku); $optionMock = $this->getMock('\\Magento\\Bundle\\Model\\Option', ['setStoreId', 'setParentId', 'getProductLinks', 'getOptionId', 'setOptionId', 'setDefaultTitle', 'getTitle', 'getResource'], [], '', false); $metadataMock = $this->getMock('Magento\\Framework\\EntityManager\\EntityMetadata', [], [], '', false); $metadataMock->expects($this->once())->method('getLinkField')->willReturn('product_option'); $optionMock->expects($this->once())->method('setParentId')->with($productId)->willReturnSelf(); $this->metadataPoolMock->expects($this->once())->method('getMetadata')->with(\Magento\Catalog\Api\Data\ProductInterface::class)->willReturn($metadataMock); $optionMock->method('getOptionId')->will($this->onConsecutiveCalls(null, null, $optionId, $optionId, $optionId)); $productLink1 = $this->getMock('\\Magento\\Bundle\\Api\\Data\\LinkInterface'); $productLink2 = $this->getMock('\\Magento\\Bundle\\Api\\Data\\LinkInterface'); $optionMock->expects($this->exactly(2))->method('getProductLinks')->willReturn([$productLink1, $productLink2]); $this->optionResourceMock->expects($this->once())->method('save')->with($optionMock)->willThrowException($this->getMock('\\Exception')); $this->model->save($productMock, $optionMock); }