woocommerce/tests/unit-tests/product/factory.php

69 lines
2.4 KiB
PHP

<?php
/**
* Products Factory Tests
* @package WooCommerce\Tests\Product
* @since 2.7.0
*/
class WC_Tests_Product_Factory extends WC_Unit_Test_Case {
/**
* Test getting product type.
*
* @since 2.7.0
*/
function test_get_product_type() {
$simple = WC_Helper_Product::create_simple_product();
$external = WC_Helper_Product::create_external_product();
$grouped = WC_Helper_Product::create_grouped_product();
$variable = WC_Helper_Product::create_variation_product();
$children = $variable->get_children();
$child_id = $children[0];
$this->assertEquals( 'simple', WC()->product_factory->get_product_type( $simple->get_id() ) );
$this->assertEquals( 'external', WC()->product_factory->get_product_type( $external->get_id() ) );
$this->assertEquals( 'grouped', WC()->product_factory->get_product_type( $grouped->get_id() ) );
$this->assertEquals( 'variable', WC()->product_factory->get_product_type( $variable->get_id() ) );
$this->assertEquals( 'variation', WC()->product_factory->get_product_type( $child_id ) );
$simple->delete( true );
$external->delete( true );
$grouped->delete( true );
$variable->delete( true );
}
/**
* Test the helper method that returns a class name for a specific product type.
*
* @since 2.7.0
*/
function test_get_classname_from_product_type() {
$this->assertEquals( 'WC_Product_Grouped', WC()->product_factory->get_classname_from_product_type( 'grouped' ) );
$this->assertEquals( 'WC_Product_Simple', WC()->product_factory->get_classname_from_product_type( 'simple' ) );
$this->assertEquals( 'WC_Product_Variable', WC()->product_factory->get_classname_from_product_type( 'variable' ) );
$this->assertEquals( 'WC_Product_Variation', WC()->product_factory->get_classname_from_product_type( 'variation' ) );
$this->assertEquals( 'WC_Product_External', WC()->product_factory->get_classname_from_product_type( 'external' ) );
}
/**
* Tests getting a product using the factory.
*
* @since 2.7.0
*/
function test_get_product() {
$test_product = WC_Helper_Product::create_simple_product();
$get_product = WC()->product_factory->get_product( $test_product->get_id() );
$this->assertEquals( $test_product->get_data(), $get_product->get_data() );
}
/**
* Tests that an incorrect product returns null.
*
* @since 2.7.0
*/
function test_get_invalid_product_returns_null() {
$product = WC()->product_factory->get_product( 50000 );
$this->assertNull( $product );
}
}