Skip to content

Commit

Permalink
Merge pull request #9483 from google/enhancement/9343-detected-and-lo…
Browse files Browse the repository at this point in the history
…st-events

Add new and lost clear events endpoints.
  • Loading branch information
eugene-manuilov authored Oct 11, 2024
2 parents 36aad46 + 0650517 commit 2a774c3
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 3 deletions.
58 changes: 55 additions & 3 deletions assets/js/modules/analytics-4/datastore/conversion-reporting.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@
/**
* Internal dependencies
*/
import { createRegistrySelector } from 'googlesitekit-data';
import API from 'googlesitekit-api';
import { combineStores, createRegistrySelector } from 'googlesitekit-data';
import { MODULES_ANALYTICS_4 } from './constants';
import { createFetchStore } from '../../../googlesitekit/data/create-fetch-store';

export const selectors = {
/**
Expand Down Expand Up @@ -51,6 +53,56 @@ export const selectors = {
),
};

export default {
selectors,
const dismissNewConversionReportingEventsStore = createFetchStore( {
baseName: 'dismissNewConversionReportingEvents',
controlCallback: () => {
return API.set(
'modules',
'analytics-4',
'clear-conversion-reporting-new-events'
);
},
} );

const dismissLostConversionReportingEventsStore = createFetchStore( {
baseName: 'dismissLostConversionReportingEvents',
controlCallback: () => {
return API.set(
'modules',
'analytics-4',
'clear-conversion-reporting-lost-events'
);
},
} );

const actions = {
/**
* Dismiss new conversion reporting events.
*
* @since n.e.x.t
*
* @return {boolean} Transient deletion response.
*/
dismissNewConversionReportingEvents() {
return dismissNewConversionReportingEventsStore.actions.fetchDismissNewConversionReportingEvents();
},
/**
* Dismiss lost conversion reporting events.
*
* @since n.e.x.t
*
* @return {boolean} Transient deletion response.
*/
dismissLostConversionReportingEvents() {
return dismissLostConversionReportingEventsStore.actions.fetchDismissLostConversionReportingEvents();
},
};

export default combineStores(
dismissNewConversionReportingEventsStore,
dismissLostConversionReportingEventsStore,
{
actions,
selectors,
}
);
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,54 @@ describe( 'modules/analytics-4 conversion-reporting', () => {
provideModules( registry );
} );

describe( 'actions', () => {
describe( 'dismissNewConversionReportingEvents', () => {
it( 'fetches clear new events endpoint', async () => {
fetchMock.postOnce(
new RegExp(
'^/google-site-kit/v1/modules/analytics-4/data/clear-conversion-reporting-new-events'
),
true
);

const { response } = await registry
.dispatch( MODULES_ANALYTICS_4 )
.dismissNewConversionReportingEvents();

expect( fetchMock ).toHaveFetchedTimes( 1 );
expect( fetchMock ).toHaveFetched(
new RegExp(
'^/google-site-kit/v1/modules/analytics-4/data/clear-conversion-reporting-new-events'
)
);
expect( response ).toEqual( true );
} );
} );

describe( 'dismissLostConversionReportingEvents', () => {
it( 'fetches clear lost events endpoint', async () => {
fetchMock.postOnce(
new RegExp(
'^/google-site-kit/v1/modules/analytics-4/data/clear-conversion-reporting-lost-events'
),
true
);

const { response } = await registry
.dispatch( MODULES_ANALYTICS_4 )
.dismissLostConversionReportingEvents();

expect( fetchMock ).toHaveFetchedTimes( 1 );
expect( fetchMock ).toHaveFetched(
new RegExp(
'^/google-site-kit/v1/modules/analytics-4/data/clear-conversion-reporting-lost-events'
)
);
expect( response ).toEqual( true );
} );
} );
} );

describe( 'selectors', () => {
describe( 'hasConversionReportingEvents', () => {
it( 'returns false when no conversion reporting events are available', () => {
Expand Down
17 changes: 17 additions & 0 deletions includes/Modules/Analytics_4.php
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,15 @@ protected function get_datapoint_definitions() {
);
}

if ( Feature_Flags::enabled( 'conversionReporting' ) ) {
$datapoints['POST:clear-conversion-reporting-new-events'] = array(
'service' => '',
);
$datapoints['POST:clear-conversion-reporting-lost-events'] = array(
'service' => '',
);
}

return $datapoints;
}

Expand Down Expand Up @@ -1651,6 +1660,14 @@ protected function create_data_request( Data_Request $data ) {
return function () use ( $data ) {
return $this->transients->set( 'googlesitekit_inline_tag_id_mismatch', $data['hasMismatchedTag'] );
};
case 'POST:clear-conversion-reporting-new-events':
return function () {
return $this->transients->delete( 'googlesitekit_conversion_reporting_detected_events' );
};
case 'POST:clear-conversion-reporting-lost-events':
return function () {
return $this->transients->delete( 'googlesitekit_conversion_reporting_lost_events' );
};
}

return parent::create_data_request( $data );
Expand Down
33 changes: 33 additions & 0 deletions tests/phpunit/integration/Modules/Analytics_4Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -1280,6 +1280,39 @@ public function test_get_datapoints__audienceSegmentation() {
);
}

public function test_get_datapoints__conversionReporting() {
$this->enable_feature( 'conversionReporting' );

$this->assertEqualSets(
array(
'account-summaries',
'accounts',
'ads-links',
'adsense-links',
'container-lookup',
'container-destinations',
'google-tag-settings',
'conversion-events',
'create-property',
'create-webdatastream',
'pivot-report',
'properties',
'property',
'report',
'webdatastreams',
'webdatastreams-batch',
'create-account-ticket',
'enhanced-measurement-settings',
'create-custom-dimension',
'sync-custom-dimensions',
'custom-dimension-data-available',
'set-google-tag-id-mismatch',
'clear-conversion-reporting-new-events',
'clear-conversion-reporting-lost-events',
),
$this->analytics->get_datapoints()
);
}
public function test_get_debug_fields() {
$this->assertEqualSets(
array(
Expand Down

0 comments on commit 2a774c3

Please sign in to comment.