[#3176] Refactor bootstrap

* Adjust load and install order
* Fix issue with stale capabilities after install
This commit is contained in:
Max Rice 2014-09-01 16:04:09 -04:00
parent 50253bc8b6
commit 0bd7d8990c
1 changed files with 29 additions and 17 deletions

View File

@ -10,14 +10,13 @@ class WC_Unit_Tests_Bootstrap {
protected static $instance = null;
/** @var string directory where wordpress-tests-lib is installed */
protected $wp_tests_dir;
public $wp_tests_dir;
/** @var string testing directory */
protected $tests_dir;
public $tests_dir;
/** @var string plugin directory */
protected $plugin_dir;
public $plugin_dir;
/**
* Setup the unit testing environment
@ -33,36 +32,50 @@ class WC_Unit_Tests_Bootstrap {
$this->plugin_dir = dirname( $this->tests_dir );
$this->wp_tests_dir = getenv( 'WP_TESTS_DIR' ) ? getenv( 'WP_TESTS_DIR' ) : $this->plugin_dir . '/tmp/wordpress-tests-lib';
// load test function so tests_add_filter() is available
require_once( $this->wp_tests_dir . '/includes/functions.php' );
// load WC
tests_add_filter( 'muplugins_loaded', array( $this, 'load_wc' ) );
// install WC
tests_add_filter( 'setup_theme', array( $this, 'install_wc' ) );
// load the WP testing environment
require_once( $this->wp_tests_dir . '/includes/bootstrap.php' );
$this->install_wc();
activate_plugin( 'woocommerce/woocommerce.php' );
// load WC testing framework
$this->includes();
}
/**
* Load WooCommerce
*
* @since 2.2
*/
public function load_wc() {
require_once( $this->plugin_dir . '/woocommerce.php' );
}
/**
* Install WooCommerce after the test environment has loaded, but prior
* to activating the plugin
* Install WooCommerce after the test environment and WC have been loaded
*
* @since 2.2
*/
public function install_wc() {
echo 'Installing WooCommerce...' . PHP_EOL;
require_once( $this->plugin_dir . '/woocommerce.php' );
// clean existing install first
define( 'WP_UNINSTALL_PLUGIN', true );
include( $this->plugin_dir . '/uninstall.php' );
$installer = include( $this->plugin_dir . '/includes/class-wc-install.php' );
$installer->install();
$GLOBALS['current_user'] = new WP_User(1);
$GLOBALS['current_user']->set_role('administrator');
}
// reload capabilities after install, see https://core.trac.wordpress.org/ticket/28374
$GLOBALS['wp_roles']->reinit();
echo "Installing WooCommerce..." . PHP_EOL;
}
/**
* Load WC-specific test cases and factories
@ -76,7 +89,6 @@ class WC_Unit_Tests_Bootstrap {
require_once( $this->tests_dir . '/framework/class-wc-api-unit-test-case.php' );
}
/**
* Get the single class instance
*