From 265afaa81e34f9f433fe1c972e438cf537b7ef92 Mon Sep 17 00:00:00 2001 From: Ankit Gade Date: Fri, 3 Jan 2025 17:25:14 +0530 Subject: [PATCH 01/11] Handle error in banners on CTA click. --- .../FirstPartyModeSetupBanner.js | 14 +++-- .../common/ActionsCTALinkDismiss.js | 62 +++++++++++++------ .../components/common/CTALink.js | 24 +++++-- .../notifications/components/common/Error.js | 53 ++++++++++++++++ .../components/layout/NotificationWithSVG.js | 2 + 5 files changed, 128 insertions(+), 27 deletions(-) create mode 100644 assets/js/googlesitekit/notifications/components/common/Error.js diff --git a/assets/js/components/notifications/FirstPartyModeSetupBanner.js b/assets/js/components/notifications/FirstPartyModeSetupBanner.js index fc33046137f..f8eecb3c3ef 100644 --- a/assets/js/components/notifications/FirstPartyModeSetupBanner.js +++ b/assets/js/components/notifications/FirstPartyModeSetupBanner.js @@ -70,8 +70,7 @@ export default function FirstPartyModeSetupBanner( { id, Notification } ) { select( CORE_NOTIFICATIONS ).isNotificationDismissed( id ) ); - const { dismissNotification, invalidateResolution } = - useDispatch( CORE_NOTIFICATIONS ); + const { invalidateResolution } = useDispatch( CORE_NOTIFICATIONS ); const { setValue } = useDispatch( CORE_UI ); const learnMoreURL = useSelect( ( select ) => { @@ -88,15 +87,17 @@ export default function FirstPartyModeSetupBanner( { id, Notification } ) { const onCTAClick = async () => { setFirstPartyModeEnabled( true ); - await saveFirstPartyModeSettings(); + const { error } = await saveFirstPartyModeSettings(); + + if ( error ) { + return { error }; + } setValue( FPM_SHOW_SETUP_SUCCESS_NOTIFICATION, true ); invalidateResolution( 'getQueuedNotifications', [ viewContext, NOTIFICATION_GROUPS.DEFAULT, ] ); - - dismissNotification( id ); }; const onDismiss = () => { @@ -173,6 +174,9 @@ export default function FirstPartyModeSetupBanner( { id, Notification } ) { 'google-site-kit' ) } onCTAClick={ onCTAClick } + ctaDismissOptions={ { + skipHidingFromQueue: false, + } } dismissLabel={ __( 'Maybe later', 'google-site-kit' ) } onDismiss={ onDismiss } dismissOptions={ { diff --git a/assets/js/googlesitekit/notifications/components/common/ActionsCTALinkDismiss.js b/assets/js/googlesitekit/notifications/components/common/ActionsCTALinkDismiss.js index 0cc4c2e66ee..023a02a633f 100644 --- a/assets/js/googlesitekit/notifications/components/common/ActionsCTALinkDismiss.js +++ b/assets/js/googlesitekit/notifications/components/common/ActionsCTALinkDismiss.js @@ -14,10 +14,16 @@ * limitations under the License. */ +/** + * External dependencies + */ +import PropTypes from 'prop-types'; + /** * WordPress dependencies */ import { __ } from '@wordpress/i18n'; +import { Fragment } from '@wordpress/element'; /** * Internal dependencies @@ -33,8 +39,10 @@ export default function ActionsCTALinkDismiss( { ctaLink, ctaLabel, onCTAClick, + ctaDismissOptions, onDismiss = () => {}, dismissLabel = __( 'OK, Got it!', 'google-site-kit' ), + dismissOnCTAClick = true, dismissExpires = 0, dismissOptions = {}, } ) { @@ -45,24 +53,42 @@ export default function ActionsCTALinkDismiss( { } ); return ( -
- + +
+ - -
+ +
+ ); } + +ActionsCTALinkDismiss.propTypes = { + id: PropTypes.string, + className: PropTypes.string, + ctaLink: PropTypes.string, + ctaLabel: PropTypes.string, + onCTAClick: PropTypes.func, + onDismiss: PropTypes.func, + ctaDismissOptions: PropTypes.object, + dismissLabel: PropTypes.string, + dismissOnCTAClick: PropTypes.bool, + dismissExpires: PropTypes.number, + dismissOptions: PropTypes.object, +}; diff --git a/assets/js/googlesitekit/notifications/components/common/CTALink.js b/assets/js/googlesitekit/notifications/components/common/CTALink.js index 5a13586157c..c96fc6a0fc0 100644 --- a/assets/js/googlesitekit/notifications/components/common/CTALink.js +++ b/assets/js/googlesitekit/notifications/components/common/CTALink.js @@ -33,13 +33,16 @@ import { CORE_NOTIFICATIONS } from '../../datastore/constants'; import { CORE_LOCATION } from '../../../datastore/location/constants'; import useNotificationEvents from '../../hooks/useNotificationEvents'; import { SpinnerButton } from 'googlesitekit-components'; +import { CORE_SITE } from '../../../datastore/site/constants'; export default function CTALink( { id, ctaLink, ctaLabel, onCTAClick, - dismissExpires = -1, + dismissOnCTAClick = false, + dismissExpires = 0, + dismissOptions = { skipHidingFromQueue: true }, } ) { const [ isAwaitingCTAResponse, setIsAwaitingCTAResponse ] = useState( false ); @@ -53,28 +56,39 @@ export default function CTALink( { : false; } ); + const { clearError, receiveError } = useDispatch( CORE_SITE ); + const { dismissNotification } = useDispatch( CORE_NOTIFICATIONS ); const { navigateTo } = useDispatch( CORE_LOCATION ); const handleCTAClick = async ( event ) => { + clearError( 'notificationAction', [ id ] ); + event.persist(); if ( ! event.defaultPrevented && ctaLink ) { event.preventDefault(); } setIsAwaitingCTAResponse( true ); - await onCTAClick?.( event ); + + const { error } = ( await onCTAClick?.( event ) ) || {}; + if ( isMounted() ) { setIsAwaitingCTAResponse( false ); } + if ( error ) { + receiveError( error, 'notificationAction', [ id ] ); + return; + } + const ctaClickActions = [ trackEvents.confirm() ]; - if ( dismissExpires >= 0 ) { + if ( dismissOnCTAClick ) { ctaClickActions.push( dismissNotification( id, { + ...dismissOptions, expiresInSeconds: dismissExpires, - skipHidingFromQueue: true, } ) ); } @@ -105,5 +119,7 @@ CTALink.propTypes = { ctaLink: PropTypes.string, ctaLabel: PropTypes.string, onCTAClick: PropTypes.func, + dismissOnCTAClick: PropTypes.bool, dismissExpires: PropTypes.number, + dismissOptions: PropTypes.object, }; diff --git a/assets/js/googlesitekit/notifications/components/common/Error.js b/assets/js/googlesitekit/notifications/components/common/Error.js new file mode 100644 index 00000000000..e9475db98c7 --- /dev/null +++ b/assets/js/googlesitekit/notifications/components/common/Error.js @@ -0,0 +1,53 @@ +/** + * Site Kit by Google, Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * External dependencies + */ +import PropTypes from 'prop-types'; + +/* + * WordPress dependencies + */ +import { useEffect } from '@wordpress/element'; + +/** + * Internal dependencies + */ +import { useDispatch, useSelect } from 'googlesitekit-data'; +import { CORE_SITE } from '../../../datastore/site/constants'; +import ErrorText from '../../../../components/ErrorText'; + +export default function Error( { id } ) { + const ctaError = useSelect( ( select ) => { + return select( CORE_SITE ).getError( 'notificationAction', [ id ] ); + } ); + + const { clearError } = useDispatch( CORE_SITE ); + + useEffect( () => { + return () => { + clearError( 'notificationAction', [ id ] ); + }; + }, [ clearError, id ] ); + + return ctaError ? : null; +} + +// eslint-disable-next-line sitekit/acronym-case +Error.propTypes = { + id: PropTypes.string, +}; diff --git a/assets/js/googlesitekit/notifications/components/layout/NotificationWithSVG.js b/assets/js/googlesitekit/notifications/components/layout/NotificationWithSVG.js index f35af34fa5b..c1e91c69b01 100644 --- a/assets/js/googlesitekit/notifications/components/layout/NotificationWithSVG.js +++ b/assets/js/googlesitekit/notifications/components/layout/NotificationWithSVG.js @@ -28,6 +28,7 @@ import { useBreakpoint, } from '../../../../hooks/useBreakpoint'; import { Cell, Grid, Row } from '../../../../material-components'; +import Error from '../common/Error'; export default function NotificationWithSVG( { id, @@ -77,6 +78,7 @@ export default function NotificationWithSVG( { { description } + { actions } Date: Fri, 3 Jan 2025 18:19:17 +0530 Subject: [PATCH 02/11] Add tests and story for error state. --- .../FirstPartyModeSetupBanner.stories.js | 53 ++++++++++++++++++- .../FirstPartyModeSetupBanner.test.js | 41 ++++++++++++++ 2 files changed, 93 insertions(+), 1 deletion(-) diff --git a/assets/js/components/notifications/FirstPartyModeSetupBanner.stories.js b/assets/js/components/notifications/FirstPartyModeSetupBanner.stories.js index 6487d580b30..29ee5397fcf 100644 --- a/assets/js/components/notifications/FirstPartyModeSetupBanner.stories.js +++ b/assets/js/components/notifications/FirstPartyModeSetupBanner.stories.js @@ -36,6 +36,7 @@ import { } from '../../googlesitekit/notifications/datastore/constants'; import { VIEW_CONTEXT_MAIN_DASHBOARD } from '../../googlesitekit/constants'; import { FPM_SETUP_CTA_BANNER_NOTIFICATION } from '../../googlesitekit/notifications/constants'; +import { CORE_SITE } from '../../googlesitekit/datastore/site/constants'; const NotificationWithComponentProps = withNotificationComponentProps( FPM_SETUP_CTA_BANNER_NOTIFICATION @@ -48,11 +49,59 @@ function Template() { export const Default = Template.bind(); Default.storyName = 'FirstPartyModeSetupBanner'; Default.scenario = {}; +Default.args = { + setupRegistry: () => { + fetchMock.post( + new RegExp( '^/google-site-kit/v1/core/site/data/fpm-settings' ), + { + body: JSON.stringify( { + isEnabled: true, + isFPMHealthy: true, + isScriptAccessEnabled: true, + } ), + status: 200, + } + ); + }, +}; + +export const ErrorOnCTAClick = Template.bind(); +ErrorOnCTAClick.storyName = 'ErrorOnCTAClick'; +ErrorOnCTAClick.scenario = {}; +ErrorOnCTAClick.args = { + setupRegistry: ( registry ) => { + fetchMock.post( + new RegExp( '^/google-site-kit/v1/core/site/data/fpm-settings' ), + { + body: JSON.stringify( { + code: 'test_error', + message: 'Test Error', + data: { + reason: 'test_reason', + }, + } ), + status: 500, + } + ); + + registry.dispatch( CORE_SITE ).receiveError( + { + code: 'test_error', + message: 'Test Error', + data: {}, + }, + 'notificationAction', + [ FPM_SETUP_CTA_BANNER_NOTIFICATION ] + ); + }, +}; export default { title: 'Modules/FirstPartyMode/Dashboard/FirstPartyModeSetupBanner', decorators: [ - ( Story ) => { + ( Story, { args } ) => { + fetchMock.restore(); + const setupRegistry = ( registry ) => { provideModules( registry, [ { @@ -87,6 +136,8 @@ export default { status: 200, } ); + + args.setupRegistry?.( registry ); }; return ( diff --git a/assets/js/components/notifications/FirstPartyModeSetupBanner.test.js b/assets/js/components/notifications/FirstPartyModeSetupBanner.test.js index f89fc038a9d..50de1b9a542 100644 --- a/assets/js/components/notifications/FirstPartyModeSetupBanner.test.js +++ b/assets/js/components/notifications/FirstPartyModeSetupBanner.test.js @@ -247,6 +247,47 @@ describe( 'FirstPartyModeSetupBanner', () => { } ); } ); + it( 'should display the error when CTA is clicked', async () => { + fetchMock.postOnce( fpmSettingsEndpoint, { + body: JSON.stringify( { + code: 'test_error', + message: 'Test Error', + data: { + reason: 'test_reason', + }, + } ), + status: 500, + } ); + + const { getByRole, getByText, waitForRegistry } = render( + , + { + registry, + viewContext: VIEW_CONTEXT_MAIN_DASHBOARD, + } + ); + + await waitForRegistry(); + + fetchMock.post( dismissItemEndpoint, { + body: JSON.stringify( [ FPM_SETUP_CTA_BANNER_NOTIFICATION ] ), + status: 200, + } ); + + fireEvent.click( + getByRole( 'button', { + name: 'Enable First-party mode', + } ) + ); + + await waitFor( () => { + expect( fetchMock ).toHaveFetched( fpmSettingsEndpoint ); + expect( fetchMock ).not.toHaveFetched( dismissItemEndpoint ); + } ); + + expect( getByText( 'Error: Test Error' ) ).toBeInTheDocument(); + } ); + it( 'should set FPM_SHOW_SETUP_SUCCESS_NOTIFICATION to true and invalidate the notifications queue resolution when the CTA button is clicked', async () => { const { getByRole, waitForRegistry } = render( , { registry, From 1ff11aacd19166543ebe6b390dce80c179d63800 Mon Sep 17 00:00:00 2001 From: Ankit Gade Date: Fri, 3 Jan 2025 19:20:30 +0530 Subject: [PATCH 03/11] Update VRT reference images. --- ...anner_ErrorOnCTAClick_0_document_0_small.png | Bin 0 -> 37991 bytes ...nner_ErrorOnCTAClick_0_document_1_medium.png | Bin 0 -> 40392 bytes ...anner_ErrorOnCTAClick_0_document_2_large.png | Bin 0 -> 57477 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/backstop/reference/google-site-kit_Modules_FirstPartyMode_Dashboard_FirstPartyModeSetupBanner_ErrorOnCTAClick_0_document_0_small.png create mode 100644 tests/backstop/reference/google-site-kit_Modules_FirstPartyMode_Dashboard_FirstPartyModeSetupBanner_ErrorOnCTAClick_0_document_1_medium.png create mode 100644 tests/backstop/reference/google-site-kit_Modules_FirstPartyMode_Dashboard_FirstPartyModeSetupBanner_ErrorOnCTAClick_0_document_2_large.png diff --git a/tests/backstop/reference/google-site-kit_Modules_FirstPartyMode_Dashboard_FirstPartyModeSetupBanner_ErrorOnCTAClick_0_document_0_small.png b/tests/backstop/reference/google-site-kit_Modules_FirstPartyMode_Dashboard_FirstPartyModeSetupBanner_ErrorOnCTAClick_0_document_0_small.png new file mode 100644 index 0000000000000000000000000000000000000000..713fb895238fbfbde5b1c0dac37e95977645831f GIT binary patch literal 37991 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 F0st_|=ZydW literal 0 HcmV?d00001 diff --git a/tests/backstop/reference/google-site-kit_Modules_FirstPartyMode_Dashboard_FirstPartyModeSetupBanner_ErrorOnCTAClick_0_document_1_medium.png b/tests/backstop/reference/google-site-kit_Modules_FirstPartyMode_Dashboard_FirstPartyModeSetupBanner_ErrorOnCTAClick_0_document_1_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6ad0b907fd3fb2ded369d7f9cde99053f8d98f GIT binary patch literal 40392 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 o5&mOF|1qQgn9={=%;?5UQ%p1mP3Px# literal 0 HcmV?d00001 From f1384a53643723358b161f7f94d501b2a4ab13f8 Mon Sep 17 00:00:00 2001 From: Ankit Gade Date: Tue, 7 Jan 2025 17:05:57 +0530 Subject: [PATCH 04/11] Add JS entry point for block editor. --- ...kit-reader-revenue-manager-block-editor.js | 17 ++++ includes/Modules/Reader_Revenue_Manager.php | 25 +++++- webpack.config.js | 4 + webpack/blockEditor.config.js | 89 +++++++++++++++++++ webpack/common.js | 4 +- 5 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 assets/js/googlesitekit-reader-revenue-manager-block-editor.js create mode 100644 webpack/blockEditor.config.js diff --git a/assets/js/googlesitekit-reader-revenue-manager-block-editor.js b/assets/js/googlesitekit-reader-revenue-manager-block-editor.js new file mode 100644 index 00000000000..cc450da9143 --- /dev/null +++ b/assets/js/googlesitekit-reader-revenue-manager-block-editor.js @@ -0,0 +1,17 @@ +/** + * Reader Revenue Manager module's block editor entrypoint. + * + * Site Kit by Google, Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/includes/Modules/Reader_Revenue_Manager.php b/includes/Modules/Reader_Revenue_Manager.php index c525a5892a7..902d3a2f8b0 100644 --- a/includes/Modules/Reader_Revenue_Manager.php +++ b/includes/Modules/Reader_Revenue_Manager.php @@ -11,6 +11,7 @@ namespace Google\Site_Kit\Modules; use Exception; +use Google\Site_Kit\Core\Assets\Asset; use Google\Site_Kit\Core\Assets\Script; use Google\Site_Kit\Core\Authentication\Clients\Google_Site_Kit_Client; use Google\Site_Kit\Core\Modules\Module; @@ -32,6 +33,7 @@ use Google\Site_Kit\Core\Site_Health\Debug_Data; use Google\Site_Kit\Core\Tags\Guards\Tag_Environment_Type_Guard; use Google\Site_Kit\Core\Tags\Guards\Tag_Verify_Guard; +use Google\Site_Kit\Core\Util\Feature_Flags; use Google\Site_Kit\Core\Util\URL; use Google\Site_Kit\Modules\Reader_Revenue_Manager\Settings; use Google\Site_Kit\Modules\Reader_Revenue_Manager\Synchronize_OnboardingState; @@ -383,7 +385,7 @@ function ( $url ) { protected function setup_assets() { $base_url = $this->context->url( 'dist/assets/' ); - return array( + $assets = array( new Script( 'googlesitekit-modules-reader-revenue-manager', array( @@ -400,6 +402,27 @@ protected function setup_assets() { ) ), ); + + if ( Feature_Flags::enabled( 'rrmModuleV2' ) ) { + $assets[] = new Script( + 'googlesitekit-reader-revenue-manager-block-editor.js', + array( + 'src' => $base_url . 'js/googlesitekit-reader-revenue-manager-block-editor.js', + 'dependencies' => array( + 'googlesitekit-data', + 'googlesitekit-i18n', + 'googlesitekit-modules', + 'wp-components', + 'wp-editor', + 'wp-element', + 'wp-plugins', + ), + 'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ), + ) + ); + } + + return $assets; } /** diff --git a/webpack.config.js b/webpack.config.js index 981f643ae03..fab7b57cc34 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -22,6 +22,7 @@ const { createRules } = require( './webpack/common' ); const adminCssConfig = require( './webpack/adminCss.config' ); const basicModulesConfig = require( './webpack/basicModules.config' ); +const blockEditorConfig = require( './webpack/blockEditor.config' ); const frontendModules = require( './webpack/frontendModules.config' ); const modulesConfig = require( './webpack/modules.config' ); const testBundleConfig = require( './webpack/testBundle.config' ); @@ -45,6 +46,9 @@ function* webpackConfig( env, argv ) { // Build modules that will be used on the frontend, that require wider browser support. yield frontendModules( mode ); + // Build the block editor js. + yield blockEditorConfig( mode ); + // Build the main plugin admin css. yield adminCssConfig( mode ); } diff --git a/webpack/blockEditor.config.js b/webpack/blockEditor.config.js new file mode 100644 index 00000000000..62e6d32b27e --- /dev/null +++ b/webpack/blockEditor.config.js @@ -0,0 +1,89 @@ +/** + * Block editor config webpack partial. + * + * Site Kit by Google, Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * External dependencies + */ +const CircularDependencyPlugin = require( 'circular-dependency-plugin' ); +const ESLintPlugin = require( 'eslint-webpack-plugin' ); +const ManifestPlugin = require( 'webpack-manifest-plugin' ); +const WebpackBar = require( 'webpackbar' ); + +/** + * Internal dependencies + */ +const { + rootDir, + manifestArgs, + resolve, + gutenbergExternals, + createRules, + createMinimizerRules, +} = require( './common' ); + +module.exports = ( mode ) => ( { + entry: { + 'googlesitekit-reader-revenue-manager-block-editor': + './assets/js/googlesitekit-reader-revenue-manager-block-editor.js', + }, + externals: gutenbergExternals, + output: { + filename: + mode === 'production' ? '[name]-[contenthash].js' : '[name].js', + path: rootDir + '/dist/assets/js', + publicPath: '', + // If multiple webpack runtimes (from different compilations) are used on the + // same webpage, there is a risk of conflicts of on-demand chunks in the global + // namespace. + // See: https://webpack.js.org/configuration/output/#outputjsonpfunction. + jsonpFunction: '__googlesitekit_block_editor_webpackJsonp', + }, + performance: { + maxEntrypointSize: 175000, + }, + module: { + rules: createRules( mode ), + }, + plugins: [ + new WebpackBar( { + name: 'Block Editor Entry Points', + color: '#deff13', + } ), + new CircularDependencyPlugin( { + exclude: /node_modules/, + failOnError: true, + allowAsyncCycles: false, + cwd: process.cwd(), + } ), + new ManifestPlugin( { + ...manifestArgs( mode ), + filter( file ) { + return ( file.name || '' ).match( /\.js$/ ); + }, + } ), + new ESLintPlugin( { + emitError: true, + emitWarning: true, + failOnError: true, + } ), + ], + optimization: { + minimizer: createMinimizerRules( mode ), + }, + resolve, +} ); diff --git a/webpack/common.js b/webpack/common.js index 057ab1663dc..a47f62f923d 100644 --- a/webpack/common.js +++ b/webpack/common.js @@ -285,11 +285,11 @@ const gutenbergExternals = { '@wordpress/i18n': [ 'googlesitekit', 'i18n' ], }; -exports.gutenbergExternals = gutenbergExternals; - corePackages.forEach( ( name ) => { gutenbergExternals[ `@wordpress-core/${ name }` ] = [ 'wp', name.replace( /-([a-z])/g, ( match, letter ) => letter.toUpperCase() ), ]; } ); + +exports.gutenbergExternals = gutenbergExternals; From e6b454a19201f0a901740f5e7a08771be7b7150b Mon Sep 17 00:00:00 2001 From: Ankit Gade Date: Tue, 7 Jan 2025 22:08:21 +0530 Subject: [PATCH 05/11] Add tests for script enqueue status. --- .../Modules/Reader_Revenue_ManagerTest.php | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php b/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php index bcf3d83e181..191895ee810 100644 --- a/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php +++ b/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php @@ -18,6 +18,7 @@ use Google\Site_Kit\Core\REST_API\Exception\Missing_Required_Param_Exception; use Google\Site_Kit\Core\Storage\Options; use Google\Site_Kit\Core\Storage\User_Options; +use Google\Site_Kit\Core\Util\Feature_Flags; use Google\Site_Kit\Core\Util\URL; use Google\Site_Kit\Modules\Reader_Revenue_Manager; use Google\Site_Kit\Modules\Reader_Revenue_Manager\Settings; @@ -486,6 +487,50 @@ public function test_check_service_entity_access_no_access_unavailable_publicati $this->assertEquals( false, $access ); } + public function test_block_editor_script_enqueued() { + Feature_Flags::set_features( + array( + 'rrmModuleV2', + ) + ); + add_filter( + 'googlesitekit_is_feature_enabled', + function ( $enabled, $feature_name ) { + return 'rrmModuleV2' === $feature_name; + }, + 10, + 2 + ); + + $registerable_scripts_with_feature = $this->reader_revenue_manager->get_assets(); + + $this->assertIsArray( $registerable_scripts_with_feature ); + + $rrm_block_editor_script = array_filter( + $registerable_scripts_with_feature, + function ( $script ) { + return 'googlesitekit-reader-revenue-manager-block-editor.js' === $script->get_handle(); + } + ); + + $this->assertNotEmpty( $rrm_block_editor_script ); + } + + public function test_block_editor_script_not_enqueued() { + $registerable_scripts_without_feature = $this->reader_revenue_manager->get_assets(); + + $this->assertIsArray( $registerable_scripts_without_feature ); + + $rrm_block_editor_script = array_filter( + $registerable_scripts_without_feature, + function ( $script ) { + return 'googlesitekit-reader-revenue-manager-block-editor.js' === $script->get_handle(); + } + ); + + $this->assertEmpty( $rrm_block_editor_script ); + } + /** * @return Module_With_Scopes */ From f7d5254a3eb852cd5898bb8f40132c7f8e17b856 Mon Sep 17 00:00:00 2001 From: Ankit Gade Date: Fri, 10 Jan 2025 13:23:31 +0530 Subject: [PATCH 06/11] Address CR feedback. --- includes/Modules/Reader_Revenue_Manager.php | 12 +---- .../Modules/Reader_Revenue_ManagerTest.php | 52 +++++++------------ webpack/blockEditor.config.js | 8 --- webpack/common.js | 4 +- webpack/modules.config.js | 2 +- 5 files changed, 23 insertions(+), 55 deletions(-) diff --git a/includes/Modules/Reader_Revenue_Manager.php b/includes/Modules/Reader_Revenue_Manager.php index 902d3a2f8b0..75a4c558e59 100644 --- a/includes/Modules/Reader_Revenue_Manager.php +++ b/includes/Modules/Reader_Revenue_Manager.php @@ -405,18 +405,10 @@ protected function setup_assets() { if ( Feature_Flags::enabled( 'rrmModuleV2' ) ) { $assets[] = new Script( - 'googlesitekit-reader-revenue-manager-block-editor.js', + 'googlesitekit-reader-revenue-manager-block-editor', array( 'src' => $base_url . 'js/googlesitekit-reader-revenue-manager-block-editor.js', - 'dependencies' => array( - 'googlesitekit-data', - 'googlesitekit-i18n', - 'googlesitekit-modules', - 'wp-components', - 'wp-editor', - 'wp-element', - 'wp-plugins', - ), + 'dependencies' => array(), 'load_contexts' => array( Asset::CONTEXT_ADMIN_POST_EDITOR ), ) ); diff --git a/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php b/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php index 191895ee810..fe76062022f 100644 --- a/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php +++ b/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php @@ -18,7 +18,6 @@ use Google\Site_Kit\Core\REST_API\Exception\Missing_Required_Param_Exception; use Google\Site_Kit\Core\Storage\Options; use Google\Site_Kit\Core\Storage\User_Options; -use Google\Site_Kit\Core\Util\Feature_Flags; use Google\Site_Kit\Core\Util\URL; use Google\Site_Kit\Modules\Reader_Revenue_Manager; use Google\Site_Kit\Modules\Reader_Revenue_Manager\Settings; @@ -488,47 +487,32 @@ public function test_check_service_entity_access_no_access_unavailable_publicati } public function test_block_editor_script_enqueued() { - Feature_Flags::set_features( - array( - 'rrmModuleV2', - ) - ); - add_filter( - 'googlesitekit_is_feature_enabled', - function ( $enabled, $feature_name ) { - return 'rrmModuleV2' === $feature_name; + $this->enable_feature( 'rrmModuleV2' ); + + $registerable_asset_handles = array_map( + function ( $asset ) { + return $asset->get_handle(); }, - 10, - 2 + $this->reader_revenue_manager->get_assets() ); - - $registerable_scripts_with_feature = $this->reader_revenue_manager->get_assets(); - - $this->assertIsArray( $registerable_scripts_with_feature ); - - $rrm_block_editor_script = array_filter( - $registerable_scripts_with_feature, - function ( $script ) { - return 'googlesitekit-reader-revenue-manager-block-editor.js' === $script->get_handle(); - } + $this->assertContains( + 'googlesitekit-reader-revenue-manager-block-editor', + $registerable_asset_handles ); - - $this->assertNotEmpty( $rrm_block_editor_script ); } public function test_block_editor_script_not_enqueued() { - $registerable_scripts_without_feature = $this->reader_revenue_manager->get_assets(); - - $this->assertIsArray( $registerable_scripts_without_feature ); - - $rrm_block_editor_script = array_filter( - $registerable_scripts_without_feature, - function ( $script ) { - return 'googlesitekit-reader-revenue-manager-block-editor.js' === $script->get_handle(); - } + $registerable_asset_handles = array_map( + function ( $asset ) { + return $asset->get_handle(); + }, + $this->reader_revenue_manager->get_assets() ); - $this->assertEmpty( $rrm_block_editor_script ); + $this->assertNotContains( + 'googlesitekit-reader-revenue-manager-block-editor', + $registerable_asset_handles + ); } /** diff --git a/webpack/blockEditor.config.js b/webpack/blockEditor.config.js index 62e6d32b27e..9fa60762fc7 100644 --- a/webpack/blockEditor.config.js +++ b/webpack/blockEditor.config.js @@ -47,14 +47,6 @@ module.exports = ( mode ) => ( { mode === 'production' ? '[name]-[contenthash].js' : '[name].js', path: rootDir + '/dist/assets/js', publicPath: '', - // If multiple webpack runtimes (from different compilations) are used on the - // same webpage, there is a risk of conflicts of on-demand chunks in the global - // namespace. - // See: https://webpack.js.org/configuration/output/#outputjsonpfunction. - jsonpFunction: '__googlesitekit_block_editor_webpackJsonp', - }, - performance: { - maxEntrypointSize: 175000, }, module: { rules: createRules( mode ), diff --git a/webpack/common.js b/webpack/common.js index a47f62f923d..057ab1663dc 100644 --- a/webpack/common.js +++ b/webpack/common.js @@ -285,11 +285,11 @@ const gutenbergExternals = { '@wordpress/i18n': [ 'googlesitekit', 'i18n' ], }; +exports.gutenbergExternals = gutenbergExternals; + corePackages.forEach( ( name ) => { gutenbergExternals[ `@wordpress-core/${ name }` ] = [ 'wp', name.replace( /-([a-z])/g, ( match, letter ) => letter.toUpperCase() ), ]; } ); - -exports.gutenbergExternals = gutenbergExternals; diff --git a/webpack/modules.config.js b/webpack/modules.config.js index 8f69abe4758..f34576c4138 100644 --- a/webpack/modules.config.js +++ b/webpack/modules.config.js @@ -117,7 +117,7 @@ module.exports = ( mode, rules, ANALYZE ) => { // If multiple webpack runtimes (from different compilations) are used on the // same webpage, there is a risk of conflicts of on-demand chunks in the global // namespace. - // See: https://webpack.js.org/configuration/output/#outputjsonpfunction. + // See: https://v4.webpack.js.org/configuration/output/#outputjsonpfunction. jsonpFunction: '__googlesitekit_webpackJsonp', }, performance: { From 7a7d72cac2f65b67713d9b14ef3084d269ee0585 Mon Sep 17 00:00:00 2001 From: Hussain Thajutheen Date: Fri, 10 Jan 2025 16:43:45 +0530 Subject: [PATCH 07/11] Reorder imports. --- .../js/googlesitekit/notifications/components/common/CTALink.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/googlesitekit/notifications/components/common/CTALink.js b/assets/js/googlesitekit/notifications/components/common/CTALink.js index c96fc6a0fc0..1440a8241a8 100644 --- a/assets/js/googlesitekit/notifications/components/common/CTALink.js +++ b/assets/js/googlesitekit/notifications/components/common/CTALink.js @@ -31,9 +31,9 @@ import { useState } from '@wordpress/element'; import { useDispatch, useSelect } from 'googlesitekit-data'; import { CORE_NOTIFICATIONS } from '../../datastore/constants'; import { CORE_LOCATION } from '../../../datastore/location/constants'; +import { CORE_SITE } from '../../../datastore/site/constants'; import useNotificationEvents from '../../hooks/useNotificationEvents'; import { SpinnerButton } from 'googlesitekit-components'; -import { CORE_SITE } from '../../../datastore/site/constants'; export default function CTALink( { id, From 4cf1daedb6c5a493139f2ebebece1c2a8190b4c3 Mon Sep 17 00:00:00 2001 From: Hussain Thajutheen Date: Fri, 10 Jan 2025 16:43:58 +0530 Subject: [PATCH 08/11] Fix year in the headers. --- .../js/googlesitekit/notifications/components/common/Error.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/googlesitekit/notifications/components/common/Error.js b/assets/js/googlesitekit/notifications/components/common/Error.js index e9475db98c7..89a5bc7d0cc 100644 --- a/assets/js/googlesitekit/notifications/components/common/Error.js +++ b/assets/js/googlesitekit/notifications/components/common/Error.js @@ -1,5 +1,5 @@ /** - * Site Kit by Google, Copyright 2024 Google LLC + * Site Kit by Google, Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From a50e276a8ae6fedda6183412fa2f88269df6adc9 Mon Sep 17 00:00:00 2001 From: Hussain Thajutheen Date: Fri, 10 Jan 2025 17:49:14 +0530 Subject: [PATCH 09/11] Improve test case title. --- .../components/notifications/FirstPartyModeSetupBanner.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/components/notifications/FirstPartyModeSetupBanner.test.js b/assets/js/components/notifications/FirstPartyModeSetupBanner.test.js index 50de1b9a542..2675daa19c2 100644 --- a/assets/js/components/notifications/FirstPartyModeSetupBanner.test.js +++ b/assets/js/components/notifications/FirstPartyModeSetupBanner.test.js @@ -247,7 +247,7 @@ describe( 'FirstPartyModeSetupBanner', () => { } ); } ); - it( 'should display the error when CTA is clicked', async () => { + it( 'should display the error message when the CTA button is clicked and the request fails', async () => { fetchMock.postOnce( fpmSettingsEndpoint, { body: JSON.stringify( { code: 'test_error', From b48a6cee7bbfb1d99293a2a208fb9ba606f37763 Mon Sep 17 00:00:00 2001 From: Hussain Thajutheen Date: Fri, 10 Jan 2025 17:50:28 +0530 Subject: [PATCH 10/11] Clean up stories and remove unnecessary mocks. --- .../FirstPartyModeSetupBanner.stories.js | 33 +------------------ 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/assets/js/components/notifications/FirstPartyModeSetupBanner.stories.js b/assets/js/components/notifications/FirstPartyModeSetupBanner.stories.js index 29ee5397fcf..7788c23e7d8 100644 --- a/assets/js/components/notifications/FirstPartyModeSetupBanner.stories.js +++ b/assets/js/components/notifications/FirstPartyModeSetupBanner.stories.js @@ -26,6 +26,7 @@ import fetchMock from 'fetch-mock'; */ import { provideModules } from '../../../../tests/js/utils'; import WithRegistrySetup from '../../../../tests/js/WithRegistrySetup'; +import { CORE_SITE } from '../../googlesitekit/datastore/site/constants'; import { CORE_USER } from '../../googlesitekit/datastore/user/constants'; import { withNotificationComponentProps } from '../../googlesitekit/notifications/util/component-props'; import { WEEK_IN_SECONDS } from '../../util'; @@ -36,7 +37,6 @@ import { } from '../../googlesitekit/notifications/datastore/constants'; import { VIEW_CONTEXT_MAIN_DASHBOARD } from '../../googlesitekit/constants'; import { FPM_SETUP_CTA_BANNER_NOTIFICATION } from '../../googlesitekit/notifications/constants'; -import { CORE_SITE } from '../../googlesitekit/datastore/site/constants'; const NotificationWithComponentProps = withNotificationComponentProps( FPM_SETUP_CTA_BANNER_NOTIFICATION @@ -49,41 +49,12 @@ function Template() { export const Default = Template.bind(); Default.storyName = 'FirstPartyModeSetupBanner'; Default.scenario = {}; -Default.args = { - setupRegistry: () => { - fetchMock.post( - new RegExp( '^/google-site-kit/v1/core/site/data/fpm-settings' ), - { - body: JSON.stringify( { - isEnabled: true, - isFPMHealthy: true, - isScriptAccessEnabled: true, - } ), - status: 200, - } - ); - }, -}; export const ErrorOnCTAClick = Template.bind(); ErrorOnCTAClick.storyName = 'ErrorOnCTAClick'; ErrorOnCTAClick.scenario = {}; ErrorOnCTAClick.args = { setupRegistry: ( registry ) => { - fetchMock.post( - new RegExp( '^/google-site-kit/v1/core/site/data/fpm-settings' ), - { - body: JSON.stringify( { - code: 'test_error', - message: 'Test Error', - data: { - reason: 'test_reason', - }, - } ), - status: 500, - } - ); - registry.dispatch( CORE_SITE ).receiveError( { code: 'test_error', @@ -100,8 +71,6 @@ export default { title: 'Modules/FirstPartyMode/Dashboard/FirstPartyModeSetupBanner', decorators: [ ( Story, { args } ) => { - fetchMock.restore(); - const setupRegistry = ( registry ) => { provideModules( registry, [ { From 089868f239ed4c7c690ab9d1508c7618af594be9 Mon Sep 17 00:00:00 2001 From: Tom Rees-Herdman Date: Fri, 10 Jan 2025 16:16:39 +0000 Subject: [PATCH 11/11] Add whitespace. --- tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php b/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php index fe76062022f..1315ba143cd 100644 --- a/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php +++ b/tests/phpunit/integration/Modules/Reader_Revenue_ManagerTest.php @@ -495,6 +495,7 @@ function ( $asset ) { }, $this->reader_revenue_manager->get_assets() ); + $this->assertContains( 'googlesitekit-reader-revenue-manager-block-editor', $registerable_asset_handles