Skip to content

Commit

Permalink
Merge pull request #8710 from google/enhancement/8181-site-health-cre…
Browse files Browse the repository at this point in the history
…ated-audiences

Add Site Health section for sitekit created audiences.
  • Loading branch information
techanvil authored Jun 3, 2024
2 parents 3ebdd9d + 343ce5c commit 0ea003e
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 0 deletions.
44 changes: 44 additions & 0 deletions includes/Modules/Analytics_4.php
Original file line number Diff line number Diff line change
Expand Up @@ -517,6 +517,26 @@ public function get_debug_fields() {
);
}

// Check if the audienceSegmentation feature is enabled.
if ( Feature_Flags::enabled( 'audienceSegmentation' ) ) {
// Return the SITE_KIT_AUDIENCE audiences.
$site_kit_audiences = $this->get_site_kit_audiences( $settings['availableAudiences'] ?? array() );

$debug_fields['analytics_4_site_kit_audiences'] = array(
'label' => __( 'Analytics site created audiences', 'google-site-kit' ),
'value' => empty( $site_kit_audiences )
? __( 'None', 'google-site-kit' )
: join(
/* translators: used between list items, there is a space after the comma */
__( ', ', 'google-site-kit' ),
$site_kit_audiences
),
'debug' => empty( $site_kit_audiences )
? 'none'
: join( ', ', $site_kit_audiences ),
);
}

return $debug_fields;
}

Expand Down Expand Up @@ -2390,4 +2410,28 @@ private function has_audience_site_kit_identifier( $data, $identifier ) {

return false;
}

/**
* Returns the Site Kit-created audience display names from the passed list of audiences.
*
* @since n.e.x.t
*
* @param array $audiences List of audiences.
*
* @return array List of Site Kit-created audience display names.
*/
private function get_site_kit_audiences( $audiences ) {
// Ensure that audiences are available, otherwise return an empty array.
if ( empty( $audiences ) || ! is_array( $audiences ) ) {
return array();
}

$site_kit_audiences = array_filter( $audiences, fn( $audience ) => ! empty( $audience['audienceType'] ) && ( 'SITE_KIT_AUDIENCE' === $audience['audienceType'] ) );

if ( empty( $site_kit_audiences ) ) {
return array();
}

return wp_list_pluck( $site_kit_audiences, 'displayName' );
}
}
55 changes: 55 additions & 0 deletions tests/phpunit/integration/Modules/Analytics_4Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -1263,6 +1263,26 @@ public function test_get_debug_fields() {
);
}

public function test_get_debug_fields__audience_segmentation_enabled() {
$this->enable_feature( 'audienceSegmentation' );

$this->assertEqualSets(
array(
'analytics_4_account_id',
'analytics_4_property_id',
'analytics_4_web_data_stream_id',
'analytics_4_measurement_id',
'analytics_4_use_snippet',
'analytics_4_available_custom_dimensions',
'analytics_4_ads_conversion_id',
'analytics_4_ads_linked',
'analytics_4_ads_linked_last_synced_at',
'analytics_4_site_kit_audiences',
),
array_keys( $this->analytics->get_debug_fields() )
);
}

public function test_get_debug_fields__AdSense_disabled() {
$this->assertEqualSets(
array(
Expand Down Expand Up @@ -3844,6 +3864,41 @@ public function test_sync_audiences( $access_token ) {
);
}

/**
* @dataProvider data_access_token
*/
public function test_site_kit_audiences_returned_in_debug_fields( $access_token ) {
$this->enable_feature( 'audienceSegmentation' );

$this->setup_user_authentication( $access_token );

$property_id = '12345';

$this->analytics->get_settings()->merge(
array(
'propertyID' => $property_id,
)
);

// Grant scopes so request doesn't fail.
$this->authentication->get_oauth_client()->set_granted_scopes(
$this->analytics->get_scopes()
);

$this->fake_handler_and_invoke_register_method( $property_id );

$this->analytics->set_data( 'sync-audiences', array() );
$debug_fields = $this->analytics->get_debug_fields();

$this->assertArrayHasKey( 'analytics_4_site_kit_audiences', $debug_fields );

$audience_field = $debug_fields['analytics_4_site_kit_audiences'];

$this->assertEquals( 'Analytics site created audiences', $audience_field['label'] );
$this->assertEquals( 'New visitors, Returning visitors', $audience_field['value'] );
$this->assertEquals( 'New visitors, Returning visitors', $audience_field['debug'] );
}

public function test_register_template_redirect_amp() {
$context = $this->get_amp_primary_context();
$analytics = new Analytics_4( $context );
Expand Down

0 comments on commit 0ea003e

Please sign in to comment.