diff --git a/facebook-commerce.php b/facebook-commerce.php index b04ff2315..7bea593ce 100644 --- a/facebook-commerce.php +++ b/facebook-commerce.php @@ -3054,70 +3054,6 @@ public function on_product_bulk_edit_save( $product ) { } } - /** - * Gets Facebook product ID from meta or from Facebook API. - * - * @param string $fbid_type ID type (group or item) - * @param int $wp_id post ID - * @param WC_Facebook_Product|null $woo_product product - * - * @return string facebook product id or an empty string - */ - public function get_product_fbid( string $fbid_type, int $wp_id, $woo_product = null ) { - $fb_id = WC_Facebookcommerce_Utils::get_fbid_post_meta( $wp_id, $fbid_type ); - if ( $fb_id ) { - return $fb_id; - } - if ( ! $woo_product ) { - $woo_product = new WC_Facebook_Product( $wp_id ); - } - $products = WC_Facebookcommerce_Utils::get_product_array( $woo_product ); - // if the product with ID equal to $wp_id is variable, $woo_product will be the first child - $woo_product = new WC_Facebook_Product( current( $products ) ); - - $fb_retailer_id = WC_Facebookcommerce_Utils::get_fb_retailer_id( $woo_product ); - - try { - $response = $this->facebook_for_woocommerce->get_api()->get_product_facebook_ids( - $this->get_product_catalog_id(), - $fb_retailer_id - ); - - if ( $response->data && $response->data[0] && $response->data[0]['id'] ) { - $fb_id = self::FB_PRODUCT_GROUP_ID === $fbid_type - ? $response->data[0]['product_group']['id'] - : $response->data[0]['id']; - update_post_meta( $wp_id, $fbid_type, $fb_id ); - return $fb_id; - } elseif ( $response->id ) { - $fb_id = self::FB_PRODUCT_GROUP_ID === $fbid_type - ? $response->get_facebook_product_group_id() - : $response->id; - update_post_meta( $wp_id, $fbid_type, $fb_id ); - return $fb_id; - } - } catch ( Exception $e ) { - Logger::log( - 'There was an issue connecting to the Facebook API:' . $e->getMessage(), - [], - array( - 'should_send_log_to_meta' => false, - 'should_save_log_in_woocommerce' => true, - 'woocommerce_log_level' => \WC_Log_Levels::ERROR, - ) - ); - $this->display_error_message( - sprintf( - /* translators: Placeholders %1$s - original error message from Facebook API */ - esc_html__( 'There was an issue connecting to the Facebook API: %s', 'facebook-for-woocommerce' ), - $e->getMessage() - ) - ); - } - - return null; - } - /** * Display test result. **/ diff --git a/tests/Unit/WCFacebookCommerceIntegrationTest.php b/tests/Unit/WCFacebookCommerceIntegrationTest.php index 83121be55..634ff23aa 100644 --- a/tests/Unit/WCFacebookCommerceIntegrationTest.php +++ b/tests/Unit/WCFacebookCommerceIntegrationTest.php @@ -2725,113 +2725,6 @@ public function test_update_fb_visibility_to_published_for_simple_product() { $this->assertEquals( 'yes', get_post_meta( $product->get_id(), Products::VISIBILITY_META_KEY, true ) ); } - /** - * Tests get product facebook id returns post meta value. - * - * @return void - */ - public function test_get_product_fbid_returns_post_meta_value() { - $product = WC_Helper_Product::create_simple_product(); - $product->add_meta_data( WC_Facebookcommerce_Integration::FB_PRODUCT_GROUP_ID, 'some-facebook-product-group-id' ); - $product->add_meta_data( WC_Facebookcommerce_Integration::FB_PRODUCT_ITEM_ID, 'some-facebook-product-item-id' ); - $product->save_meta_data(); - - $group_id = $this->integration->get_product_fbid( WC_Facebookcommerce_Integration::FB_PRODUCT_GROUP_ID, $product->get_id() ); - $item_id = $this->integration->get_product_fbid( WC_Facebookcommerce_Integration::FB_PRODUCT_ITEM_ID, $product->get_id() ); - - $this->assertEquals( 'some-facebook-product-group-id', $group_id ); - $this->assertEquals( 'some-facebook-product-item-id', $item_id ); - } - - /** - * Tests get product facebook id calls facebook graph api to get id and updates post meta group id value. - * - * @return void - */ - public function test_get_product_fbid_calls_facebook_and_sets_post_meta_value_for_group_id() { - add_option( WC_Facebookcommerce_Integration::OPTION_PRODUCT_CATALOG_ID, '1122334455' ); - - $product = WC_Helper_Product::create_simple_product(); - $fb_retailer_id = WC_Facebookcommerce_Utils::get_fb_retailer_id( new WC_Facebook_Product( $product->get_id() ) ); - - $this->api->expects( $this->once() ) - ->method( 'get_product_facebook_ids' ) - ->with( '1122334455', $fb_retailer_id ) - ->willReturn( new API\ProductCatalog\Products\Id\Response( '{"id":"product-id","product_group":{"id":"product-group-id"}}' ) ); - - $facebook_product_group_id = $this->integration->get_product_fbid( WC_Facebookcommerce_Integration::FB_PRODUCT_GROUP_ID, $product->get_id() ); - - $this->assertEquals( 'product-group-id', $facebook_product_group_id ); - $this->assertEquals( 'product-group-id', get_post_meta( $product->get_id(), WC_Facebookcommerce_Integration::FB_PRODUCT_GROUP_ID, true ) ); - } - - /** - * Tests get product facebook id calls facebook graph api to get id and updates post meta item id value. - * - * @return void - */ - public function test_get_product_fbid_calls_facebook_and_sets_post_meta_value_for_item_id() { - add_option( WC_Facebookcommerce_Integration::OPTION_PRODUCT_CATALOG_ID, '1122334455' ); - - $product = WC_Helper_Product::create_simple_product(); - $fb_retailer_id = WC_Facebookcommerce_Utils::get_fb_retailer_id( new WC_Facebook_Product( $product->get_id() ) ); - - $this->api->expects( $this->once() ) - ->method( 'get_product_facebook_ids' ) - ->with( '1122334455', $fb_retailer_id ) - ->willReturn( new API\ProductCatalog\Products\Id\Response( '{"id":"product-id","product_group":{"id":"product-group-id"}}' ) ); - - $facebook_product_id = $this->integration->get_product_fbid( WC_Facebookcommerce_Integration::FB_PRODUCT_ITEM_ID, $product->get_id() ); - - $this->assertEquals( 'product-id', $facebook_product_id ); - $this->assertEquals( 'product-id', get_post_meta( $product->get_id(), WC_Facebookcommerce_Integration::FB_PRODUCT_ITEM_ID, true ) ); - } - - /** - * Tests get product facebook id calls facebook graph api with the endpoint with filter to get id and updates - * post meta item id value. - * - * @return void - */ - public function test_get_product_fbid_calls_facebook_and_sets_post_meta_value_for_item_id_with_filter_endpoint() { - add_option( WC_Facebookcommerce_Integration::OPTION_PRODUCT_CATALOG_ID, '1122334455' ); - - $product = WC_Helper_Product::create_simple_product(); - $fb_retailer_id = WC_Facebookcommerce_Utils::get_fb_retailer_id( new WC_Facebook_Product( $product->get_id() ) ); - - $this->api->expects( $this->once() ) - ->method( 'get_product_facebook_ids' ) - ->with( '1122334455', $fb_retailer_id ) - ->willReturn( new API\ProductCatalog\Products\Id\Response( '{"data":[{"id":"product-id","product_group":{"id":"product-group-id"}}]}' ) ); - - $facebook_product_id = $this->integration->get_product_fbid( WC_Facebookcommerce_Integration::FB_PRODUCT_ITEM_ID, $product->get_id() ); - - $this->assertEquals( 'product-id', $facebook_product_id ); - $this->assertEquals( 'product-id', get_post_meta( $product->get_id(), WC_Facebookcommerce_Integration::FB_PRODUCT_ITEM_ID, true ) ); - } - - /** - * Tests get product facebook id calls facebook graph api with the endpoint with filter to find that the item doesn't exist. - * - * @return void - */ - public function test_get_product_fbid_calls_facebook_and_sets_post_meta_value_for_item_id_with_filter_endpoint_empty_data() { - add_option( WC_Facebookcommerce_Integration::OPTION_PRODUCT_CATALOG_ID, '1122334455' ); - - $product = WC_Helper_Product::create_simple_product(); - $fb_retailer_id = WC_Facebookcommerce_Utils::get_fb_retailer_id( new WC_Facebook_Product( $product->get_id() ) ); - - $this->api->expects( $this->once() ) - ->method( 'get_product_facebook_ids' ) - ->with( '1122334455', $fb_retailer_id ) - ->willReturn( new API\ProductCatalog\Products\Id\Response( '{"data":[]}' ) ); - - $facebook_product_id = $this->integration->get_product_fbid( WC_Facebookcommerce_Integration::FB_PRODUCT_ITEM_ID, $product->get_id() ); - - $this->assertEquals( null, $facebook_product_id ); - $this->assertEquals( null, get_post_meta( $product->get_id(), WC_Facebookcommerce_Integration::FB_PRODUCT_ITEM_ID, true ) ); - } - /** * Tests if meta diagnosis is enabled by default. *