woocommerce/tests/unit-tests/coupon/coupon.php

314 lines
7.8 KiB
PHP
Raw Normal View History

<?php
2015-03-06 15:32:40 +00:00
namespace WooCommerce\Tests\Coupon;
/**
2015-11-03 13:31:20 +00:00
* Class Coupon.
2015-03-06 15:32:40 +00:00
* @package WooCommerce\Tests\Coupon
*/
class Coupon extends \WC_Unit_Test_Case {
/**
2015-11-03 13:31:20 +00:00
* Test add_discount method.
*
* @since 2.3
*/
public function test_add_discount() {
// Create coupon
2015-03-06 15:32:40 +00:00
$coupon = \WC_Helper_Coupon::create_coupon();
// Add coupon, test return statement
$this->assertTrue( WC()->cart->add_discount( $coupon->code ) );
// Test if total amount of coupons is 1
$this->assertEquals( 1, count( WC()->cart->get_applied_coupons() ) );
// Clean up the cart
WC()->cart->empty_cart();
// Remove coupons
WC()->cart->remove_coupons();
// Delete coupon
2015-03-06 15:32:40 +00:00
\WC_Helper_Coupon::delete_coupon( $coupon->id );
}
/**
2015-11-03 13:31:20 +00:00
* Test add_discount method.
*
* @since 2.3
*/
public function test_add_discount_duplicate() {
// Create coupon
2015-03-06 15:32:40 +00:00
$coupon = \WC_Helper_Coupon::create_coupon();
// Add coupon
$this->assertTrue( WC()->cart->add_discount( $coupon->code ) );
// Add coupon again, test return statement
$this->assertFalse( WC()->cart->add_discount( $coupon->code ) );
// Test if total amount of coupons is 1
$this->assertEquals( 1, count( WC()->cart->get_applied_coupons() ) );
// Clearing WC notices
wc_clear_notices();
// Clean up the cart
WC()->cart->empty_cart();
// Remove coupons
WC()->cart->remove_coupons();
// Delete coupon
2015-03-06 15:32:40 +00:00
\WC_Helper_Coupon::delete_coupon( $coupon->id );
}
/**
2015-11-03 13:31:20 +00:00
* Test fixed cart discount method.
*
* @since 2.3
*/
public function test_fixed_cart_discount() {
// Create product
2015-03-06 15:32:40 +00:00
$product = \WC_Helper_Product::create_simple_product();
update_post_meta( $product->id, '_price', '10' );
update_post_meta( $product->id, '_regular_price', '10' );
// Create coupon
2015-03-06 15:32:40 +00:00
$coupon = \WC_Helper_Coupon::create_coupon();
update_post_meta( $coupon->id, 'discount_type', 'fixed_cart' );
update_post_meta( $coupon->id, 'coupon_amount', '5' );
// Create a flat rate method
2015-03-06 15:32:40 +00:00
\WC_Helper_Shipping::create_simple_flat_rate();
// We need this to have the calculate_totals() method calculate totals
if ( ! defined( 'WOOCOMMERCE_CHECKOUT' ) ) {
define( 'WOOCOMMERCE_CHECKOUT', true );
}
// Add product to cart
WC()->cart->add_to_cart( $product->id, 1 );
// Add coupon
WC()->cart->add_discount( $coupon->code );
// Set the flat_rate shipping method
WC()->session->set( 'chosen_shipping_methods', array( 'flat_rate' ) );
WC()->cart->calculate_totals();
// Test if the cart total amount is equal 15
$this->assertEquals( 15, WC()->cart->total );
// Clearing WC notices
wc_clear_notices();
// Clean up the cart
WC()->cart->empty_cart();
// Remove coupons
WC()->cart->remove_coupons();
// Delete the flat rate method
WC()->session->set( 'chosen_shipping_methods', array() );
2015-03-06 15:32:40 +00:00
\WC_Helper_Shipping::delete_simple_flat_rate();
// Delete coupon
2015-03-06 15:32:40 +00:00
\WC_Helper_Coupon::delete_coupon( $coupon->id );
// Delete product
2015-03-06 15:32:40 +00:00
\WC_Helper_Product::delete_product( $product->id );
}
/**
2015-11-03 13:31:20 +00:00
* Test percent cart discount method.
*
* @since 2.3
*/
public function test_percent_cart_discount() {
// Create product
2015-03-06 15:32:40 +00:00
$product = \WC_Helper_Product::create_simple_product();
update_post_meta( $product->id, '_price', '10' );
update_post_meta( $product->id, '_regular_price', '10' );
// Create coupon
2015-03-06 15:32:40 +00:00
$coupon = \WC_Helper_Coupon::create_coupon();
update_post_meta( $coupon->id, 'discount_type', 'percent' );
update_post_meta( $coupon->id, 'coupon_amount', '5' );
// Create a flat rate method
2015-03-06 15:32:40 +00:00
\WC_Helper_Shipping::create_simple_flat_rate();
// We need this to have the calculate_totals() method calculate totals
if ( ! defined( 'WOOCOMMERCE_CHECKOUT' ) ) {
define( 'WOOCOMMERCE_CHECKOUT', true );
}
// Add product to cart
WC()->cart->add_to_cart( $product->id, 1 );
// Add coupon
WC()->cart->add_discount( $coupon->code );
// Set the flat_rate shipping method
WC()->session->set( 'chosen_shipping_methods', array( 'flat_rate' ) );
WC()->cart->calculate_totals();
// Test if the cart total amount is equal 19.5
$this->assertEquals( 19.5, WC()->cart->total );
// Clearing WC notices
wc_clear_notices();
// Clean up the cart
WC()->cart->empty_cart();
// Remove coupons
WC()->cart->remove_coupons();
// Delete the flat rate method
WC()->session->set( 'chosen_shipping_methods', array() );
2015-03-06 15:32:40 +00:00
\WC_Helper_Shipping::delete_simple_flat_rate();
// Delete coupon
2015-03-06 15:32:40 +00:00
\WC_Helper_Coupon::delete_coupon( $coupon->id );
// Delete product
2015-03-06 15:32:40 +00:00
\WC_Helper_Product::delete_product( $product->id );
}
/**
2015-11-03 13:31:20 +00:00
* Test fixed product discount method.
*
* @since 2.3
*/
public function test_fixed_product_discount() {
// Create product
2015-03-06 15:32:40 +00:00
$product = \WC_Helper_Product::create_simple_product();
update_post_meta( $product->id, '_price', '10' );
update_post_meta( $product->id, '_regular_price', '10' );
// Create coupon
2015-03-06 15:32:40 +00:00
$coupon = \WC_Helper_Coupon::create_coupon();
update_post_meta( $coupon->id, 'discount_type', 'fixed_product' );
update_post_meta( $coupon->id, 'coupon_amount', '5' );
2015-04-10 09:55:40 +00:00
// Create a flat rate method - $10
2015-03-06 15:32:40 +00:00
\WC_Helper_Shipping::create_simple_flat_rate();
// We need this to have the calculate_totals() method calculate totals
if ( ! defined( 'WOOCOMMERCE_CHECKOUT' ) ) {
define( 'WOOCOMMERCE_CHECKOUT', true );
}
2015-04-10 09:55:40 +00:00
// Add fee - $10
2015-03-06 15:32:40 +00:00
\WC_Helper_Fee::add_cart_fee();
// Add product to cart
WC()->cart->add_to_cart( $product->id, 1 );
// Add coupon
WC()->cart->add_discount( $coupon->code );
// Set the flat_rate shipping method
WC()->session->set( 'chosen_shipping_methods', array( 'flat_rate' ) );
WC()->cart->calculate_totals();
// Test if the cart total amount is equal 25
$this->assertEquals( 25, WC()->cart->total );
// Clearing WC notices
wc_clear_notices();
// Clean up the cart
WC()->cart->empty_cart();
// Remove coupons
WC()->cart->remove_coupons();
// Remove fee
2015-03-06 15:32:40 +00:00
\WC_Helper_Fee::remove_cart_fee();
// Delete the flat rate method
WC()->session->set( 'chosen_shipping_methods', array() );
2015-03-06 15:32:40 +00:00
\WC_Helper_Shipping::delete_simple_flat_rate();
// Delete coupon
2015-03-06 15:32:40 +00:00
\WC_Helper_Coupon::delete_coupon( $coupon->id );
// Delete product
2015-03-06 15:32:40 +00:00
\WC_Helper_Product::delete_product( $product->id );
}
/**
2015-11-03 13:31:20 +00:00
* Test percent product discount method.
*
* @since 2.3
*/
public function test_percent_product_discount() {
// Create product
2015-03-06 15:32:40 +00:00
$product = \WC_Helper_Product::create_simple_product();
update_post_meta( $product->id, '_price', '10' );
update_post_meta( $product->id, '_regular_price', '10' );
// Create coupon
2015-03-06 15:32:40 +00:00
$coupon = \WC_Helper_Coupon::create_coupon();
update_post_meta( $coupon->id, 'discount_type', 'percent_product' );
update_post_meta( $coupon->id, 'coupon_amount', '5' );
// Create a flat rate method
2015-03-06 15:32:40 +00:00
\WC_Helper_Shipping::create_simple_flat_rate();
// We need this to have the calculate_totals() method calculate totals
if ( ! defined( 'WOOCOMMERCE_CHECKOUT' ) ) {
define( 'WOOCOMMERCE_CHECKOUT', true );
}
// Add fee
2015-03-06 15:32:40 +00:00
\WC_Helper_Fee::add_cart_fee();
// Add product to cart
WC()->cart->add_to_cart( $product->id, 1 );
// Add coupon
WC()->cart->add_discount( $coupon->code );
// Set the flat_rate shipping method
WC()->session->set( 'chosen_shipping_methods', array( 'flat_rate' ) );
WC()->cart->calculate_totals();
// Test if the cart total amount is equal 29.5
$this->assertEquals( 29.5, WC()->cart->total );
// Clearing WC notices
wc_clear_notices();
// Clean up the cart
WC()->cart->empty_cart();
// Remove coupons
WC()->cart->remove_coupons();
// Remove fee
2015-03-06 15:32:40 +00:00
\WC_Helper_Fee::remove_cart_fee();
// Delete the flat rate method
WC()->session->set( 'chosen_shipping_methods', array() );
2015-03-06 15:32:40 +00:00
\WC_Helper_Shipping::delete_simple_flat_rate();
// Delete coupon
2015-03-06 15:32:40 +00:00
\WC_Helper_Coupon::delete_coupon( $coupon->id );
// Delete product
2015-03-06 15:32:40 +00:00
\WC_Helper_Product::delete_product( $product->id );
}
}