Example #1
0
 /**
  * @return void
  */
 public function testBuildWithoutOptions()
 {
     $product = $this->getMockBuilder(Product::class)->disableOriginalConstructor()->getMock();
     $extensionAttributesProduct = $this->getMockBuilder(ProductExtensionInterface::class)->setMethods(['getBundleProductOptions'])->disableOriginalConstructor()->getMockForAbstractClass();
     $product->expects($this->once())->method('getTypeId')->willReturn(Type::TYPE_BUNDLE);
     $product->expects($this->once())->method('getExtensionAttributes')->willReturn($extensionAttributesProduct);
     $extensionAttributesProduct->expects($this->once())->method('getBundleProductOptions')->willReturn(null);
     $duplicate = $this->getMockBuilder(Product::class)->disableOriginalConstructor()->getMock();
     $extensionAttributesDuplicate = $this->getMockBuilder(ProductExtensionInterface::class)->setMethods(['setBundleProductOptions'])->disableOriginalConstructor()->getMockForAbstractClass();
     $duplicate->expects($this->once())->method('getExtensionAttributes')->willReturn($extensionAttributesDuplicate);
     $extensionAttributesDuplicate->expects($this->once())->method('setBundleProductOptions')->with([]);
     $this->model->build($product, $duplicate);
 }
 /**
  * @return void
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testBuildPositive()
 {
     //prepare mocks and data samples
     $instance = $this->getMock('Magento\\Bundle\\Model\\Product\\Type', ['setStoreFilter', 'getOptionsCollection', 'getSelectionsCollection', 'getOptionsIds'], [], '', false);
     $option = $this->getMock('Magento\\Bundle\\Model\\Option', ['getSelections', '__wakeup', 'getData'], [], '', false);
     $options = [$option];
     $optionCollection = $this->objectManager->getCollectionMock('Magento\\Bundle\\Model\\ResourceModel\\Option\\Collection', $options);
     $optionRawData = [['required' => true, 'position' => 100, 'type' => 'someType', 'title' => 'title', 'delete' => '']];
     $selectionRawData = [[['product_id' => 123, 'position' => 500, 'is_default' => false, 'selection_price_type' => 'priceType', 'selection_price_value' => 'priceVal', 'selection_qty' => 21, 'selection_can_change_qty' => 11, 'delete' => '']]];
     $selection = $this->getMock('Magento\\Bundle\\Model\\Selection', ['getProductId', 'getPosition', 'getIsDefault', 'getSelectionPriceType', 'getSelectionPriceValue', 'getSelectionQty', 'getSelectionCanChangeQty', '__wakeup'], [], '', false);
     $selections = [$selection];
     $selectionCollection = $this->getMock('Magento\\Bundle\\Model\\ResourceModel\\Selection\\Collection', [], [], '', false);
     // method flow
     $this->product->expects($this->once())->method('getTypeId')->will($this->returnValue('bundle'));
     $this->product->expects($this->any())->method('getTypeInstance')->will($this->returnValue($instance));
     $instance->expects($this->once())->method('setStoreFilter')->with(null, $this->product);
     $instance->expects($this->once())->method('getOptionsCollection')->with($this->product)->will($this->returnValue($optionCollection));
     $instance->expects($this->once())->method('getSelectionsCollection')->with(null, $this->product)->will($this->returnValue($selectionCollection));
     $optionCollection->expects($this->once())->method('appendSelections')->with($selectionCollection);
     $option->expects($this->any())->method('getSelections')->will($this->returnValue($selections));
     $option->expects($this->at(0))->method('getData')->with('required')->will($this->returnValue(true));
     $option->expects($this->at(1))->method('getData')->with('position')->will($this->returnValue(100));
     $option->expects($this->at(2))->method('getData')->with('type')->will($this->returnValue('someType'));
     $option->expects($this->at(3))->method('getData')->with('title')->will($this->returnValue('title'));
     $option->expects($this->at(4))->method('getData')->with('title')->will($this->returnValue('title'));
     $selection->expects($this->once())->method('getProductId')->will($this->returnValue(123));
     $selection->expects($this->once())->method('getPosition')->will($this->returnValue(500));
     $selection->expects($this->once())->method('getIsDefault')->will($this->returnValue(false));
     $selection->expects($this->once())->method('getSelectionPriceType')->will($this->returnValue('priceType'));
     $selection->expects($this->once())->method('getSelectionPriceValue')->will($this->returnValue('priceVal'));
     $selection->expects($this->once())->method('getSelectionQty')->will($this->returnValue(21));
     $selection->expects($this->once())->method('getSelectionCanChangeQty')->will($this->returnValue(11));
     $this->duplicate->expects($this->once())->method('setBundleOptionsData')->with($optionRawData);
     $this->duplicate->expects($this->once())->method('setBundleSelectionsData')->with($selectionRawData);
     $this->model->build($this->product, $this->duplicate);
 }