Skip to content

Tests: Cover wp_parse_widget_id(). - #14780

Open
ekamran wants to merge 1 commit into
WordPress:trunkfrom
ekamran:shifteq/test-wp-parse-widget-id
Open

ekamran wants to merge 1 commit into
WordPress:trunkfrom
ekamran:shifteq/test-wp-parse-widget-id

Conversation

@ekamran

@ekamran ekamran commented Oct 23, 2026

Copy link
Copy Markdown

Adds unit tests for wp_parse_widget_id() in tests/phpunit/tests/widgets/wpParseWidgetId.php. The function splits a widget ID such as recent-posts-12 into its id_base and number, is used by the REST API widgets and widget types controllers, and had no dedicated tests.

Trac ticket: https://core.trac.wordpress.org/ticket/65819

What the tests cover

  • An ID that ends in a number is split at the last hyphen: text-2, recent-posts-12, nav_menu-5, and text-2-3, where the id_base itself ends in a number.
  • The number is returned as an integer, including 0 and a leading zero (text-02 gives 2).
  • An ID without a trailing number is returned as the id_base only, with no number key: archives, text-, text-2a, -2 and 2.

Test-only change.

Testing

npm run test:php -- --filter Tests_Widgets_WpParseWidgetId

All 11 test cases pass. Breaking the function in eight ways, such as removing the end anchor or the integer cast, or making the digits optional, makes 1 to 6 of them fail each time.

Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code and Codex
Used for: Choosing the function, writing the tests, checking them against the function's real output, and auditing the tests and this description. I reviewed the tests and the results, and I take responsibility for the contribution.


This Pull Request is for code review only. Please keep all other discussion in the Trac ticket. Do not merge this Pull Request. See GitHub Pull Requests for Code Review in the Core Handbook for more details.

Add coverage for widget IDs that end in a number, including hyphenated
and underscored id_base values, an id_base that ends in a number, zero
and a leading zero, and for IDs without a trailing number, which are
returned as the id_base only.

See #65819.
@github-actions

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs.

Core Committers: Use this line as a base for the props when committing in SVN:

Props ekamran.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.


Props Bot commands

You can trigger Props Bot actions by commenting on this PR:

  • @propsbot add <username> to give props to a GitHub user. Requires write access.
  • @propsbot remove <username> to leave a user out of the props. Requires write access.
  • @propsbot refresh to refresh this list. Adding the props-bot label works too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant