createPartialMock( \Magento\CatalogRule\Model\ResourceModel\Rule::class, ['getIdFieldName', 'getRulesFromProduct'] ); $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::class, ['ruleResourceModel' => $resourceMock] ); } /** * @magentoAppIsolation enabled * @covers \Magento\CatalogRule\Model\Rule::calcProductPriceRule */ public function testCalcProductPriceRule() { $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create( \Magento\Catalog\Model\Product::class ); $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' ] ]; } }