Esempio n. 1
0
 /**
  * @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));
 }
Esempio n. 2
0
    /**
     * @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);
 }