woocommerce/tests/framework/class-wc-unit-test-case.php

141 lines
3.2 KiB
PHP
Raw Normal View History

2014-09-01 06:04:02 +00:00
<?php
/**
2015-11-03 13:53:50 +00:00
* WC Unit Test Case
2014-09-01 06:04:02 +00:00
*
* Provides WooCommerce-specific setup/tear down/assert methods, custom factories,
2015-11-03 13:31:20 +00:00
* and helper functions.
2014-09-01 06:04:02 +00:00
*
* @since 2.2
*/
class WC_Unit_Test_Case extends WP_UnitTestCase {
/** @var WC_Unit_Test_Factory instance */
2014-09-01 06:04:02 +00:00
protected $factory;
/**
* Additional files, relative to the plugin's root directory, that should be explicitly included.
*
* @var array
*/
protected static $includes;
/**
* If a test has declared include files, load them before running the tests in the class.
*
* @beforeClass
*/
public static function include_dependencies() {
$base_dir = trailingslashit( dirname( dirname( __DIR__ ) ) );
if ( ! empty( static::$includes ) ) {
foreach ( (array) static::$includes as $include ) {
include_once $base_dir . $include;
}
}
}
2014-09-01 06:04:02 +00:00
/**
2015-11-03 13:31:20 +00:00
* Setup test case.
2014-09-01 06:04:02 +00:00
*
* @since 2.2
*/
public function setUp() {
parent::setUp();
2015-02-04 16:18:01 +00:00
// Add custom factories
2014-09-01 06:04:02 +00:00
$this->factory = new WC_Unit_Test_Factory();
2014-09-05 06:35:53 +00:00
2015-02-04 16:18:01 +00:00
// Setup mock WC session handler
2014-09-05 06:35:53 +00:00
add_filter( 'woocommerce_session_handler', array( $this, 'set_mock_session_handler' ) );
$this->setOutputCallback( array( $this, 'filter_output' ) );
2015-02-04 16:18:01 +00:00
// Register post types before each test
WC_Post_types::register_post_types();
WC_Post_types::register_taxonomies();
2014-09-05 06:35:53 +00:00
}
/**
2015-11-03 13:31:20 +00:00
* Mock the WC session using the abstract class as cookies are not available.
* during tests.
2014-09-05 06:35:53 +00:00
*
2015-02-04 16:22:52 +00:00
* @since 2.2
2014-09-05 06:35:53 +00:00
* @return string
*/
public function set_mock_session_handler() {
return 'WC_Mock_Session_Handler';
}
2014-09-05 06:36:46 +00:00
/**
2015-11-03 13:31:20 +00:00
* Strip newlines and tabs when using expectedOutputString() as otherwise.
* the most template-related tests will fail due to indentation/alignment in.
* the template not matching the sample strings set in the tests.
2014-09-05 06:36:46 +00:00
*
* @since 2.2
*/
public function filter_output( $output ) {
$output = preg_replace( '/[\n]+/S', '', $output );
$output = preg_replace( '/[\t]+/S', '', $output );
return $output;
2014-09-01 06:04:02 +00:00
}
/**
2015-11-03 13:31:20 +00:00
* Asserts thing is not WP_Error.
2014-09-01 06:04:02 +00:00
*
* @since 2.2
2015-02-04 16:22:52 +00:00
* @param mixed $actual
2014-09-01 06:04:02 +00:00
* @param string $message
*/
public function assertNotWPError( $actual, $message = '' ) {
$this->assertNotInstanceOf( 'WP_Error', $actual, $message );
}
/**
2015-11-03 13:31:20 +00:00
* Asserts thing is WP_Error.
*
2015-02-04 16:22:52 +00:00
* @param mixed $actual
* @param string $message
*/
public function assertIsWPError( $actual, $message = '' ) {
$this->assertInstanceOf( 'WP_Error', $actual, $message );
}
/**
* Throws an exception with an optional message and code.
*
* Note: can't use `throwException` as that's reserved.
*
* @since 3.3-dev
* @param string $message
* @param int $code
* @throws \Exception
*/
public function throwAnException( $message = null, $code = null ) {
$message = $message ? $message : "We're all doomed!";
throw new Exception( $message, $code );
}
2014-09-05 23:21:31 +00:00
/**
2015-11-03 13:31:20 +00:00
* Backport assertNotFalse to PHPUnit 3.6.12 which only runs in PHP 5.2.
2014-09-05 23:21:31 +00:00
*
2015-02-04 16:22:52 +00:00
* @since 2.2
* @param $condition
* @param string $message
2014-09-05 23:21:31 +00:00
* @return mixed
*/
public static function assertNotFalse( $condition, $message = '' ) {
2014-09-05 23:36:43 +00:00
if ( version_compare( phpversion(), '5.3', '<' ) ) {
2014-09-05 23:21:31 +00:00
self::assertThat( $condition, self::logicalNot( self::isFalse() ), $message );
} else {
parent::assertNotFalse( $condition, $message );
}
}
2014-09-01 06:04:02 +00:00
}