@@ -153,6 +153,63 @@ public function test_create_item_with_invalid_input_array() {
153153
154154 }
155155
156+ public function test_create_item_with_default_max_allowed_filter () {
157+ wp_set_current_user ( self ::$ admin );
158+ $ flags = [['id ' =>1 , 'name ' =>'test ' , 'enabled ' =>true ],
159+ ['id ' =>2 , 'name ' =>'test2 ' , 'enabled ' =>false ],
160+ ['id ' =>3 , 'name ' =>'test3 ' , 'enabled ' =>false ],
161+ ['id ' =>4 , 'name ' =>'test4 ' , 'enabled ' =>false ],
162+ ['id ' =>5 , 'name ' =>'test5 ' , 'enabled ' =>false ],
163+ ['id ' =>6 , 'name ' =>'test6 ' , 'enabled ' =>false ],
164+ ['id ' => 7 , 'name ' => 'test7 ' , 'enabled ' => true ],
165+ ['id ' => 8 , 'name ' => 'test8 ' , 'enabled ' => false ],
166+ ['id ' => 9 , 'name ' => 'test9 ' , 'enabled ' => false ],
167+ ['id ' => 10 , 'name ' => 'test10 ' , 'enabled ' => false ],
168+ ['id ' => 11 , 'name ' => 'test11 ' , 'enabled ' => false ],
169+ ['id ' => 12 , 'name ' => 'test12 ' , 'enabled ' => false ],
170+ ['id ' => 13 , 'name ' => 'test13 ' , 'enabled ' => false ],
171+ ['id ' => 14 , 'name ' => 'test14 ' , 'enabled ' => false ],
172+ ['id ' => 15 , 'name ' => 'test15 ' , 'enabled ' => false ],
173+ ['id ' => 16 , 'name ' => 'test16 ' , 'enabled ' => false ],
174+ ['id ' => 17 , 'name ' => 'test17 ' , 'enabled ' => false ],
175+ ['id ' => 18 , 'name ' => 'test18 ' , 'enabled ' => false ],
176+ ['id ' => 19 , 'name ' => 'test19 ' , 'enabled ' => false ],
177+ ['id ' => 20 , 'name ' => 'test20 ' , 'enabled ' => false ],
178+ ['id ' => 21 , 'name ' => 'test21 ' , 'enabled ' => false ],];
179+
180+ $ request = new WP_REST_Request ( 'POST ' , self ::$ api_endpoint );
181+ $ request ->add_header ( 'Content-Type ' , 'application/json ' );
182+ $ request ->set_body ( wp_json_encode ( ['flags ' => $ flags ] ) );
183+ $ response = rest_get_server ()->dispatch ( $ request );
184+ $ response_message = $ response ->get_data ()['message ' ];
185+
186+ $ this ->assertErrorResponse ( 'flag_limit_exceeded ' , $ response , 400 );
187+ $ this ->assertEquals ('Maximum allowed flags are 20 ' , $ response_message );
188+
189+ }
190+
191+ public function test_create_item_with_custom_max_allowed_filter () {
192+ wp_set_current_user ( self ::$ admin );
193+
194+ // Mock the filter hook
195+ $ mocked_max_flags = 3 ;
196+ add_filter ('mr_feature_flags_max_allowed ' , function () use ($ mocked_max_flags ) {
197+ return $ mocked_max_flags ;
198+ });
199+
200+ $ flags = [['id ' =>1 , 'name ' =>'test ' , 'enabled ' =>true ], ['id ' =>2 , 'name ' =>'test2 ' , 'enabled ' =>false ], ['id ' =>3 , 'name ' =>'test2 ' , 'enabled ' =>false ], ['id ' =>4 , 'name ' =>'test2 ' , 'enabled ' =>false ]];
201+
202+ $ request = new WP_REST_Request ( 'POST ' , self ::$ api_endpoint );
203+ $ request ->add_header ( 'Content-Type ' , 'application/json ' );
204+ $ request ->set_body ( wp_json_encode ( ['flags ' => $ flags ] ) );
205+ $ response = rest_get_server ()->dispatch ( $ request );
206+ $ response_message = $ response ->get_data ()['message ' ];
207+
208+ $ this ->assertErrorResponse ( 'flag_limit_exceeded ' , $ response , 400 );
209+ $ this ->assertEquals ('Maximum allowed flags are 3 ' , $ response_message );
210+
211+ }
212+
156213 public function test_create_item_without_input () {
157214 wp_set_current_user ( self ::$ admin );
158215
0 commit comments