wip draft how to do integration tests for event plugins
This commit is contained in:
parent
cc3b8e4a91
commit
04b0e69af6
6 changed files with 63 additions and 14 deletions
|
@ -68,11 +68,11 @@ jobs:
|
|||
|
||||
- name: Setup Test Environment
|
||||
if: steps.cache-wordpress.outputs.cache-hit != 'true'
|
||||
run: bash tests/install-wp-tests.sh wordpress_test root root 127.0.0.1 6.6 false false false false
|
||||
run: bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 6.6 false false false false
|
||||
|
||||
- name: Initialize WordPress test database
|
||||
if: steps.cache-wordpress.outputs.cache-hit != 'false'
|
||||
run: bash tests/install-wp-tests.sh wordpress_test root root 127.0.0.1 6.6 false true true true
|
||||
run: bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 6.6 false true true true
|
||||
|
||||
- name: Run PHPUnit
|
||||
run: cd /workspace/Event-Federation/wordpress-activitypub-event-extensions/ && ./vendor/bin/phpunit
|
||||
|
|
|
@ -202,7 +202,9 @@ install_db() {
|
|||
install_wp_plugin() {
|
||||
PLUGIN_NAME=$1
|
||||
|
||||
if [ -d "$WP_CORE_DIR/wp-content/mu-plugins/$PLUGIN_NAME" ]; then
|
||||
mkdir -p "$WP_CORE_DIR/wp-content/plugins/"
|
||||
|
||||
if [ -d "$WP_CORE_DIR/wp-content/plugins/$PLUGIN_NAME" ]; then
|
||||
return;
|
||||
fi
|
||||
|
||||
|
@ -217,7 +219,7 @@ install_wp_plugin() {
|
|||
fi
|
||||
|
||||
# Unzip the plugin into the WordPress must-use plugins directory
|
||||
unzip -o "$TMPDIR/$PLUGIN_FILE" -d "$WP_CORE_DIR/wp-content/mu-plugins/"
|
||||
unzip -o "$TMPDIR/$PLUGIN_FILE" -d "$WP_CORE_DIR/wp-content/plugins/"
|
||||
}
|
||||
|
||||
install_wp_plugins() {
|
|
@ -151,6 +151,10 @@ final class The_Events_Calendar extends Event {
|
|||
// We currently only support a single venue.
|
||||
$event_venue = $this->wp_object->venues[0];
|
||||
|
||||
if ( is_null( $event_venue ) ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$address = array(
|
||||
'addressCountry' => $event_venue->country,
|
||||
'addressLocality' => $event_venue->city,
|
||||
|
|
|
@ -59,14 +59,14 @@ class Setup {
|
|||
* @since 1.0.0
|
||||
*/
|
||||
protected function __construct() {
|
||||
$this->activitypub_plugin_is_active = is_plugin_active( 'activitypub/activitypub.php' );
|
||||
$this->activitypub_plugin_is_active = defined( 'ACTIVITYPUB_PLUGIN_VERSION' );
|
||||
// BeforeFirstRelease: decide whether we want to do anything at all when ActivityPub plugin is note active.
|
||||
// if ( ! $this->activitypub_plugin_is_active ) {
|
||||
// deactivate_plugins( ACTIVITYPUB_EVENT_EXTENSIONS_PLUGIN_FILE );
|
||||
// return;
|
||||
// }.
|
||||
$this->active_event_plugins = self::detect_active_event_plugins();
|
||||
$this->activitypub_plugin_version = get_file_data( WP_PLUGIN_DIR . '/activitypub/activitypub.php', array( 'Version' ) )[0];
|
||||
$this->activitypub_plugin_version = defined( 'ACTIVITYPUB_PLUGIN_VERSION' ) ? constant( 'ACTIVITYPUB_PLUGIN_VERSION' ): '0';
|
||||
$this->setup_hooks();
|
||||
}
|
||||
|
||||
|
@ -166,7 +166,7 @@ class Setup {
|
|||
);
|
||||
|
||||
// Check if the minimum required version of the ActivityPub plugin is installed.
|
||||
if ( version_compare( $this->activitypub_plugin_version, ACTIVITYPUB_EVENT_EXTENSIONS_ACTIVITYPUB_PLUGIN_MIN_VERSION ) ) {
|
||||
if ( ! version_compare( $this->activitypub_plugin_version, ACTIVITYPUB_EVENT_EXTENSIONS_ACTIVITYPUB_PLUGIN_MIN_VERSION ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -256,8 +256,8 @@ class Setup {
|
|||
// If someone installs this plugin, we simply enable ActivityPub support for all currently active event post types.
|
||||
$activitypub_supported_post_types = get_option( 'activitypub_support_post_types', array() );
|
||||
foreach ( $this->active_event_plugins as $event_plugin ) {
|
||||
if ( ! in_array( $event_plugin['post_type'], $activitypub_supported_post_types, true ) ) {
|
||||
$activitypub_supported_post_types[] = $event_plugin['post_type'];
|
||||
if ( ! in_array( $event_plugin->get_post_type(), $activitypub_supported_post_types, true ) ) {
|
||||
$activitypub_supported_post_types[] = $event_plugin->get_post_type();
|
||||
}
|
||||
}
|
||||
update_option( 'activitypub_support_post_types', $activitypub_supported_post_types );
|
||||
|
|
|
@ -26,15 +26,22 @@ if ( ! file_exists( "{$_tests_dir}/includes/functions.php" ) ) {
|
|||
require_once "{$_tests_dir}/includes/functions.php";
|
||||
|
||||
/**
|
||||
* Manually load the plugin being tested.
|
||||
* Manually load the plugin being tested and its integrations.
|
||||
*/
|
||||
function _manually_load_plugin() {
|
||||
require dirname( __DIR__ ) . '/activitypub-event-extensions.php';
|
||||
$plugin_dir = ABSPATH . '/wp-content/plugins/';
|
||||
require_once $plugin_dir . 'activitypub/activitypub.php';
|
||||
$event_plugin = 'the-events-calendar';
|
||||
switch ( $event_plugin ) {
|
||||
case 'the-events-calendar':
|
||||
require ABSPATH . '/wp-content/mu-plugins/the-events-calendar/the-events-calendar.php';
|
||||
$plugin_file = 'the-events-calendar/the-events-calendar.php';
|
||||
require_once $plugin_dir . $plugin_file;
|
||||
$current = get_option( 'active_plugins', array() );
|
||||
$current[] = $plugin_file;
|
||||
sort( $current );
|
||||
update_option( 'active_plugins', $current );
|
||||
}
|
||||
require dirname( __DIR__ ) . '/activitypub-event-extensions.php';
|
||||
}
|
||||
|
||||
tests_add_filter( 'muplugins_loaded', '_manually_load_plugin' );
|
||||
|
|
|
@ -28,9 +28,45 @@ class Test_Sample extends WP_UnitTestCase {
|
|||
|
||||
// Get instance of our plugin.
|
||||
$aec = \Activitypub_Event_Extensions\Setup::get_instance();
|
||||
$this->assertContains( 'the-events-calendar', $aec->get_active_event_plugins() );
|
||||
|
||||
// We only test for one event plugin being active at the same time,
|
||||
// even though we support multiple onces in theory.
|
||||
// But testing all combinations is beyond scope.
|
||||
$active_event_plugins = $aec->get_active_event_plugins();
|
||||
$this->assertEquals( 1, count( $active_event_plugins ) );
|
||||
|
||||
// Enable ActivityPub support for the event plugin.
|
||||
$aec->activate_activitypub_support_for_active_event_plugins();
|
||||
$this->assertContains( 'tribe_events', get_option( 'activitypub_support_post_types' ));
|
||||
$this->assertContains( 'tribe_events', get_option( 'activitypub_support_post_types' ) );
|
||||
|
||||
$wp_object = tribe_events()
|
||||
->set_args(
|
||||
array(
|
||||
'title' => 'My Event',
|
||||
'content' => 'Come to my event. Let\'s connect!',
|
||||
'start_date' => '+10 days 15:00:00',
|
||||
'duration' => HOUR_IN_SECONDS,
|
||||
'status' => 'publish',
|
||||
)
|
||||
)
|
||||
->create();
|
||||
|
||||
$transformer = \Activitypub\Transformer\Factory::get_transformer( $wp_object );
|
||||
|
||||
$event_array = $transformer->to_object()->to_array();
|
||||
|
||||
$this->assertArrayHasKey( 'type', $event_array );
|
||||
$this->assertEquals( 'Event', $event_array['type'] );
|
||||
|
||||
$this->assertEquals( 'My Event', $event_array['name'] );
|
||||
|
||||
$this->assertEquals( '', $event_array['content'] );
|
||||
|
||||
$this->assertEquals( gmdate( 'Y-m-d', strtotime( '+10 days 15:00:00' ) ) . 'T15:00:00Z', $event_array['startTime'] );
|
||||
$this->assertEquals( gmdate( 'Y-m-d', strtotime( '+10 days 16:00:00' ) ) . 'T16:00:00Z', $event_array['endTime'] );
|
||||
|
||||
$this->assertEquals( ) . 'T16:00:00Z', $event_array['commentsEnabled'] );
|
||||
|
||||
$this->assertEquals( gmdate( 'Y-m-d', strtotime( '+10 days 16:00:00' ) ) . 'T16:00:00Z', $event_array['endTime'] );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue