11<?php
22
3+ require_once dirname ( __DIR__ , 2 ) . '/includes/wp-ai-client-mock-provider-trait.php ' ;
4+
35/**
46 * Tests for _wp_register_default_connector_settings().
57 *
810 */
911class Tests_Connectors_WpRegisterDefaultConnectorSettings extends WP_UnitTestCase {
1012
13+ use WP_AI_Client_Mock_Provider_Trait;
14+
1115 /**
1216 * Original connector registry instance.
1317 *
@@ -16,53 +20,66 @@ class Tests_Connectors_WpRegisterDefaultConnectorSettings extends WP_UnitTestCas
1620 private ?WP_Connector_Registry $ original_registry ;
1721
1822 /**
19- * Setting names touched during a test.
23+ * Snapshot of registered settings before each test.
2024 *
21- * @var string[]
25+ * @var array
26+ */
27+ private array $ original_registered_settings = array ();
28+
29+ /**
30+ * Registers the mock provider once before any tests in this class run.
31+ */
32+ public static function set_up_before_class (): void {
33+ parent ::set_up_before_class ();
34+ self ::register_mock_connectors_provider ();
35+ }
36+
37+ /**
38+ * Unregisters the mock provider setting added by `init`.
2239 */
23- private array $ touched_settings = array ();
40+ public static function tear_down_after_class (): void {
41+ self ::unregister_mock_connector_setting ();
42+ parent ::tear_down_after_class ();
43+ }
2444
2545 /**
26- * Stores the original registry before each test.
46+ * Stores the original registry and settings before each test.
2747 */
2848 public function set_up (): void {
2949 parent ::set_up ();
3050 $ this ->original_registry = WP_Connector_Registry::get_instance ();
51+
52+ global $ wp_registered_settings ;
53+ $ this ->original_registered_settings = $ wp_registered_settings ;
3154 }
3255
3356 /**
34- * Restores the original registry and connector settings after each test.
57+ * Restores the original registry and registered settings after each test.
3558 */
3659 public function tear_down (): void {
37- foreach ( array_unique ( $ this ->touched_settings ) as $ setting_name ) {
38- unregister_setting ( 'connectors ' , $ setting_name );
39- }
60+ global $ wp_registered_settings ;
61+ $ wp_registered_settings = $ this ->original_registered_settings ;
4062
4163 $ this ->set_registry_instance ( $ this ->original_registry );
4264
43- if ( null !== $ this ->original_registry ) {
44- _wp_register_default_connector_settings ();
45- }
46-
4765 parent ::tear_down ();
4866 }
4967
5068 /**
5169 * @ticket 64730
5270 */
5371 public function test_ai_connector_settings_still_auto_register (): void {
54- $ setting_name = 'connectors_ai_openai_api_key ' ;
55- $ this ->touch_setting ( $ setting_name );
72+ $ setting_name = 'connectors_ai_mock_connectors_test_api_key ' ;
5673 unregister_setting ( 'connectors ' , $ setting_name );
5774
58- $ openai = wp_get_connector ( 'openai ' );
59- $ this ->assertIsArray ( $ openai );
75+ $ mock = wp_get_connector ( 'mock-connectors-test ' );
76+ $ this ->assertIsArray ( $ mock );
6077
6178 $ registry = new WP_Connector_Registry ();
6279 $ this ->set_registered_connectors (
6380 $ registry ,
6481 array (
65- 'openai ' => $ openai ,
82+ 'mock-connectors-test ' => $ mock ,
6683 )
6784 );
6885 $ this ->set_registry_instance ( $ registry );
@@ -77,7 +94,6 @@ public function test_ai_connector_settings_still_auto_register(): void {
7794 */
7895 public function test_non_ai_connector_settings_auto_register_when_plugin_is_active_returns_true (): void {
7996 $ setting_name = 'connectors_spam_filtering_test_active_api_key ' ;
80- $ this ->touch_setting ( $ setting_name );
8197
8298 $ registry = $ this ->create_non_ai_registry (
8399 'test-active ' ,
@@ -98,7 +114,6 @@ static function (): bool {
98114 */
99115 public function test_non_ai_connector_settings_do_not_auto_register_when_plugin_is_active_missing (): void {
100116 $ setting_name = 'connectors_spam_filtering_test_missing_api_key ' ;
101- $ this ->touch_setting ( $ setting_name );
102117
103118 $ registry = $ this ->create_non_ai_registry ( 'test-missing ' , $ setting_name );
104119 $ this ->set_registry_instance ( $ registry );
@@ -113,7 +128,6 @@ public function test_non_ai_connector_settings_do_not_auto_register_when_plugin_
113128 */
114129 public function test_non_ai_connector_settings_do_not_auto_register_when_plugin_is_active_returns_false (): void {
115130 $ setting_name = 'connectors_spam_filtering_test_inactive_api_key ' ;
116- $ this ->touch_setting ( $ setting_name );
117131
118132 $ registry = $ this ->create_non_ai_registry (
119133 'test-inactive ' ,
@@ -134,7 +148,6 @@ static function (): bool {
134148 */
135149 public function test_non_ai_connector_settings_do_not_auto_register_when_plugin_is_active_not_callable (): void {
136150 $ setting_name = 'connectors_spam_filtering_test_invalid_api_key ' ;
137- $ this ->touch_setting ( $ setting_name );
138151
139152 $ registry = $ this ->create_non_ai_registry ( 'test-invalid ' , $ setting_name , 'not_a_callback ' );
140153 $ this ->set_registry_instance ( $ registry );
@@ -226,12 +239,4 @@ private function set_registry_instance( ?WP_Connector_Registry $registry ): void
226239 $ property ->setValue ( null , $ registry );
227240 }
228241
229- /**
230- * Tracks a setting name for cleanup.
231- *
232- * @param string $setting_name Setting name.
233- */
234- private function touch_setting ( string $ setting_name ): void {
235- $ this ->touched_settings [] = $ setting_name ;
236- }
237242}
0 commit comments