@@ -1304,7 +1304,10 @@ private function create_woocommerce_default_pages(): array {
13041304 *
13051305 * @dataProvider data_determine_suggested_product_type
13061306 */
1307- public function test_determine_suggested_product_type ( $ order_items , $ expected_product_type ) {
1307+ public function test_determine_suggested_product_type ( $ order_items , $ expected_product_type , $ feature_flag_enabled = true ) {
1308+ // Set the feature flag option.
1309+ update_option ( WC_Payments_Features::DISPUTE_ADDITIONAL_EVIDENCE_TYPES , $ feature_flag_enabled ? '1 ' : '0 ' );
1310+
13081311 // Create a mock order.
13091312 $ mock_order = $ this ->getMockBuilder ( 'WC_Order ' )
13101313 ->disableOriginalConstructor ()
@@ -1328,75 +1331,92 @@ public function test_determine_suggested_product_type( $order_items, $expected_p
13281331 */
13291332 public function data_determine_suggested_product_type () {
13301333 return [
1331- 'empty_order ' => [
1334+ 'empty_order ' => [
13321335 'order_items ' => [],
13331336 'expected_product_type ' => 'physical_product ' ,
13341337 ],
1335- 'single_physical_product ' => [
1338+ 'single_physical_product ' => [
13361339 'order_items ' => [
13371340 $ this ->create_mock_order_item_product ( false ), // not virtual.
13381341 ],
13391342 'expected_product_type ' => 'physical_product ' ,
13401343 ],
1341- 'single_virtual_product ' => [
1344+ 'single_virtual_product ' => [
13421345 'order_items ' => [
13431346 $ this ->create_mock_order_item_product ( true ), // virtual.
13441347 ],
13451348 'expected_product_type ' => 'digital_product_or_service ' ,
13461349 ],
1347- 'multiple_products_mixed ' => [
1350+ 'multiple_products_mixed ' => [
13481351 'order_items ' => [
13491352 $ this ->create_mock_order_item_product ( false ), // physical.
13501353 $ this ->create_mock_order_item_product ( true ), // virtual.
13511354 ],
13521355 'expected_product_type ' => 'multiple ' ,
13531356 ],
1354- 'multiple_physical_products ' => [
1357+ 'multiple_physical_products ' => [
13551358 'order_items ' => [
13561359 $ this ->create_mock_order_item_product ( false ), // physical.
13571360 $ this ->create_mock_order_item_product ( false ), // physical.
13581361 ],
13591362 'expected_product_type ' => 'multiple ' ,
13601363 ],
1361- 'multiple_virtual_products ' => [
1364+ 'multiple_virtual_products ' => [
13621365 'order_items ' => [
13631366 $ this ->create_mock_order_item_product ( true ), // virtual.
13641367 $ this ->create_mock_order_item_product ( true ), // virtual.
13651368 ],
13661369 'expected_product_type ' => 'multiple ' ,
13671370 ],
1368- 'order_with_non_product_items ' => [
1371+ 'order_with_non_product_items ' => [
13691372 'order_items ' => [
13701373 $ this ->create_mock_order_item_product ( true ), // virtual product.
13711374 $ this ->create_mock_order_item_shipping (), // shipping item (not a product).
13721375 ],
13731376 'expected_product_type ' => 'digital_product_or_service ' ,
13741377 ],
1375- 'order_with_invalid_product ' => [
1378+ 'order_with_invalid_product ' => [
13761379 'order_items ' => [
13771380 $ this ->create_mock_order_item_product ( true , false ), // virtual but invalid product.
13781381 ],
13791382 'expected_product_type ' => 'physical_product ' ,
13801383 ],
1381- 'single_booking_product ' => [
1384+ 'single_booking_product ' => [
13821385 'order_items ' => [
13831386 $ this ->create_mock_order_item_product ( true , true , 'booking ' ), // booking product.
13841387 ],
13851388 'expected_product_type ' => 'booking_reservation ' ,
1389+ 'feature_flag_enabled ' => true ,
1390+ ],
1391+ 'single_booking_product_flag_off ' => [
1392+ 'order_items ' => [
1393+ $ this ->create_mock_order_item_product ( true , true , 'booking ' ), // booking product (virtual).
1394+ ],
1395+ 'expected_product_type ' => 'digital_product_or_service ' , // Falls back to virtual detection.
1396+ 'feature_flag_enabled ' => false ,
1397+ ],
1398+ 'single_booking_product_physical_flag_off ' => [
1399+ 'order_items ' => [
1400+ $ this ->create_mock_order_item_product ( false , true , 'booking ' ), // booking product (not virtual).
1401+ ],
1402+ 'expected_product_type ' => 'physical_product ' , // Falls back to physical detection.
1403+ 'feature_flag_enabled ' => false ,
13861404 ],
1387- 'multiple_booking_products ' => [
1405+ 'multiple_booking_products ' => [
13881406 'order_items ' => [
13891407 $ this ->create_mock_order_item_product ( true , true , 'booking ' ), // booking.
13901408 $ this ->create_mock_order_item_product ( true , true , 'booking ' ), // booking.
13911409 ],
13921410 'expected_product_type ' => 'multiple ' ,
1411+ 'feature_flag_enabled ' => true ,
13931412 ],
1394- 'booking_physical_mixed ' => [
1413+ 'booking_physical_mixed ' => [
13951414 'order_items ' => [
13961415 $ this ->create_mock_order_item_product ( true , true , 'booking ' ), // booking.
13971416 $ this ->create_mock_order_item_product ( false , true , 'simple ' ), // physical.
13981417 ],
13991418 'expected_product_type ' => 'multiple ' ,
1419+ 'feature_flag_enabled ' => true ,
14001420 ],
14011421 ];
14021422 }
0 commit comments