Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 0 additions & 64 deletions facebook-commerce.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
**/
Expand Down
107 changes: 0 additions & 107 deletions tests/Unit/WCFacebookCommerceIntegrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*
Expand Down
Loading