Skip to content

Commit 8a12be5

Browse files
author
Paul Bearne
committed
Add unit tests for wp_color_scheme_settings() in wp-admin/includes/misc.php
1 parent 5d3de27 commit 8a12be5

1 file changed

Lines changed: 128 additions & 0 deletions

File tree

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
<?php
2+
/**
3+
* Test wp_color_scheme_settings().
4+
*
5+
* @group admin
6+
* @group misc
7+
*/
8+
class Tests_wp_color_scheme_settings extends WP_UnitTestCase {
9+
10+
/**
11+
* Original $_wp_admin_css_colors global.
12+
*
13+
* @var array
14+
*/
15+
private $orig_wp_admin_css_colors;
16+
17+
public function set_up() {
18+
parent::set_up();
19+
global $_wp_admin_css_colors;
20+
$this->orig_wp_admin_css_colors = $_wp_admin_css_colors;
21+
}
22+
23+
public function tear_down() {
24+
global $_wp_admin_css_colors;
25+
$_wp_admin_css_colors = $this->orig_wp_admin_css_colors;
26+
parent::tear_down();
27+
}
28+
29+
/**
30+
* Test wp_color_scheme_settings() with a valid color scheme.
31+
*/
32+
public function test_wp_color_scheme_settings_valid_scheme() {
33+
global $_wp_admin_css_colors;
34+
35+
$user_id = $this->factory->user->create( array( 'role' => 'administrator' ) );
36+
wp_set_current_user( $user_id );
37+
update_user_option( $user_id, 'admin_color', 'blue' );
38+
39+
$_wp_admin_css_colors = array(
40+
'blue' => (object) array(
41+
'icon_colors' => array(
42+
'base' => '#e5f8ff',
43+
'focus' => '#fff',
44+
'current' => '#fff',
45+
),
46+
),
47+
);
48+
49+
ob_start();
50+
wp_color_scheme_settings();
51+
$output = ob_get_clean();
52+
53+
$expected = array(
54+
'icons' => array(
55+
'base' => '#e5f8ff',
56+
'focus' => '#fff',
57+
'current' => '#fff',
58+
),
59+
);
60+
61+
$this->assertStringContainsString( 'var _wpColorScheme = ' . wp_json_encode( $expected ), $output );
62+
}
63+
64+
/**
65+
* Test wp_color_scheme_settings() with an invalid color scheme (fallback to modern).
66+
*/
67+
public function test_wp_color_scheme_settings_invalid_scheme_fallback_to_modern() {
68+
global $_wp_admin_css_colors;
69+
70+
$user_id = $this->factory->user->create( array( 'role' => 'administrator' ) );
71+
wp_set_current_user( $user_id );
72+
update_user_option( $user_id, 'admin_color', 'non-existent' );
73+
74+
$_wp_admin_css_colors = array(
75+
'modern' => (object) array(
76+
'icon_colors' => array(
77+
'base' => '#f0f0f1',
78+
'focus' => '#fff',
79+
'current' => '#fff',
80+
),
81+
),
82+
);
83+
84+
ob_start();
85+
wp_color_scheme_settings();
86+
$output = ob_get_clean();
87+
88+
$expected = array(
89+
'icons' => array(
90+
'base' => '#f0f0f1',
91+
'focus' => '#fff',
92+
'current' => '#fff',
93+
),
94+
);
95+
96+
$this->assertStringContainsString( 'var _wpColorScheme = ' . wp_json_encode( $expected ), $output );
97+
}
98+
99+
/**
100+
* Test wp_color_scheme_settings() with no icon colors defined (fallback to defaults).
101+
*/
102+
public function test_wp_color_scheme_settings_no_icon_colors_fallback() {
103+
global $_wp_admin_css_colors;
104+
105+
$user_id = $this->factory->user->create( array( 'role' => 'administrator' ) );
106+
wp_set_current_user( $user_id );
107+
update_user_option( $user_id, 'admin_color', 'empty-scheme' );
108+
109+
$_wp_admin_css_colors = array(
110+
'empty-scheme' => (object) array(),
111+
'modern' => (object) array(),
112+
);
113+
114+
ob_start();
115+
wp_color_scheme_settings();
116+
$output = ob_get_clean();
117+
118+
$expected = array(
119+
'icons' => array(
120+
'base' => '#a7aaad',
121+
'focus' => '#72aee6',
122+
'current' => '#fff',
123+
),
124+
);
125+
126+
$this->assertStringContainsString( 'var _wpColorScheme = ' . wp_json_encode( $expected ), $output );
127+
}
128+
}

0 commit comments

Comments
 (0)