add test templates for event-manager and gatherpress
Some checks failed
PHP Code Checker / PHP Code Checker (pull_request) Failing after 41s
Some checks failed
PHP Code Checker / PHP Code Checker (pull_request) Failing after 41s
This commit is contained in:
parent
5f6f02cc81
commit
2bcd4c5039
8 changed files with 233 additions and 59 deletions
|
@ -83,3 +83,13 @@ jobs:
|
|||
run: cd /workspace/Event-Federation/wordpress-activitypub-event-extensions/ && ./vendor/bin/phpunit --filter=vs_event_list
|
||||
env:
|
||||
PHP_VERSION: ${{ matrix.php-version }}
|
||||
|
||||
- name: Run Integration tests for GatherPress
|
||||
run: cd /workspace/Event-Federation/wordpress-activitypub-event-extensions/ && ./vendor/bin/phpunit --filter=gatherpress
|
||||
env:
|
||||
PHP_VERSION: ${{ matrix.php-version }}
|
||||
|
||||
- name: Run Integration tests for Events Manager
|
||||
run: cd /workspace/Event-Federation/wordpress-activitypub-event-extensions/ && ./vendor/bin/phpunit --filter=events_manager
|
||||
env:
|
||||
PHP_VERSION: ${{ matrix.php-version }}
|
|
@ -52,9 +52,13 @@
|
|||
"@test-gatherpress",
|
||||
"@test-events-manager"
|
||||
],
|
||||
"test-vs-event_list": "phpunit --filter=vs_event_list",
|
||||
"test-debug": [
|
||||
"@prepare-test",
|
||||
"@test-events-manager"
|
||||
],
|
||||
"test-vs-event-list": "phpunit --filter=vs_event_list",
|
||||
"test-the-events-calendar": "phpunit --filter=the_events_calendar",
|
||||
"test-gatherpress": "phpunit --filter=gatherpress",
|
||||
"test-events-manager": "phpunit --filter=events-manager"
|
||||
"test-events-manager": "phpunit --filter=events_manager"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,6 @@ services:
|
|||
- test-db
|
||||
volumes:
|
||||
- .:/app
|
||||
command: ["composer", "run-script", "test"]
|
||||
command: ["composer", "run-script", "test-debug"]
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
|
|
|
@ -50,6 +50,13 @@ class Event extends Post {
|
|||
return 'Event';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a sane default for whether comments are enabled.
|
||||
*/
|
||||
protected function get_comments_enabled() {
|
||||
'open';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the title of the event.
|
||||
*
|
||||
|
|
|
@ -49,29 +49,18 @@ final class GatherPress extends Event {
|
|||
protected $gp_venue;
|
||||
|
||||
/**
|
||||
* Get transformer name.
|
||||
* Extend the constructor, to also set the GatherPress objects.
|
||||
*
|
||||
* Retrieve the transformers name.
|
||||
* This is a special class object form The Events Calendar which
|
||||
* has a lot of useful functions, we make use of our getter functions.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access public
|
||||
* @return string Widget name.
|
||||
* @param WP_Post $wp_object The WordPress object.
|
||||
* @param string $wp_taxonomy The taxonomy slug of the event post type.
|
||||
*/
|
||||
public function get_transformer_name() {
|
||||
return 'gatherpress/gp-event';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get transformer title.
|
||||
*
|
||||
* Retrieve the transformers label.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @access public
|
||||
* @return string Widget title.
|
||||
*/
|
||||
public function get_transformer_label() {
|
||||
return 'GatherPress Event';
|
||||
public function __construct( $wp_object, $wp_taxonomy ) {
|
||||
parent::__construct( $wp_object, $wp_taxonomy );
|
||||
$this->gp_event = new GatherPress_Event( $this->wp_object->ID );
|
||||
$this->gp_venue = $this->gp_event->get_venue_information();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -90,15 +79,20 @@ final class GatherPress extends Event {
|
|||
/**
|
||||
* Get the event location.
|
||||
*
|
||||
* @return array The Place.
|
||||
* @return Place|null The place objector null if not place set.
|
||||
*/
|
||||
public function get_location() {
|
||||
public function get_location(): Place|null {
|
||||
$address = $this->gp_venue['full_address'];
|
||||
$place = new Place();
|
||||
$place->set_type( 'Place' );
|
||||
$place->set_name( $address );
|
||||
$place->set_address( $address );
|
||||
return $place;
|
||||
if ( $address ) {
|
||||
$place = new Place();
|
||||
$place->set_type( 'Place' );
|
||||
$place->set_name( $address );
|
||||
$place->set_address( $address );
|
||||
return $place;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -134,7 +128,7 @@ final class GatherPress extends Event {
|
|||
/**
|
||||
* Overrides/extends the get_attachments function to also add the event Link.
|
||||
*/
|
||||
protected function get_attachment() {
|
||||
protected function get_attachment(): array {
|
||||
$attachments = parent::get_attachment();
|
||||
if ( count( $attachments ) ) {
|
||||
$attachments[0]['type'] = 'Document';
|
||||
|
@ -154,7 +148,7 @@ final class GatherPress extends Event {
|
|||
*
|
||||
* @return string The User-URL.
|
||||
*/
|
||||
protected function get_attributed_to() {
|
||||
protected function get_attributed_to(): string {
|
||||
$user = new Blog();
|
||||
return $user->get_url();
|
||||
}
|
||||
|
@ -167,7 +161,7 @@ final class GatherPress extends Event {
|
|||
*
|
||||
* @return string $summary The custom event summary.
|
||||
*/
|
||||
public function get_summary() {
|
||||
public function get_summary(): string {
|
||||
if ( $this->wp_object->excerpt ) {
|
||||
$excerpt = $this->wp_object->post_excerpt;
|
||||
} elseif ( get_post_meta( $this->wp_object->ID, 'event-summary', true ) ) {
|
||||
|
@ -184,38 +178,31 @@ final class GatherPress extends Event {
|
|||
return $summary;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the content.
|
||||
*/
|
||||
public function get_content(): string {
|
||||
return $this->wp_object->post_content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the event is online.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function get_is_online(): bool {
|
||||
return $this->gp_event->maybe_get_online_event_link() ? true : false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Transform the WordPress Object into an ActivityPub Object.
|
||||
*
|
||||
* @return Activitypub\Activity\Event
|
||||
*/
|
||||
public function to_object() {
|
||||
$this->ap_object = new Event_Object();
|
||||
$this->gp_event = new GatherPress_Event( $this->wp_object->ID );
|
||||
$this->gp_venue = $this->gp_event->get_venue_information();
|
||||
$activitypub_object = parent::to_object();
|
||||
|
||||
$this->ap_object = parent::to_object();
|
||||
|
||||
$this->ap_object->set_comments_enabled( 'open' === $this->wp_object->comment_status ? true : false );
|
||||
|
||||
$this->ap_object->set_external_participation_url( $this->get_url() );
|
||||
|
||||
$online_event_link = $this->gp_event->maybe_get_online_event_link();
|
||||
|
||||
if ( $online_event_link ) {
|
||||
$this->ap_object->set_is_online( true );
|
||||
} else {
|
||||
$this->ap_object->set_is_online( false );
|
||||
}
|
||||
|
||||
$this->ap_object->set_status( 'CONFIRMED' );
|
||||
|
||||
$this->ap_object->set_name( get_the_title( $this->wp_object->ID ) );
|
||||
|
||||
$this->ap_object->set_actor( get_rest_url_by_path( 'application' ) );
|
||||
$this->ap_object->set_to( array( 'https://www.w3.org/ns/activitystreams#Public' ) );
|
||||
|
||||
$this->ap_object->set_location();
|
||||
return $this->ap_object;
|
||||
return $activitypub_object;
|
||||
}
|
||||
}
|
||||
|
|
63
tests/test-class-plugin-events-manger.php
Normal file
63
tests/test-class-plugin-events-manger.php
Normal file
|
@ -0,0 +1,63 @@
|
|||
<?php
|
||||
/**
|
||||
* Class SampleTest
|
||||
*
|
||||
* @package Activitypub_Event_Extensions
|
||||
*/
|
||||
|
||||
/**
|
||||
* Sample test case.
|
||||
*/
|
||||
class Test_Events_Manager extends WP_UnitTestCase {
|
||||
/**
|
||||
* Override the setup function, so that tests don't run if the Events Calendar is not active.
|
||||
*/
|
||||
public function set_up() {
|
||||
parent::set_up();
|
||||
|
||||
if ( ! class_exists( 'EM_Events' ) ) {
|
||||
self::markTestSkipped( 'VS Event List plugin is not active.' );
|
||||
}
|
||||
|
||||
// Make sure that ActivityPub support is enabled for Events Manager.
|
||||
$aec = \Activitypub_Event_Extensions\Setup::get_instance();
|
||||
$aec->activate_activitypub_support_for_active_event_plugins();
|
||||
|
||||
// Delete all posts afterwards.
|
||||
_delete_all_posts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the right transformer gets applied.
|
||||
*/
|
||||
public function test_transformer_class() {
|
||||
// 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 = \Activitypub_Event_Extensions\Setup::get_instance()->get_active_event_plugins();
|
||||
$this->assertEquals( 1, count( $active_event_plugins ) );
|
||||
|
||||
// Enable ActivityPub support for the event plugin.
|
||||
$this->assertContains( EM_POST_TYPE_EVENT, get_option( 'activitypub_support_post_types' ) );
|
||||
|
||||
// Insert a new Event.
|
||||
$wp_post_id = wp_insert_post(
|
||||
array(
|
||||
'post_title' => 'Events Manager Test event',
|
||||
'post_status' => 'published',
|
||||
'post_type' => EM_POST_TYPE_EVENT,
|
||||
'meta_input' => array(
|
||||
'event_start_time' => strtotime( '+10 days 15:00:00' ),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
$wp_object = get_post( $wp_post_id );
|
||||
|
||||
// Call the transformer Factory.
|
||||
$transformer = \Activitypub\Transformer\Factory::get_transformer( $wp_object );
|
||||
|
||||
// Check that we got the right transformer.
|
||||
$this->assertInstanceOf( \Activitypub_Event_Extensions\Activitypub\Transformer\Events_Manager::class, $transformer );
|
||||
}
|
||||
}
|
103
tests/test-class-plugin-gatherpress.php
Normal file
103
tests/test-class-plugin-gatherpress.php
Normal file
|
@ -0,0 +1,103 @@
|
|||
<?php
|
||||
/**
|
||||
* Class SampleTest
|
||||
*
|
||||
* @package Activitypub_Event_Extensions
|
||||
*/
|
||||
|
||||
/**
|
||||
* Sample test case.
|
||||
*/
|
||||
class Test_GatherPress extends WP_UnitTestCase {
|
||||
/**
|
||||
* Override the setup function, so that tests don't run if the Events Calendar is not active.
|
||||
*/
|
||||
public function set_up() {
|
||||
parent::set_up();
|
||||
|
||||
if ( ! defined( 'GATHERPRESS_CORE_FILE' ) ) {
|
||||
self::markTestSkipped( 'GatherPress plugin is not active.' );
|
||||
}
|
||||
|
||||
// Mock the plugin activation.
|
||||
GatherPress\Core\Setup::get_instance()->activate_gatherpress_plugin( false );
|
||||
|
||||
// Make sure that ActivityPub support is enabled for The Events Calendar.
|
||||
$aec = \Activitypub_Event_Extensions\Setup::get_instance();
|
||||
$aec->activate_activitypub_support_for_active_event_plugins();
|
||||
|
||||
// Delete all posts afterwards.
|
||||
_delete_all_posts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the right transformer gets applied.
|
||||
*/
|
||||
public function test_transformer_class() {
|
||||
// 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 = \Activitypub_Event_Extensions\Setup::get_instance()->get_active_event_plugins();
|
||||
$this->assertEquals( 1, count( $active_event_plugins ) );
|
||||
|
||||
// Enable ActivityPub support for the event plugin.
|
||||
$this->assertContains( 'gatherpress_event', get_option( 'activitypub_support_post_types' ) );
|
||||
|
||||
// Mock GatherPress Event.
|
||||
$post_id = wp_insert_post(
|
||||
array(
|
||||
'post_title' => 'Unit Test Event',
|
||||
'post_type' => 'gatherpress_event',
|
||||
'post_content' => 'Unit Test description.',
|
||||
)
|
||||
);
|
||||
$event = new \GatherPress\Core\Event( $post_id );
|
||||
$params = array(
|
||||
'datetime_start' => '+10 days 15:00:00',
|
||||
'datetime_end' => '+10 days 16:00:00',
|
||||
'timezone' => 'America/New_York',
|
||||
);
|
||||
|
||||
$event->save_datetimes( $params );
|
||||
|
||||
// Call the transformer Factory.
|
||||
$transformer = \Activitypub\Transformer\Factory::get_transformer( $event->event );
|
||||
|
||||
// Check that we got the right transformer.
|
||||
$this->assertInstanceOf( \Activitypub_Event_Extensions\Activitypub\Transformer\GatherPress::class, $transformer );
|
||||
}
|
||||
|
||||
/**
|
||||
* Test transformation to ActivityPUb for basic event.
|
||||
*/
|
||||
public function test_transform_of_basic_event() {
|
||||
// Mock GatherPress Event.
|
||||
$post_id = wp_insert_post(
|
||||
array(
|
||||
'post_title' => 'Unit Test Event',
|
||||
'post_type' => 'gatherpress_event',
|
||||
'post_content' => 'Unit Test description.',
|
||||
'post_status' => 'published',
|
||||
)
|
||||
);
|
||||
$event = new \GatherPress\Core\Event( $post_id );
|
||||
$params = array(
|
||||
'datetime_start' => '+10 days 15:00:00',
|
||||
'datetime_end' => '+10 days 16:00:00',
|
||||
'timezone' => 'America/New_York',
|
||||
);
|
||||
$event->save_datetimes( $params );
|
||||
|
||||
// Call the transformer Factory.
|
||||
$event_array = \Activitypub\Transformer\Factory::get_transformer( $event->event )->to_object()->to_array();
|
||||
|
||||
// Check that the event ActivityStreams representation contains everything as expected.
|
||||
$this->assertEquals( 'Event', $event_array['type'] );
|
||||
$this->assertEquals( 'Unit Test Event', $event_array['name'] );
|
||||
$this->assertEquals( 'Unit Test description.', $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( 'external', $event_array['joinMode'] );
|
||||
$this->assertArrayNotHasKey( 'location', $event_array );
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue