From d60798ed3b0803685890eeb5dc7b447c9597e3f8 Mon Sep 17 00:00:00 2001
From: Roman Ganin <rganin@ebay.com>
Date: Wed, 24 Jun 2015 15:22:01 +0300
Subject: [PATCH] MAGETWO-39157: Cover \Magento\CatalogRule\Helper\Data with
 unit-test

---
 app/code/Magento/CatalogRule/Helper/Data.php  |  3 +-
 .../CatalogRule/Test/Unit/Helper/DataTest.php | 68 +++++++++++++++++++
 2 files changed, 69 insertions(+), 2 deletions(-)
 create mode 100644 app/code/Magento/CatalogRule/Test/Unit/Helper/DataTest.php

diff --git a/app/code/Magento/CatalogRule/Helper/Data.php b/app/code/Magento/CatalogRule/Helper/Data.php
index 439cff46006..33ff8836556 100644
--- a/app/code/Magento/CatalogRule/Helper/Data.php
+++ b/app/code/Magento/CatalogRule/Helper/Data.php
@@ -12,13 +12,12 @@ namespace Magento\CatalogRule\Helper;
 class Data extends \Magento\Framework\App\Helper\AbstractHelper
 {
     /**
-     * Algorithm for calculating price rule
+     * Algorithm for calculating price by rule
      *
      * @param  string $actionOperator
      * @param  int $ruleAmount
      * @param  float $price
      * @return float|int
-     * @api
      */
     public function calcPriceRule($actionOperator, $ruleAmount, $price)
     {
diff --git a/app/code/Magento/CatalogRule/Test/Unit/Helper/DataTest.php b/app/code/Magento/CatalogRule/Test/Unit/Helper/DataTest.php
new file mode 100644
index 00000000000..2d72cd6c2c6
--- /dev/null
+++ b/app/code/Magento/CatalogRule/Test/Unit/Helper/DataTest.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\CatalogRule\Test\Unit\Helper;
+
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
+
+class DataTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Helper object
+     *
+     * @var \Magento\CatalogRule\Helper\Data
+     */
+    protected $helper;
+
+    protected function setUp()
+    {
+        $this->helper = (new ObjectManager($this))->getObject('Magento\CatalogRule\Helper\Data');
+    }
+
+    /**
+     * Test price rule calculation
+     *
+     * @param string $actionOperator
+     * @param int|float $ruleAmount
+     * @param int|float $price
+     * @param int|float $expectedAmount
+     *
+     * @dataProvider calcPriceRuleDataProvider
+     */
+    public function testCalcPriceRule($actionOperator, $ruleAmount, $price, $expectedAmount)
+    {
+        $this->assertEquals($expectedAmount, $this->helper->calcPriceRule($actionOperator, $ruleAmount, $price));
+    }
+
+    /**
+     * Data provider for cal price rule test
+     *
+     * @return array
+     */
+    public function calcPriceRuleDataProvider()
+    {
+        return [
+            ['to_fixed', 10, 10, 10],
+            ['to_fixed', 0, 10, 0],
+            ['to_fixed', 10, 0, 0],
+            ['to_fixed', 0, 0, 0],
+            ['to_percent', 100, 100, 100],
+            ['to_percent', 10, 100, 10],
+            ['to_percent', 10, 70, 7],
+            ['to_percent', 100, 10, 10],
+            ['by_fixed', 100, 100, 0],
+            ['by_fixed', 10, 100, 90],
+            ['by_fixed', 100, 10, 0],
+            ['by_percent', 100, 100, 0],
+            ['by_percent', 100, 10, 0],
+            ['by_percent', 100, 1, 0],
+            ['by_percent', 10, 100, 90],
+            ['by_percent', 10, 10, 9],
+            ['by_percent', 1, 10, 9.90],
+        ];
+    }
+
+}
-- 
GitLab