Skip to content

Commit

Permalink
Rest API: rename navigation fallback classes from WP_ to Gutenberg_ (#…
Browse files Browse the repository at this point in the history
…51959)

* The `WP_REST_Navigation_Fallback_Controller` class has been committed to core and therefore results in a naming conflict and unit test failures.
Ideally `WP_REST_Navigation_Fallback_Controller` should have been named `WP_REST_Navigation_Fallback_Controller_Gutenberg` and extended `WP_REST_Navigation_Fallback_Controller`.
But we can conditionally load the file instead.

* Renamed WP_Classic_To_Block_Menu_Converter to Gutenberg_Classic_To_Block_Menu_Converter
Load WP_REST_Navigation_Fallback_Controller dependencies in load.php

* Renamed all 6.3 classes to have the Gutenberg_ prefix. This should avoid compat errors and hopefully some confusion later.

* Also rename test files for completeness

* Updated deprecation notices to refer to Gutenberg classes
  • Loading branch information
ramonjd committed Jun 28, 2023
1 parent 4f3599d commit 51c953b
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 54 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* WP_Classic_To_Block_Menu_Converter class
* Gutenberg_Classic_To_Block_Menu_Converter class
*
* @package gutenberg
* @since 6.3.0
Expand All @@ -11,7 +11,7 @@
*
* @access public
*/
class WP_Classic_To_Block_Menu_Converter {
class Gutenberg_Classic_To_Block_Menu_Converter {

/**
* Converts a Classic Menu to blocks.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* WP_Navigation_Fallback_Gutenberg class
* Gutenberg_Navigation_Fallback class
*
* Manages fallback behavior for Navigation menus.
*
Expand All @@ -9,17 +9,12 @@
* @since 6.3.0
*/

/**
* Import dependencies.
*/
require __DIR__ . '/class-wp-classic-to-block-menu-converter.php';

/**
* Manages fallback behavior for Navigation menus.
*
* @access public
*/
class WP_Navigation_Fallback_Gutenberg {
class Gutenberg_Navigation_Fallback {

/**
* Gets (and/or creates) an appropriate fallback Navigation Menu.
Expand Down Expand Up @@ -92,7 +87,7 @@ private static function create_classic_menu_fallback() {
}

// If there is a classic menu then convert it to blocks.
$classic_nav_menu_blocks = WP_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu );
$classic_nav_menu_blocks = Gutenberg_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu );

if ( empty( $classic_nav_menu_blocks ) ) {
return new WP_Error( 'cannot_convert_classic_menu', __( 'Unable to convert Classic Menu to blocks.', 'gutenberg' ) );
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* WP_REST_Navigation_Fallback_Controller class
* Gutenberg_REST_Navigation_Fallback_Controller class
*
* REST Controller to create/fetch a fallback Navigation Menu.
*
Expand All @@ -9,15 +9,10 @@
* @since 6.3.0
*/

/**
* Import dependencies.
*/
require __DIR__ . '/class-wp-navigation-fallback-gutenberg.php';

/**
* REST Controller to fetch a fallback Navigation Block Menu. If needed it creates one.
*/
class WP_REST_Navigation_Fallback_Controller extends WP_REST_Controller {
class Gutenberg_REST_Navigation_Fallback_Controller extends WP_REST_Controller {

/**
* The Post Type for the Controller
Expand Down Expand Up @@ -98,7 +93,7 @@ public function get_item_permissions_check( $request ) {
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$post = WP_Navigation_Fallback_Gutenberg::get_fallback();
$post = Gutenberg_Navigation_Fallback::get_fallback();

if ( empty( $post ) ) {
return rest_ensure_response( new WP_Error( 'no_fallback_menu', __( 'No fallback menu found.', 'gutenberg' ), array( 'status' => 404 ) ) );
Expand Down
10 changes: 10 additions & 0 deletions lib/compat/wordpress-6.3/rest-api.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,13 @@ function gutenberg_register_rest_block_patterns() {
$block_patterns->register_routes();
}
add_action( 'rest_api_init', 'gutenberg_register_rest_block_patterns' );


/**
* Registers the Navigation Fallbacks REST API routes.
*/
function gutenberg_register_rest_navigation_fallbacks() {
$editor_settings = new Gutenberg_REST_Navigation_Fallback_Controller();
$editor_settings->register_routes();
}
add_action( 'rest_api_init', 'gutenberg_register_rest_navigation_fallbacks' );
10 changes: 0 additions & 10 deletions lib/experimental/rest-api.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,6 @@ function gutenberg_register_block_editor_settings() {
add_action( 'rest_api_init', 'gutenberg_register_block_editor_settings' );


/**
* Registers the Navigation Fallbacks REST API routes.
*/
function gutenberg_register_rest_navigation_fallbacks() {
$editor_settings = new WP_REST_Navigation_Fallback_Controller();
$editor_settings->register_routes();
}
add_action( 'rest_api_init', 'gutenberg_register_rest_navigation_fallbacks' );


/**
* Shim for get_sample_permalink() to add support for auto-draft status.
*
Expand Down
4 changes: 3 additions & 1 deletion lib/load.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ function gutenberg_is_experiment_enabled( $name ) {
require_once __DIR__ . '/compat/wordpress-6.3/class-gutenberg-rest-templates-controller-6-3.php';
require_once __DIR__ . '/compat/wordpress-6.3/class-gutenberg-rest-global-styles-controller-6-3.php';
require_once __DIR__ . '/compat/wordpress-6.3/class-gutenberg-rest-global-styles-revisions-controller-6-3.php';
require_once __DIR__ . '/compat/wordpress-6.3/class-wp-rest-navigation-fallback-controller.php';
require_once __DIR__ . '/compat/wordpress-6.3/class-gutenberg-classic-to-block-menu-converter.php';
require_once __DIR__ . '/compat/wordpress-6.3/class-gutenberg-navigation-fallback.php';
require_once __DIR__ . '/compat/wordpress-6.3/class-gutenberg-rest-navigation-fallback-controller.php';
require_once __DIR__ . '/compat/wordpress-6.3/rest-api.php';
require_once __DIR__ . '/compat/wordpress-6.3/theme-previews.php';
require_once __DIR__ . '/compat/wordpress-6.3/navigation-block-preloading.php';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
<?php
/**
* Tests WP_Classic_To_Block_Menu_Converter_Test
* Tests Gutenberg_Classic_To_Block_Menu_Converter
*
* @package WordPress
*/

/**
* Tests for the WP_Classic_To_Block_Menu_Converter_Test class.
* Tests for the Gutenberg_Classic_To_Block_Menu_Converter_Test class.
*/
class WP_Classic_To_Block_Menu_Converter_Test extends WP_UnitTestCase {
class Gutenberg_Classic_To_Block_Menu_Converter_Test extends WP_UnitTestCase {

/**
* @covers WP_Classic_To_Block_Menu_Converter::get_fallback
*/
public function test_class_exists() {
$this->assertTrue( class_exists( 'WP_Classic_To_Block_Menu_Converter' ) );
$this->assertTrue( class_exists( 'Gutenberg_Classic_To_Block_Menu_Converter' ) );
}

/**
Expand All @@ -23,7 +23,7 @@ public function test_class_exists() {
*/
public function test_passing_non_menu_object_to_converter_returns_wp_error( $data ) {

$result = WP_Classic_To_Block_Menu_Converter::convert( $data );
$result = Gutenberg_Classic_To_Block_Menu_Converter::convert( $data );

$this->assertTrue( is_wp_error( $result ), 'Should be a WP_Error instance' );

Expand Down Expand Up @@ -88,7 +88,7 @@ public function test_can_convert_classic_menu_to_blocks() {

$classic_nav_menu = wp_get_nav_menu_object( $menu_id );

$blocks = WP_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu );
$blocks = Gutenberg_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu );

$this->assertNotEmpty( $blocks );

Expand Down Expand Up @@ -179,7 +179,7 @@ public function test_does_not_convert_menu_items_with_non_publish_status() {

$classic_nav_menu = wp_get_nav_menu_object( $menu_id );

$blocks = WP_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu );
$blocks = Gutenberg_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu );

$this->assertNotEmpty( $blocks );

Expand All @@ -204,7 +204,7 @@ public function test_returns_empty_array_for_menus_with_no_items() {

$classic_nav_menu = wp_get_nav_menu_object( $menu_id );

$blocks = WP_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu );
$blocks = Gutenberg_Classic_To_Block_Menu_Converter::convert( $classic_nav_menu );

$this->assertEmpty( $blocks, 'Result should be empty.' );

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<?php
/**
* Tests WP_Navigation_Fallback_Gutenberg
* Tests Gutenberg_Navigation_Fallback
*
* @package WordPress
*/

/**
* Tests for the WP_Navigation_Fallback_Gutenberg class.
* Tests for the Gutenberg_Navigation_Fallback class.
*/
class WP_Navigation_Fallback_Gutenberg_Test extends WP_UnitTestCase {
class Gutenberg_Navigation_Fallback_Test extends WP_UnitTestCase {

protected static $admin_user;
protected static $editor_user;
Expand All @@ -29,15 +29,15 @@ public function set_up() {
* @covers WP_REST_Navigation_Fallback_Controller
*/
public function test_it_exists() {
$this->assertTrue( class_exists( 'WP_Navigation_Fallback_Gutenberg' ), 'WP_Navigation_Fallback_Gutenberg class should exist.' );
$this->assertTrue( class_exists( 'Gutenberg_Navigation_Fallback' ), 'Gutenberg_Navigation_Fallback class should exist.' );
}


/**
* @covers WP_REST_Navigation_Fallback_Controller::get_fallback
*/
public function test_should_return_a_default_fallback_navigation_menu_in_absence_of_other_fallbacks() {
$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand All @@ -63,7 +63,7 @@ public function test_should_return_a_default_fallback_navigation_menu_with_no_bl

unregister_block_type( 'core/page-list' );

$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand All @@ -79,11 +79,11 @@ public function test_should_return_a_default_fallback_navigation_menu_with_no_bl
*/
public function test_should_handle_consecutive_invocations() {
// Invoke the method multiple times to ensure that it doesn't create a new fallback menu on each invocation.
WP_Navigation_Fallback_Gutenberg::get_fallback();
WP_Navigation_Fallback_Gutenberg::get_fallback();
Gutenberg_Navigation_Fallback::get_fallback();
Gutenberg_Navigation_Fallback::get_fallback();

// Assert on the final invocation.
$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand Down Expand Up @@ -115,7 +115,7 @@ public function test_should_return_the_most_recently_created_navigation_menu() {
)
);

$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand Down Expand Up @@ -147,7 +147,7 @@ public function test_should_return_fallback_navigation_from_existing_classic_men
)
);

$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand Down Expand Up @@ -201,7 +201,7 @@ public function test_should_prioritise_fallback_to_classic_menu_in_primary_locat
$locations['header'] = $another_menu_id;
set_theme_mod( 'nav_menu_locations', $locations );

$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand Down Expand Up @@ -238,7 +238,7 @@ public function test_should_fallback_to_classic_menu_with_primary_slug() {
)
);

$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand Down Expand Up @@ -275,7 +275,7 @@ public function test_should_fallback_to_most_recently_created_classic_menu() {
)
);

$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand Down Expand Up @@ -306,7 +306,7 @@ public function test_should_not_create_fallback_from_classic_menu_if_a_navigatio
)
);

$data = WP_Navigation_Fallback_Gutenberg::get_fallback();
$data = Gutenberg_Navigation_Fallback::get_fallback();

$this->assertInstanceOf( 'WP_Post', $data, 'Response should be of the correct type.' );

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php
/**
* Unit tests covering WP_REST_Navigation_Fallback_Controller functionality.
* Unit tests covering Gutenberg_REST_Navigation_Fallback_Controller functionality.
*
* Note: that these tests are designed to provide high level coverage only. The majority of the tests
* are made directly against the WP_Navigation_Fallback_Gutenberg class as this:
Expand All @@ -16,7 +16,7 @@
* @group restapi
* @group navigation
*/
class WP_REST_Navigation_Fallback_Controller_Test extends WP_Test_REST_Controller_Testcase {
class Gutenberg_REST_Navigation_Fallback_Controller_Test extends WP_Test_REST_Controller_Testcase {

protected static $admin_user;
protected static $editor_user;
Expand Down

0 comments on commit 51c953b

Please sign in to comment.