/**
  * @covers \Magento\SalesRule\Model\Rule\Action\Discount\CartFixed::calculate
  */
 public function testCalculate()
 {
     $this->rule->setData(['id' => 1, 'discount_amount' => 10.0]);
     $this->address->expects($this->any())->method('getCartFixedRules')->will($this->returnValue([]));
     $store = $this->getMock('Magento\\Store\\Model\\Store', [], [], '', false);
     $this->priceCurrency->expects($this->atLeastOnce())->method('convert')->will($this->returnArgument(0));
     $this->priceCurrency->expects($this->atLeastOnce())->method('round')->will($this->returnArgument(0));
     $this->quote->expects($this->any())->method('getStore')->will($this->returnValue($store));
     /** validators data */
     $this->validator->expects($this->once())->method('getItemPrice')->with($this->item)->will($this->returnValue(100));
     $this->validator->expects($this->once())->method('getItemBasePrice')->with($this->item)->will($this->returnValue(100));
     $this->validator->expects($this->once())->method('getItemOriginalPrice')->with($this->item)->will($this->returnValue(100));
     $this->validator->expects($this->once())->method('getItemBaseOriginalPrice')->with($this->item)->will($this->returnValue(100));
     $this->address->expects($this->once())->method('setCartFixedRules')->with([1 => 0.0]);
     $this->model->calculate($this->rule, $this->item, 1);
     $this->assertEquals($this->data->getAmount(), 10);
     $this->assertEquals($this->data->getBaseAmount(), 10);
     $this->assertEquals($this->data->getOriginalAmount(), 10);
     $this->assertEquals($this->data->getBaseOriginalAmount(), 100);
 }
 protected function setUp()
 {
     // @TODO Re-write test according to standards of writing test (e.g do not mock tested class)
     $this->model = $this->getMock('Magento\\SalesRule\\Model\\Validator', array('_getRules', '_getItemOriginalPrice', '_getItemBaseOriginalPrice', '__wakeup'), array(), '', false);
     $this->model->expects($this->any())->method('_getRules')->will($this->returnValue(array()));
     $this->model->expects($this->any())->method('_getItemOriginalPrice')->will($this->returnValue(1));
     $this->model->expects($this->any())->method('_getItemBaseOriginalPrice')->will($this->returnValue(1));
 }
Exemple #3
0
 /**
  * @param $qty
  * @param $ruleData
  * @param $itemData
  * @param $validItemData
  * @param $expectedRuleDiscountQty
  * @param $expectedDiscountData
  * @dataProvider calculateDataProvider
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 public function testCalculate($qty, $ruleData, $itemData, $validItemData, $expectedRuleDiscountQty, $expectedDiscountData)
 {
     $discountData = $this->getMockBuilder('Magento\\SalesRule\\Model\\Rule\\Action\\Discount\\Data')->disableOriginalConstructor()->setMethods(['setAmount', 'setBaseAmount', 'setOriginalAmount', 'setBaseOriginalAmount'])->getMock();
     $this->discountDataFactory->expects($this->once())->method('create')->will($this->returnValue($discountData));
     $rule = $this->getMockBuilder('Magento\\SalesRule\\Model\\Rule')->disableOriginalConstructor()->setMethods(['getDiscountAmount', 'getDiscountQty', '__wakeup'])->getMock();
     $item = $this->getMockBuilder('Magento\\Quote\\Model\\Quote\\Item\\AbstractItem')->disableOriginalConstructor()->setMethods(['getDiscountAmount', 'getBaseDiscountAmount', 'getDiscountPercent', 'setDiscountPercent', '__wakeup', 'getQuote', 'getAddress', 'getOptionByCode'])->getMock();
     $this->validator->expects($this->atLeastOnce())->method('getItemPrice')->with($item)->will($this->returnValue($validItemData['price']));
     $this->validator->expects($this->atLeastOnce())->method('getItemBasePrice')->with($item)->will($this->returnValue($validItemData['basePrice']));
     $this->validator->expects($this->atLeastOnce())->method('getItemOriginalPrice')->with($item)->will($this->returnValue($validItemData['originalPrice']));
     $this->validator->expects($this->atLeastOnce())->method('getItemBaseOriginalPrice')->with($item)->will($this->returnValue($validItemData['baseOriginalPrice']));
     $rule->expects($this->atLeastOnce())->method('getDiscountAmount')->will($this->returnValue($ruleData['discountAmount']));
     $rule->expects($this->atLeastOnce())->method('getDiscountQty')->will($this->returnValue($ruleData['discountQty']));
     $item->expects($this->atLeastOnce())->method('getDiscountAmount')->will($this->returnValue($itemData['discountAmount']));
     $item->expects($this->atLeastOnce())->method('getBaseDiscountAmount')->will($this->returnValue($itemData['baseDiscountAmount']));
     if (!$ruleData['discountQty'] || $ruleData['discountQty'] > $qty) {
         $item->expects($this->atLeastOnce())->method('getDiscountPercent')->will($this->returnValue($itemData['discountPercent']));
         $item->expects($this->atLeastOnce())->method('setDiscountPercent')->with($expectedRuleDiscountQty);
     }
     $discountData->expects($this->once())->method('setAmount')->with($expectedDiscountData['amount']);
     $discountData->expects($this->once())->method('setBaseAmount')->with($expectedDiscountData['baseAmount']);
     $discountData->expects($this->once())->method('setOriginalAmount')->with($expectedDiscountData['originalAmount']);
     $discountData->expects($this->once())->method('setBaseOriginalAmount')->with($expectedDiscountData['baseOriginalAmount']);
     $this->assertEquals($discountData, $this->model->calculate($rule, $item, $qty));
 }
 protected function setUp()
 {
     $this->_model = $this->getMock('Magento\\OfflineShipping\\Model\\SalesRule\\Calculator', ['_getRules', '__wakeup'], [], '', false);
     $this->_model->expects($this->any())->method('_getRules')->will($this->returnValue([]));
 }