mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
Do not fail if no WC_Product in order item
It is possible for an order item to not have product, such as if created by a plugin.
This commit is contained in:
parent
77230fefa8
commit
4f91e78591
2 changed files with 13 additions and 18 deletions
|
@ -124,11 +124,6 @@ class ItemFactory {
|
||||||
* @return Item
|
* @return Item
|
||||||
*/
|
*/
|
||||||
private function from_wc_order_line_item( \WC_Order_Item_Product $item, \WC_Order $order ): Item {
|
private function from_wc_order_line_item( \WC_Order_Item_Product $item, \WC_Order $order ): Item {
|
||||||
/**
|
|
||||||
* The WooCommerce product.
|
|
||||||
*
|
|
||||||
* @var WC_Product $product
|
|
||||||
*/
|
|
||||||
$product = $item->get_product();
|
$product = $item->get_product();
|
||||||
$currency = $order->get_currency();
|
$currency = $order->get_currency();
|
||||||
$quantity = (int) $item->get_quantity();
|
$quantity = (int) $item->get_quantity();
|
||||||
|
@ -139,13 +134,13 @@ class ItemFactory {
|
||||||
$tax = new Money( $tax, $currency );
|
$tax = new Money( $tax, $currency );
|
||||||
|
|
||||||
return new Item(
|
return new Item(
|
||||||
mb_substr( $product->get_name(), 0, 127 ),
|
mb_substr( $item->get_name(), 0, 127 ),
|
||||||
new Money( $price_without_tax_rounded, $currency ),
|
new Money( $price_without_tax_rounded, $currency ),
|
||||||
$quantity,
|
$quantity,
|
||||||
substr( wp_strip_all_tags( $product->get_description() ), 0, 127 ) ?: '',
|
substr( wp_strip_all_tags( $product instanceof WC_Product ? $product->get_description() : '' ), 0, 127 ) ?: '',
|
||||||
$tax,
|
$tax,
|
||||||
$product->get_sku(),
|
$product instanceof WC_Product ? $product->get_sku() : '',
|
||||||
( $product->is_virtual() ) ? Item::DIGITAL_GOODS : Item::PHYSICAL_GOODS
|
( $product instanceof WC_Product && $product->is_virtual() ) ? Item::DIGITAL_GOODS : Item::PHYSICAL_GOODS
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -130,9 +130,6 @@ class ItemFactoryTest extends TestCase
|
||||||
$testee = new ItemFactory($this->currency);
|
$testee = new ItemFactory($this->currency);
|
||||||
|
|
||||||
$product = Mockery::mock(\WC_Product::class);
|
$product = Mockery::mock(\WC_Product::class);
|
||||||
$product
|
|
||||||
->expects('get_name')
|
|
||||||
->andReturn('name');
|
|
||||||
$product
|
$product
|
||||||
->expects('get_description')
|
->expects('get_description')
|
||||||
->andReturn('description');
|
->andReturn('description');
|
||||||
|
@ -150,6 +147,9 @@ class ItemFactoryTest extends TestCase
|
||||||
$item
|
$item
|
||||||
->expects('get_product')
|
->expects('get_product')
|
||||||
->andReturn($product);
|
->andReturn($product);
|
||||||
|
$item
|
||||||
|
->expects('get_name')
|
||||||
|
->andReturn('name');
|
||||||
$item
|
$item
|
||||||
->expects('get_quantity')
|
->expects('get_quantity')
|
||||||
->andReturn(1);
|
->andReturn(1);
|
||||||
|
@ -193,9 +193,6 @@ class ItemFactoryTest extends TestCase
|
||||||
$testee = new ItemFactory($this->currency);
|
$testee = new ItemFactory($this->currency);
|
||||||
|
|
||||||
$product = Mockery::mock(\WC_Product::class);
|
$product = Mockery::mock(\WC_Product::class);
|
||||||
$product
|
|
||||||
->expects('get_name')
|
|
||||||
->andReturn('name');
|
|
||||||
$product
|
$product
|
||||||
->expects('get_description')
|
->expects('get_description')
|
||||||
->andReturn('description');
|
->andReturn('description');
|
||||||
|
@ -213,6 +210,9 @@ class ItemFactoryTest extends TestCase
|
||||||
$item
|
$item
|
||||||
->expects('get_product')
|
->expects('get_product')
|
||||||
->andReturn($product);
|
->andReturn($product);
|
||||||
|
$item
|
||||||
|
->expects('get_name')
|
||||||
|
->andReturn('name');
|
||||||
$item
|
$item
|
||||||
->expects('get_quantity')
|
->expects('get_quantity')
|
||||||
->andReturn(1);
|
->andReturn(1);
|
||||||
|
@ -251,9 +251,6 @@ class ItemFactoryTest extends TestCase
|
||||||
$testee = new ItemFactory($this->currency);
|
$testee = new ItemFactory($this->currency);
|
||||||
|
|
||||||
$product = Mockery::mock(\WC_Product::class);
|
$product = Mockery::mock(\WC_Product::class);
|
||||||
$product
|
|
||||||
->expects('get_name')
|
|
||||||
->andReturn($name);
|
|
||||||
$product
|
$product
|
||||||
->expects('get_description')
|
->expects('get_description')
|
||||||
->andReturn($description);
|
->andReturn($description);
|
||||||
|
@ -271,6 +268,9 @@ class ItemFactoryTest extends TestCase
|
||||||
$item
|
$item
|
||||||
->expects('get_product')
|
->expects('get_product')
|
||||||
->andReturn($product);
|
->andReturn($product);
|
||||||
|
$item
|
||||||
|
->expects('get_name')
|
||||||
|
->andReturn($name);
|
||||||
$item
|
$item
|
||||||
->expects('get_quantity')
|
->expects('get_quantity')
|
||||||
->andReturn(1);
|
->andReturn(1);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue