getMock( 'Magento\CatalogRule\Model\ResourceModel\Rule', ['getIdFieldName', 'getRulesFromProduct'], [], '', false ); $resourceMock->expects($this->any())->method('getIdFieldName')->will($this->returnValue('id')); $resourceMock->expects( $this->any() )->method( 'getRulesFromProduct' )->will( $this->returnValue($this->_getCatalogRulesFixtures()) ); $this->_object = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( 'Magento\CatalogRule\Model\Rule', ['resource' => $resourceMock] ); } /** * @magentoAppIsolation enabled * @covers \Magento\CatalogRule\Model\Rule::calcProductPriceRule */ public function testCalcProductPriceRule() { $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( 'Magento\Catalog\Model\Product' ); $this->assertEquals($this->_object->calcProductPriceRule($product, 100), 45); $product->setParentId(true); $this->assertEquals($this->_object->calcProductPriceRule($product, 50), 50); } /** * Get array with catalog rule data * * @return array */ protected function _getCatalogRulesFixtures() { return [ [ 'action_operator' => 'by_percent', 'action_amount' => '50.0000', 'action_stop' => '0' ], [ 'action_operator' => 'by_percent', 'action_amount' => '10.0000', 'action_stop' => '0' ] ]; } }