diff --git a/tests/integration/class-test-jetpack.php b/tests/integration/class-test-jetpack.php
index d0e269f70..b42671439 100644
--- a/tests/integration/class-test-jetpack.php
+++ b/tests/integration/class-test-jetpack.php
@@ -156,68 +156,6 @@ public function test_c_manager_connection_check() {
$this->assertTrue( $manager->is_user_connected(), 'Mock Manager should return connected' );
}
- /**
- * Test init method skips sync hooks when IS_WPCOM is defined.
- *
- * @covers ::init
- * @runInSeparateProcess
- * @preserveGlobalState disabled
- */
- public function test_init_skips_sync_hooks_on_wpcom() {
- // Clear any existing hooks first.
- remove_all_filters( 'jetpack_sync_post_meta_whitelist' );
- remove_all_filters( 'jetpack_sync_comment_meta_whitelist' );
- remove_all_filters( 'jetpack_sync_whitelisted_comment_types' );
- remove_all_filters( 'jetpack_json_api_comment_types' );
- remove_all_filters( 'jetpack_api_include_comment_types_count' );
- remove_all_filters( 'activitypub_following_row_actions' );
- remove_all_filters( 'pre_option_activitypub_following_ui' );
-
- // Test the normal case first (IS_WPCOM not defined).
- if ( ! defined( 'IS_WPCOM' ) ) {
- Jetpack::init();
-
- // Sync hooks should be registered when IS_WPCOM is not defined.
- $this->assertTrue( has_filter( 'jetpack_sync_post_meta_whitelist' ) );
- $this->assertTrue( has_filter( 'jetpack_sync_comment_meta_whitelist' ) );
- $this->assertTrue( has_filter( 'jetpack_sync_whitelisted_comment_types' ) );
- $this->assertTrue( has_filter( 'jetpack_json_api_comment_types' ) );
- $this->assertTrue( has_filter( 'jetpack_api_include_comment_types_count' ) );
-
- // Following UI hooks should NOT be registered in normal test environment.
- $this->assertFalse( has_filter( 'activitypub_following_row_actions' ) );
- $this->assertFalse( has_filter( 'pre_option_activitypub_following_ui' ) );
-
- // Clear hooks again for the WPCOM simulation.
- remove_all_filters( 'jetpack_sync_post_meta_whitelist' );
- remove_all_filters( 'jetpack_sync_comment_meta_whitelist' );
- remove_all_filters( 'jetpack_sync_whitelisted_comment_types' );
- remove_all_filters( 'jetpack_json_api_comment_types' );
- remove_all_filters( 'jetpack_api_include_comment_types_count' );
- remove_all_filters( 'activitypub_following_row_actions' );
- remove_all_filters( 'pre_option_activitypub_following_ui' );
- }
-
- // Now simulate IS_WPCOM behavior by defining the constant temporarily.
- // We use a runInSeparateProcess annotation to isolate this test.
- if ( ! defined( 'IS_WPCOM' ) ) {
- define( 'IS_WPCOM', true );
- }
-
- Jetpack::init();
-
- // When IS_WPCOM is defined, sync hooks should NOT be registered.
- $this->assertFalse( has_filter( 'jetpack_sync_post_meta_whitelist' ) );
- $this->assertFalse( has_filter( 'jetpack_sync_comment_meta_whitelist' ) );
- $this->assertFalse( has_filter( 'jetpack_sync_whitelisted_comment_types' ) );
- $this->assertFalse( has_filter( 'jetpack_json_api_comment_types' ) );
- $this->assertFalse( has_filter( 'jetpack_api_include_comment_types_count' ) );
-
- // But following UI hooks should be registered when IS_WPCOM is true.
- $this->assertTrue( has_filter( 'activitypub_following_row_actions' ) );
- $this->assertTrue( has_filter( 'pre_option_activitypub_following_ui' ) );
- }
-
/**
* Test add_sync_meta method adds ActivityPub meta keys.
*
@@ -278,6 +216,66 @@ public function test_add_comment_types() {
$this->assertEquals( $updated_types, array_unique( $updated_types ) );
}
+ /**
+ * Test pre_option_activitypub_following_ui method forces UI to be enabled.
+ *
+ * @covers ::pre_option_activitypub_following_ui
+ */
+ public function test_pre_option_activitypub_following_ui() {
+ $result = Jetpack::pre_option_activitypub_following_ui();
+
+ $this->assertEquals( '1', $result );
+ }
+
+ /**
+ * Test integration with actual WordPress filters.
+ */
+ public function test_filter_integration() {
+ // Initialize Jetpack integration.
+ Jetpack::init();
+
+ // Test sync meta filter integration (only if not on WordPress.com).
+ if ( ! defined( 'IS_WPCOM' ) ) {
+ $sync_meta = apply_filters( 'jetpack_sync_post_meta_whitelist', array() );
+ $this->assertContains( Followers::FOLLOWER_META_KEY, $sync_meta );
+ $this->assertContains( Following::FOLLOWING_META_KEY, $sync_meta );
+
+ // Test comment meta filter integration.
+ $comment_meta = apply_filters( 'jetpack_sync_comment_meta_whitelist', array() );
+ $this->assertContains( 'avatar_url', $comment_meta );
+
+ // Test comment types filter integration.
+ $comment_types = apply_filters( 'jetpack_sync_whitelisted_comment_types', array() );
+ $expected_ap_types = Comment::get_comment_type_slugs();
+ foreach ( $expected_ap_types as $type ) {
+ $this->assertContains( $type, $comment_types );
+ }
+ } else {
+ // On WordPress.com, sync filters should not be registered.
+ // Test that they are indeed not registered.
+ $sync_meta = apply_filters( 'jetpack_sync_post_meta_whitelist', array() );
+ $this->assertNotContains( Followers::FOLLOWER_META_KEY, $sync_meta );
+ $this->assertNotContains( Following::FOLLOWING_META_KEY, $sync_meta );
+
+ $comment_meta = apply_filters( 'jetpack_sync_comment_meta_whitelist', array() );
+ $this->assertNotContains( 'avatar_url', $comment_meta );
+ }
+
+ // Test following UI filter integration - test direct method calls.
+ $ui_result = Jetpack::pre_option_activitypub_following_ui();
+ $this->assertEquals( '1', $ui_result );
+
+ // Test reader link method directly.
+ $test_item = array(
+ 'id' => 123,
+ 'status' => 'active',
+ 'identifier' => 'https://example.com/feed',
+ );
+ $original_actions = array( 'edit' => 'Edit' );
+ $updated_actions = Jetpack::add_reader_link( $original_actions, $test_item );
+ $this->assertArrayHasKey( 'reader', $updated_actions );
+ }
+
/**
* Data provider for Reader link test scenarios.
*
@@ -285,24 +283,24 @@ public function test_add_comment_types() {
*/
public function reader_link_data() {
return array(
- 'active following with feed ID' => array(
+ 'active following without feed ID' => array(
'item' => array(
'id' => 123,
'status' => 'active',
'identifier' => 'https://example.com/feed',
),
- 'feed_id' => 456,
- 'expected_url' => 'https://wordpress.com/reader/feeds/456',
+ 'feed_id' => false,
+ 'expected_url' => 'https://wordpress.com/reader/feeds/lookup/https%3A%2F%2Fexample.com%2Ffeed',
'should_have_reader_link' => true,
),
- 'active following without feed ID' => array(
+ 'active following with feed ID' => array(
'item' => array(
'id' => 123,
'status' => 'active',
'identifier' => 'https://example.com/feed',
),
- 'feed_id' => false,
- 'expected_url' => 'https://wordpress.com/reader/feeds/lookup/https%3A%2F%2Fexample.com%2Ffeed',
+ 'feed_id' => 456,
+ 'expected_url' => 'https://wordpress.com/reader/feeds/456',
'should_have_reader_link' => true,
),
'pending following should not have reader link' => array(
@@ -323,8 +321,6 @@ public function reader_link_data() {
*
* @dataProvider reader_link_data
* @covers ::add_reader_link
- * @runInSeparateProcess
- * @preserveGlobalState disabled
*
* @param array $item The following item.
* @param int|false $feed_id The feed ID or false.
@@ -375,64 +371,4 @@ function ( $value, $object_id, $meta_key ) use ( $item, $feed_id ) {
// Clean up filters.
remove_all_filters( 'get_post_metadata' );
}
-
- /**
- * Test pre_option_activitypub_following_ui method forces UI to be enabled.
- *
- * @covers ::pre_option_activitypub_following_ui
- */
- public function test_pre_option_activitypub_following_ui() {
- $result = Jetpack::pre_option_activitypub_following_ui();
-
- $this->assertEquals( '1', $result );
- }
-
- /**
- * Test integration with actual WordPress filters.
- */
- public function test_filter_integration() {
- // Initialize Jetpack integration.
- Jetpack::init();
-
- // Test sync meta filter integration (only if not on WordPress.com).
- if ( ! defined( 'IS_WPCOM' ) ) {
- $sync_meta = apply_filters( 'jetpack_sync_post_meta_whitelist', array() );
- $this->assertContains( Followers::FOLLOWER_META_KEY, $sync_meta );
- $this->assertContains( Following::FOLLOWING_META_KEY, $sync_meta );
-
- // Test comment meta filter integration.
- $comment_meta = apply_filters( 'jetpack_sync_comment_meta_whitelist', array() );
- $this->assertContains( 'avatar_url', $comment_meta );
-
- // Test comment types filter integration.
- $comment_types = apply_filters( 'jetpack_sync_whitelisted_comment_types', array() );
- $expected_ap_types = Comment::get_comment_type_slugs();
- foreach ( $expected_ap_types as $type ) {
- $this->assertContains( $type, $comment_types );
- }
- } else {
- // On WordPress.com, sync filters should not be registered.
- // Test that they are indeed not registered.
- $sync_meta = apply_filters( 'jetpack_sync_post_meta_whitelist', array() );
- $this->assertNotContains( Followers::FOLLOWER_META_KEY, $sync_meta );
- $this->assertNotContains( Following::FOLLOWING_META_KEY, $sync_meta );
-
- $comment_meta = apply_filters( 'jetpack_sync_comment_meta_whitelist', array() );
- $this->assertNotContains( 'avatar_url', $comment_meta );
- }
-
- // Test following UI filter integration - test direct method calls.
- $ui_result = Jetpack::pre_option_activitypub_following_ui();
- $this->assertEquals( '1', $ui_result );
-
- // Test reader link method directly.
- $test_item = array(
- 'id' => 123,
- 'status' => 'active',
- 'identifier' => 'https://example.com/feed',
- );
- $original_actions = array( 'edit' => 'Edit' );
- $updated_actions = Jetpack::add_reader_link( $original_actions, $test_item );
- $this->assertArrayHasKey( 'reader', $updated_actions );
- }
}