From 29107d24a9f20033f5b093116ede969f87d5b557 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 20 Sep 2017 18:37:26 +0100 Subject: [PATCH] Remove filters from tests and correct sums --- tests/unit-tests/discounts/discounts.php | 114 ++++++++++------------- 1 file changed, 51 insertions(+), 63 deletions(-) diff --git a/tests/unit-tests/discounts/discounts.php b/tests/unit-tests/discounts/discounts.php index 7dab1969328..71cc4d6d6a9 100644 --- a/tests/unit-tests/discounts/discounts.php +++ b/tests/unit-tests/discounts/discounts.php @@ -21,11 +21,6 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { */ protected $orders; - /** - * @var array An array of filters that have been set. - */ - protected $filters; - /** * @var array An array containing all the test data from the last Data Provider test. */ @@ -61,24 +56,12 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { $this->orders[] = $order; } - /** - * @param $filter_name string The name of the filter to add a listener to. - * @param $callback_function_name string The name of a function in this class - * to use as the callback. - */ - protected function add_filter( $filter_name, $callback_function_name ) { - add_filter( $filter_name, array( $this, $callback_function_name ) ); - - $this->filters[ $filter_name ][] = $callback_function_name; - } - public function setUp() { parent::setUp(); $this->products = array(); $this->coupons = array(); $this->orders = array(); - $this->filters = array(); $this->last_test_data = null; } @@ -114,12 +97,6 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { $this->last_test_data = null; } - foreach ( $this->filters as $filter_name => $callbacks ) { - foreach ( $callbacks as $callback ) { - $removed = remove_filter( $filter_name, array( $this, $callback ) ); - } - } - parent::tearDown(); } @@ -209,14 +186,6 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { $this->last_test_data = $test_data; $discounts = new WC_Discounts(); - if ( isset( $test_data['filters'] ) ) { - foreach ( $test_data['filters'] as $filter_name => $callbacks ) { - foreach ( $callbacks as $callback ) { - $this->add_filter( $filter_name, $callback ); - } - } - } - if ( isset( $test_data['tax_rate'] ) ) { WC_Tax::_insert_tax_rate( $test_data['tax_rate'] ); } @@ -787,7 +756,7 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { ), array( array( - 'desc' => 'Test multiple coupons. One coupon has limit up to 5 item. Discounting sequentially.', + 'desc' => 'Test multiple coupons. One coupon has limit up to 5 item. Discounting non-sequentially.', 'tax_rate' => array( 'tax_rate_country' => '', 'tax_rate_state' => '', @@ -800,24 +769,13 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { 'tax_rate_class' => '', ), 'prices_include_tax' => false, - 'filters' => array( - 'woocommerce_coupon_percent_calc_method' => array( - 'filter_woocommerce_coupon_percent_calc_method_cart_item', - ), - ), - 'wc_options' => array( - 'woocommerce_calc_discounts_sequentially' => array( - 'set' => 'yes', - 'revert' => 'no', - ), - ), 'cart' => array( array( - 'price' => 1.80, + 'price' => 10, 'qty' => 3, ), array( - 'price' => 13.95, + 'price' => 5, 'qty' => 3, ), ), @@ -834,7 +792,54 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { 'amount' => '20', ), ), - 'expected_total_discount' => 20.35, + 'expected_total_discount' => 21, + ), + ), + array( + array( + 'desc' => 'Test multiple coupons. One coupon has limit up to 5 item. Discounting sequentially.', + 'tax_rate' => array( + 'tax_rate_country' => '', + 'tax_rate_state' => '', + 'tax_rate' => '20.0000', + 'tax_rate_name' => 'VAT', + 'tax_rate_priority' => '1', + 'tax_rate_compound' => '0', + 'tax_rate_shipping' => '1', + 'tax_rate_order' => '1', + 'tax_rate_class' => '', + ), + 'prices_include_tax' => false, + 'wc_options' => array( + 'woocommerce_calc_discounts_sequentially' => array( + 'set' => 'yes', + 'revert' => 'no', + ), + ), + 'cart' => array( + array( + 'price' => 10, + 'qty' => 3, + ), + array( + 'price' => 5, + 'qty' => 3, + ), + ), + 'coupons' => array( + array( + 'code' => 'test', + 'discount_type' => 'percent', + 'amount' => '30', + 'limit_usage_to_x_items' => 5, + ), + array( + 'code' => 'test1', + 'discount_type' => 'percent', + 'amount' => '20', + ), + ), + 'expected_total_discount' => 18.30, ), ), array( @@ -852,11 +857,6 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { 'tax_rate_class' => '', ), 'prices_include_tax' => false, - 'filters' => array( - 'woocommerce_coupon_percent_calc_method' => array( - 'filter_woocommerce_coupon_percent_calc_method_cart_item', - ), - ), 'wc_options' => array( 'woocommerce_calc_discounts_sequentially' => array( 'set' => 'yes', @@ -1299,16 +1299,4 @@ class WC_Tests_Discounts extends WC_Unit_Test_Case { $all_discounts = $discounts->get_discounts(); $this->assertEquals( 0, count( $all_discounts['freeshipping'] ), 'Free shipping coupon should not have any discounts.' ); } - - /** - * A filter for 'woocommerce_coupon_percent_calc_method' that specifies to calculate - * using the cart_item method. - * - * @param string $method Incoming method to filter. - * - * @return string Filtered string. - */ - public function filter_woocommerce_coupon_percent_calc_method_cart_item( $method ) { - return 'cart_item'; - } }