2024-09-21 11:00:33 +02:00
< ? php
/**
* PHPUnit bootstrap file .
*
2024-12-05 16:16:30 +01:00
* @ package Event_Bridge_For_ActivityPub
2024-09-21 11:00:33 +02:00
*/
2024-12-20 18:39:20 +01:00
// Defined here because setting them in .wp-env.json doesn't work for some reason.
\define ( 'WP_TESTS_DOMAIN' , 'example.org' );
\define ( 'WP_SITEURL' , 'http://example.org' );
\define ( 'WP_HOME' , 'http://example.org' );
2024-09-21 11:00:33 +02:00
$_tests_dir = getenv ( 'WP_TESTS_DIR' );
if ( ! $_tests_dir ) {
$_tests_dir = rtrim ( sys_get_temp_dir (), '/\\' ) . '/wordpress-tests-lib' ;
}
// Forward custom PHPUnit Polyfills configuration to PHPUnit bootstrap file.
$_phpunit_polyfills_path = getenv ( 'WP_TESTS_PHPUNIT_POLYFILLS_PATH' );
if ( false !== $_phpunit_polyfills_path ) {
define ( 'WP_TESTS_PHPUNIT_POLYFILLS_PATH' , $_phpunit_polyfills_path );
}
if ( ! file_exists ( " { $_tests_dir } /includes/functions.php " ) ) {
echo " Could not find { $_tests_dir } /includes/functions.php, have you run bin/install-wp-tests.sh ? " . PHP_EOL ; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
exit ( 1 );
}
// Give access to tests_add_filter() function.
require_once " { $_tests_dir } /includes/functions.php " ;
2024-12-06 18:27:07 +01:00
/**
* Function to manually load an event plugin .
*
* @ param string $plugin_file The main plugin file of the event plugin .
*/
function _manually_load_event_plugin ( $plugin_file ) {
$plugin_dir = ABSPATH . '/wp-content/plugins/' ;
require_once $plugin_dir . $plugin_file ;
update_option ( 'purchase_history_table_structure_migration_done' , true );
$current = get_option ( 'active_plugins' , array () );
$current [] = $plugin_file ;
sort ( $current );
update_option ( 'active_plugins' , $current );
}
2024-09-21 11:00:33 +02:00
/**
2024-09-24 16:24:31 +02:00
* Manually load the plugin being tested and its integrations .
2024-09-21 11:00:33 +02:00
*/
function _manually_load_plugin () {
2024-09-24 16:24:31 +02:00
$plugin_dir = ABSPATH . '/wp-content/plugins/' ;
2024-09-25 11:27:17 +02:00
// Always manually load the ActivityPub plugin.
2024-09-24 16:24:31 +02:00
require_once $plugin_dir . 'activitypub/activitypub.php' ;
2024-09-25 11:27:17 +02:00
// Capture the --filter argument.
2024-12-05 16:16:30 +01:00
$event_bridge_for_activitypub_integration_filter = null ;
2024-09-25 11:27:17 +02:00
foreach ( $_SERVER [ 'argv' ] as $arg ) {
if ( strpos ( $arg , '--filter=' ) === 0 ) {
2024-12-05 16:16:30 +01:00
$event_bridge_for_activitypub_integration_filter = substr ( $arg , strlen ( '--filter=' ) );
2024-09-25 11:27:17 +02:00
break ;
}
}
2024-10-13 09:44:00 +02:00
// Hot fixes for eventin.
update_option ( 'purchase_history_table_structure_migration_done' , true );
update_option ( 'etn_wizard' , 'active' );
2024-09-25 11:27:17 +02:00
$plugin_file = null ;
// See if we want to run integration tests for a specific event-plugin.
2024-12-05 16:16:30 +01:00
switch ( $event_bridge_for_activitypub_integration_filter ) {
2024-09-25 11:27:17 +02:00
case 'the_events_calendar' :
2024-09-24 16:24:31 +02:00
$plugin_file = 'the-events-calendar/the-events-calendar.php' ;
2024-09-25 11:27:17 +02:00
break ;
case 'vs_event_list' :
$plugin_file = 'very-simple-event-list/vsel.php' ;
break ;
case 'events_manager' :
$plugin_file = 'events-manager/events-manager.php' ;
break ;
2024-10-13 09:44:00 +02:00
case 'eventin' :
$plugin_file = 'wp-event-solution/eventin.php' ;
break ;
2024-10-18 13:54:53 +02:00
case 'modern_events_calendar_lite' :
$plugin_file = 'modern-events-calendar-lite/modern-events-calendar-lite.php' ;
break ;
2024-09-25 11:27:17 +02:00
case 'gatherpress' :
$plugin_file = 'gatherpress/gatherpress.php' ;
break ;
2024-10-10 15:31:24 +02:00
case 'wp_event_manager' :
$plugin_file = 'wp-event-manager/wp-event-manager.php' ;
break ;
2024-11-28 19:01:28 +01:00
case 'eventprime' :
$plugin_file = 'eventprime-event-calendar-management/event-prime.php' ;
break ;
2024-11-30 12:26:42 +01:00
case 'event_organiser' :
$plugin_file = 'event-organiser/event-organiser.php' ;
break ;
2024-09-24 16:24:31 +02:00
}
2024-09-25 11:27:17 +02:00
if ( $plugin_file ) {
2024-12-06 18:27:07 +01:00
_manually_load_event_plugin ( $plugin_file );
2024-12-20 18:39:20 +01:00
} elseif ( 'event_sources' === $event_bridge_for_activitypub_integration_filter ) {
2024-12-09 18:16:07 +01:00
// For the Event Sources feature we currently only test with GatherPress.
_manually_load_event_plugin ( 'gatherpress/gatherpress.php' );
2024-12-20 18:39:20 +01:00
\update_option ( 'event_bridge_for_activitypub_event_sources_active' , true );
\update_option ( 'event_bridge_for_activitypub_plugin_used_for_event_source_feature' , 'GatherPress' );
\update_option ( 'activitypub_actor_mode' , ACTIVITYPUB_BLOG_MODE );
2024-12-06 18:27:07 +01:00
} else {
// For all other tests we mainly use the Events Calendar as a reference.
_manually_load_event_plugin ( 'the-events-calendar/the-events-calendar.php' );
_manually_load_event_plugin ( 'very-simple-event-list/vsel.php' );
2024-09-25 11:27:17 +02:00
}
// Hot fix that allows using Events Manager within unit tests, because the em_init() is later not run as admin.
2024-12-05 16:16:30 +01:00
if ( 'events_manager' === $event_bridge_for_activitypub_integration_filter ) {
2024-09-25 11:27:17 +02:00
require_once $plugin_dir . 'events-manager/em-install.php' ;
em_create_events_table ();
em_create_events_meta_table ();
em_create_locations_table ();
}
2024-12-05 16:16:30 +01:00
if ( 'modern_events_calendar_lite' === $event_bridge_for_activitypub_integration_filter ) {
2024-10-18 13:54:53 +02:00
require_once $plugin_dir . 'modern-events-calendar-lite/app/libraries/factory.php' ;
$mec_factory = new MEC_factory ();
$mec_factory -> install ();
}
2024-09-25 11:27:17 +02:00
// At last manually load our WordPress plugin.
2024-12-05 16:16:30 +01:00
require dirname ( __DIR__ ) . '/event-bridge-for-activitypub.php' ;
2024-12-20 18:39:20 +01:00
// Always manually load the ActivityPub plugin.
require_once $plugin_dir . 'activitypub/activitypub.php' ;
2024-09-21 11:00:33 +02:00
}
tests_add_filter ( 'muplugins_loaded' , '_manually_load_plugin' );
// Start up the WP testing environment.
require " { $_tests_dir } /includes/bootstrap.php " ;