From 182c68bc25b6e115b232d1a71a53e44341e546d3 Mon Sep 17 00:00:00 2001 From: priethor <27339341+priethor@users.noreply.github.com> Date: Fri, 5 Dec 2025 00:02:07 -0800 Subject: [PATCH 1/3] Add abilities for Options Pages --- .../class-scf-abilities-integration.php | 1 + .../class-scf-ui-options-page-abilities.php | 40 +++++++++++++++++++ includes/class-scf-json-schema-validator.php | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 includes/abilities/class-scf-ui-options-page-abilities.php diff --git a/includes/abilities/class-scf-abilities-integration.php b/includes/abilities/class-scf-abilities-integration.php index b25e6b1f..d7e6f573 100644 --- a/includes/abilities/class-scf-abilities-integration.php +++ b/includes/abilities/class-scf-abilities-integration.php @@ -42,6 +42,7 @@ public function init() { acf_include( 'includes/abilities/class-scf-internal-post-type-abilities.php' ); acf_include( 'includes/abilities/class-scf-post-type-abilities.php' ); acf_include( 'includes/abilities/class-scf-taxonomy-abilities.php' ); + acf_include( 'includes/abilities/class-scf-ui-options-page-abilities.php' ); } /** diff --git a/includes/abilities/class-scf-ui-options-page-abilities.php b/includes/abilities/class-scf-ui-options-page-abilities.php new file mode 100644 index 00000000..26eb2626 --- /dev/null +++ b/includes/abilities/class-scf-ui-options-page-abilities.php @@ -0,0 +1,40 @@ + Date: Fri, 5 Dec 2025 00:03:16 -0800 Subject: [PATCH 2/3] Add tests --- .../class-scf-ui-options-page-abilities.php | 1 + tests/e2e/abilities-internal-post-types.spec.ts | 17 ++++++++++++++--- .../test-scf-internal-post-type-abilities.php | 4 ++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/includes/abilities/class-scf-ui-options-page-abilities.php b/includes/abilities/class-scf-ui-options-page-abilities.php index 26eb2626..492d9d80 100644 --- a/includes/abilities/class-scf-ui-options-page-abilities.php +++ b/includes/abilities/class-scf-ui-options-page-abilities.php @@ -6,6 +6,7 @@ * * @package wordpress/secure-custom-fields * @since 6.8.0 + * @codeCoverageIgnore Base class is tested. */ // Exit if accessed directly. diff --git a/tests/e2e/abilities-internal-post-types.spec.ts b/tests/e2e/abilities-internal-post-types.spec.ts index 70599f30..4ad8283f 100644 --- a/tests/e2e/abilities-internal-post-types.spec.ts +++ b/tests/e2e/abilities-internal-post-types.spec.ts @@ -1,8 +1,8 @@ /** - * E2E tests for SCF Internal Post Type Abilities (Post Types and Taxonomies) + * E2E tests for SCF Internal Post Type Abilities (Post Types, Taxonomies, and UI Options Pages) * - * Tests the WordPress Abilities API endpoints for SCF post type and taxonomy management. - * Both entity types share the same base class, so tests are parameterized. + * Tests the WordPress Abilities API endpoints for SCF internal post type management. + * All entity types share the same base class, so tests are parameterized. * * HTTP Method Reference: * - Read-only abilities (readonly: true) → GET with bracket notation: { 'input[key]': value } @@ -43,6 +43,17 @@ const ENTITY_TYPES = [ taxonomy: 'e2e_test_tax', }, }, + { + name: 'UI Options Page', + slug: 'ui-options-page', + slugPlural: 'ui-options-pages', + identifierKey: 'menu_slug', + testEntity: { + key: 'ui_options_page_e2e_test', + title: 'E2E Test Options Page', + menu_slug: 'e2e-test-options', + }, + }, ]; // Shared helper functions diff --git a/tests/php/includes/abilities/test-scf-internal-post-type-abilities.php b/tests/php/includes/abilities/test-scf-internal-post-type-abilities.php index da7d210e..b65f3ac2 100644 --- a/tests/php/includes/abilities/test-scf-internal-post-type-abilities.php +++ b/tests/php/includes/abilities/test-scf-internal-post-type-abilities.php @@ -13,10 +13,10 @@ // Load mock Abilities API functions before loading the class. require_once __DIR__ . '/abilities-api-mocks.php'; -// Load ACF internal post type class to register the taxonomy instance. +// Load ACF_Taxonomy class required by SCF_Taxonomy_Abilities. require_once dirname( __DIR__, 4 ) . '/includes/post-types/class-acf-taxonomy.php'; -// Load the abilities classes after ACF classes are loaded. +// Load abilities classes for testing. require_once dirname( __DIR__, 4 ) . '/includes/abilities/class-scf-internal-post-type-abilities.php'; require_once dirname( __DIR__, 4 ) . '/includes/abilities/class-scf-taxonomy-abilities.php'; From 30c70e04c9fe8862f335b44fe7f61f60e4eaa997 Mon Sep 17 00:00:00 2001 From: priethor <27339341+priethor@users.noreply.github.com> Date: Wed, 10 Dec 2025 14:26:43 +0100 Subject: [PATCH 3/3] Exclude abilities class from codecov --- .codecov.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.codecov.yml b/.codecov.yml index 0e13407d..c551416d 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -36,3 +36,5 @@ ignore: - 'node_modules' - 'tests' - 'vendor' + # Individual file exclusions + - 'includes/abilities/class-scf-ui-options-page-abilities.php' # Thin wrapper - logic tested via base class