@@ -84,7 +84,7 @@ public function test_init() {
84
84
85
85
$ this ->assertEquals ( 10 , has_filter ( 'post_link ' , array ( $ post_type_obj , 'filter_post_type_link ' ) ) );
86
86
$ this ->assertEquals ( 10 , has_action ( 'add_meta_boxes_ ' . Post_Type::SLUG , array ( $ post_type_obj , 'setup_metaboxes ' ) ) );
87
- $ this ->assertEquals ( 10 , has_action ( 'admin_menu ' , array ( $ post_type_obj , 'add_admin_menu_item ' ) ) );
87
+ $ this ->assertEquals ( 99 , has_action ( 'admin_menu ' , array ( $ post_type_obj , 'add_admin_menu_item ' ) ) );
88
88
$ this ->assertEquals ( 5 , has_filter ( 'map_meta_cap ' , array ( $ post_type_obj , 'remap_customize_meta_cap ' ) ) );
89
89
$ this ->assertEquals ( 10 , has_filter ( 'bulk_actions-edit- ' . Post_Type::SLUG , array ( $ post_type_obj , 'add_snapshot_bulk_actions ' ) ) );
90
90
$ this ->assertEquals ( 10 , has_filter ( 'handle_bulk_actions-edit- ' . Post_Type::SLUG , array ( $ post_type_obj , 'handle_snapshot_merge ' ) ) );
@@ -158,6 +158,50 @@ public function test_add_admin_menu_item() {
158
158
$ this ->assertTrue ( in_array ( $ menu_slug , $ submenu ['themes.php ' ][0 ], true ) );
159
159
}
160
160
161
+ /**
162
+ * Allow customize caps to all users for testing.
163
+ *
164
+ * @see test_menu_for_customize_cap.
165
+ * @param array $allcaps all caps.
166
+ * @param array $caps caps.
167
+ * @param array $args arg for current_user_can.
168
+ *
169
+ * @return array
170
+ */
171
+ public function hack_user_can ( $ allcaps , $ caps , $ args ) {
172
+ if ( 'customize ' === $ args [0 ] ) {
173
+ $ allcaps = array_merge ( $ allcaps , array_fill_keys ( $ caps , true ) );
174
+ }
175
+
176
+ return $ allcaps ;
177
+ }
178
+
179
+ /**
180
+ * Test add_admin_menu_item
181
+ *
182
+ * @covers \CustomizeSnapshots\Post_Type::add_admin_menu_item()
183
+ */
184
+ public function test_menu_for_customize_cap () {
185
+ $ this ->mark_incompatible ();
186
+ global $ submenu , $ menu ;
187
+ if ( null === $ submenu ) {
188
+ $ submenu = array (); // WPCS: global override ok.
189
+ }
190
+ if ( null === $ menu ) {
191
+ $ menu = array (); // WPCS: global override ok.
192
+ }
193
+ add_filter ( 'user_has_cap ' , array ( $ this , 'hack_user_can ' ), 10 , 3 );
194
+ $ editor_user_id = $ this ->factory ()->user ->create ( array ( 'role ' => 'editor ' ) );
195
+ wp_set_current_user ( $ editor_user_id );
196
+ $ post_type_obj = new Post_Type ( $ this ->plugin ->customize_snapshot_manager );
197
+ $ post_type_obj ->add_admin_menu_item ();
198
+ $ menu_slug = 'edit.php?post_type= ' . Post_Type::SLUG ;
199
+ $ customize_url = add_query_arg ( 'return ' , urlencode ( wp_unslash ( $ _SERVER ['REQUEST_URI ' ] ) ), 'customize.php ' );
200
+ $ this ->assertArrayHasKey ( $ customize_url , $ submenu );
201
+ $ this ->assertEquals ( $ menu_slug , $ submenu [ $ customize_url ][1 ][2 ] );
202
+ remove_filter ( 'user_has_cap ' , array ( $ this , 'hack_user_can ' ), 10 );
203
+ }
204
+
161
205
/**
162
206
* Test filter_post_type_link.
163
207
*
0 commit comments