2018-04-17 21:03:14 +00:00
< ? php
/**
* PHPUnit bootstrap file
*
2018-07-10 12:48:06 +00:00
* @ package WC_Admin
2018-04-17 21:03:14 +00:00
*/
$_tests_dir = getenv ( 'WP_TESTS_DIR' );
if ( ! $_tests_dir ) {
$_tests_dir = rtrim ( sys_get_temp_dir (), '/\\' ) . '/wordpress-tests-lib' ;
}
if ( ! file_exists ( $_tests_dir . '/includes/functions.php' ) ) {
2018-09-24 15:49:21 +00:00
echo " Could not find $_tests_dir /includes/functions.php, have you run bin/install-wp-tests.sh ? " . PHP_EOL ; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
2018-04-17 21:03:14 +00:00
exit ( 1 );
}
// Give access to tests_add_filter() function.
require_once $_tests_dir . '/includes/functions.php' ;
2018-09-24 15:49:21 +00:00
/**
* Returns WooCommerce main directory .
*
* @ return string
*/
2018-09-20 14:20:04 +00:00
function wc_dir () {
return dirname ( dirname ( dirname ( __FILE__ ) ) ) . '/woocommerce' ;
}
2018-11-02 10:31:41 +00:00
/**
* Install wc admin .
*/
function wc_admin_install () {
// Clean existing install first.
define ( 'WP_UNINSTALL_PLUGIN' , true );
define ( 'WC_REMOVE_ALL_DATA' , true );
// Initialize the WC API extensions.
require_once dirname ( dirname ( __FILE__ ) ) . '/includes/class-wc-admin-api-init.php' ;
WC_Admin_Api_Init :: install ();
if ( ! wp_next_scheduled ( 'wc_admin_daily' ) ) {
wp_schedule_event ( time (), 'daily' , 'wc_admin_daily' );
}
// Reload capabilities after install, see https://core.trac.wordpress.org/ticket/28374.
if ( version_compare ( $GLOBALS [ 'wp_version' ], '4.7' , '<' ) ) {
$GLOBALS [ 'wp_roles' ] -> reinit ();
} else {
$GLOBALS [ 'wp_roles' ] = null ; // WPCS: override ok.
wp_roles ();
}
echo esc_html ( 'Installing wc-admin...' . PHP_EOL );
}
2018-09-24 15:49:21 +00:00
/**
* Adds WooCommerce testing framework classes .
*/
2018-09-20 14:20:04 +00:00
function wc_test_includes () {
2018-12-12 21:13:49 +00:00
$wc_tests_framework_base_dir = wc_dir () . '/tests' ;
2018-09-20 14:20:04 +00:00
// WooCommerce test classes.
// Framework.
require_once $wc_tests_framework_base_dir . '/framework/class-wc-unit-test-factory.php' ;
require_once $wc_tests_framework_base_dir . '/framework/class-wc-mock-session-handler.php' ;
require_once $wc_tests_framework_base_dir . '/framework/class-wc-mock-wc-data.php' ;
require_once $wc_tests_framework_base_dir . '/framework/class-wc-mock-wc-object-query.php' ;
require_once $wc_tests_framework_base_dir . '/framework/class-wc-mock-payment-gateway.php' ;
require_once $wc_tests_framework_base_dir . '/framework/class-wc-payment-token-stub.php' ;
require_once $wc_tests_framework_base_dir . '/framework/vendor/class-wp-test-spy-rest-server.php' ;
// Test cases.
require_once $wc_tests_framework_base_dir . '/includes/wp-http-testcase.php' ;
require_once $wc_tests_framework_base_dir . '/framework/class-wc-unit-test-case.php' ;
require_once $wc_tests_framework_base_dir . '/framework/class-wc-api-unit-test-case.php' ;
require_once $wc_tests_framework_base_dir . '/framework/class-wc-rest-unit-test-case.php' ;
// Helpers.
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-product.php' ;
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-coupon.php' ;
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-fee.php' ;
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-shipping.php' ;
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-customer.php' ;
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-order.php' ;
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-shipping-zones.php' ;
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-payment-token.php' ;
require_once $wc_tests_framework_base_dir . '/framework/helpers/class-wc-helper-settings.php' ;
}
2018-04-17 21:03:14 +00:00
/**
* Manually load the plugin being tested .
*/
function _manually_load_plugin () {
2019-01-22 17:44:00 +00:00
if ( version_compare ( $GLOBALS [ 'wp_version' ], '4.9.9' , '<=' ) ) { // < 5.0 fails for "5.0-alpha-12345-src
2019-01-23 23:59:10 +00:00
$_tests_wp_core_dir = getenv ( 'WP_CORE_DIR' );
if ( ! $_tests_wp_core_dir ) {
$_tests_wp_core_dir = rtrim ( sys_get_temp_dir (), '/\\' ) . '/wordpress' ;
}
require $_tests_wp_core_dir . '/wp-content/plugins/gutenberg/gutenberg.php' ;
2019-01-22 17:44:00 +00:00
}
2018-09-24 15:49:21 +00:00
define ( 'WC_TAX_ROUNDING_MODE' , 'auto' );
define ( 'WC_USE_TRANSACTIONS' , false );
require_once wc_dir () . '/woocommerce.php' ;
2018-11-02 10:31:41 +00:00
wc_admin_install ();
2018-07-10 12:48:06 +00:00
require dirname ( dirname ( __FILE__ ) ) . '/wc-admin.php' ;
2018-04-17 21:03:14 +00:00
}
tests_add_filter ( 'muplugins_loaded' , '_manually_load_plugin' );
// Start up the WP testing environment.
require $_tests_dir . '/includes/bootstrap.php' ;
2018-09-20 14:20:04 +00:00
wc_test_includes ();
// Include wc-admin helpers.
require_once dirname ( __FILE__ ) . '/framework/helpers/class-wc-helper-reports.php' ;
2018-11-14 19:06:53 +00:00
require_once dirname ( __FILE__ ) . '/framework/helpers/class-wc-helper-admin-notes.php' ;
2019-01-12 01:13:12 +00:00
require_once dirname ( __FILE__ ) . '/framework/helpers/class-wc-test-action-queue.php' ;
2019-01-30 16:59:45 +00:00
require_once dirname ( __FILE__ ) . '/framework/helpers/class-wc-helper-queue.php' ;
2019-02-12 20:02:02 +00:00
/**
* Set the environment and feature flags to 'develop' when running tests , instead of what is set in the generated `config/feature-flags.php` .
* This matches how we mock the flags in jest .
*/
function wc_admin_get_feature_config () {
$config = json_decode ( file_get_contents ( dirname ( dirname ( __FILE__ ) ) . '/config/development.json' ) );
$flags = array ();
foreach ( $config -> features as $feature => $bool ) {
$flags [ $feature ] = $bool ;
}
return $flags ;
}