Merge pull request #29 from kristianwind/menu-assert-and-bump
CI / Static checks (push) Successful in 40s
CI / WordPress latest + WooCommerce latest on PHP 8.3 (push) Successful in 1m4s

Assert the page really lands under the Nolimit menu, and bump to 1.5.0
This commit is contained in:
Kristian Wind
2026-09-20 07:53:27 +02:00
committed by GitHub
3 changed files with 52 additions and 3 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ Tags: woocommerce, discount, email, shipping, coupon
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.4.6
Stable tag: 1.5.0
WC requires at least: 6.0
WC tested up to: 11.1.0
License: GPLv2 or later
+49
View File
@@ -238,6 +238,55 @@ wc_edm_is(
apply_filters( 'wpmgr_menu_title', 'Manager' )
);
// The filter above proves this plugin CLAIMS the label. It does not prove the
// page is registered under that parent, and those are different failures: the
// menu said Nolimit while this plugin was still absent from it.
//
// Loaded and invoked by hand because the admin menu is only built in an admin
// request and these run under WP-CLI, where is_admin() is false and
// class-admin.php is therefore never included. That makes this a reduced
// repro, so it asserts the loading half separately below rather than trusting
// that the by-hand path matches the real one.
require_once ABSPATH . 'wp-admin/includes/plugin.php';
require_once WC_EDM_PLUGIN_DIR . 'includes/shared-menu.php';
require_once WC_EDM_PLUGIN_DIR . 'includes/class-admin.php';
wp_set_current_user( 1 );
global $menu, $submenu, $admin_page_hooks;
$menu = array();
$submenu = array();
$admin_page_hooks = array();
$wc_edm_admin = new WC_EDM_Admin();
$wc_edm_admin->register_menu();
wc_edm_ok(
'the parent Nolimit menu exists',
isset( $admin_page_hooks[ WPMGR_MENU_SLUG ] ),
'wpmgr_ensure_menu() did not register it'
);
$wc_edm_pages = isset( $submenu[ WPMGR_MENU_SLUG ] )
? wp_list_pluck( $submenu[ WPMGR_MENU_SLUG ], 2 )
: array();
wc_edm_ok(
'and this plugin has a page under it',
in_array( WC_EDM_Admin::PAGE_SLUG, $wc_edm_pages, true ),
'pages found: ' . ( $wc_edm_pages ? implode( ', ', $wc_edm_pages ) : 'none' )
);
// The other half: the by-hand require above would pass even if the plugin
// never loaded the file in a real admin request. This is the assertion that
// covers that, and it is the half a reduced repro always omits.
wc_edm_ok(
'and the plugin itself loads the shared menu file in admin',
false !== strpos(
file_get_contents( WC_EDM_PLUGIN_FILE ),
"'includes/shared-menu.php',"
),
'it is not in the is_admin() branch of includes(), so nothing would define wpmgr_ensure_menu()'
);
// includes/shared-menu.php is byte-identical in all five plugins, and which
// copy a site loads is decided by activation order. Editing it here would make
// a site with three of five updated show one label or another depending on who
+2 -2
View File
@@ -4,7 +4,7 @@
* Plugin URI: https://gitea.nolimit.dk/kw/woo-discount-manager
* Update URI: https://gitea.nolimit.dk/kw/nolimit-discounts-dist
* Description: Apply discounts and show/hide shipping methods based on the customer's email address (full address, domain or partial match).
* Version: 1.4.6
* Version: 1.5.0
* Author: Kristian Wind
* Author URI: https://gitea.nolimit.dk/kw
* License: GPL-2.0-or-later
@@ -28,7 +28,7 @@ if ( ! defined( 'ABSPATH' ) ) {
exit;
}
define( 'WC_EDM_VERSION', '1.4.6' );
define( 'WC_EDM_VERSION', '1.5.0' );
define( 'WC_EDM_PLUGIN_FILE', __FILE__ );
define( 'WC_EDM_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'WC_EDM_PLUGIN_URL', plugin_dir_url( __FILE__ ) );