mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 10:55:00 +08:00
Add url
& image_url
to Item
This commit is contained in:
parent
2571d31ad8
commit
f869f98ac1
4 changed files with 96 additions and 4 deletions
|
@ -66,6 +66,20 @@ class Item {
|
||||||
*/
|
*/
|
||||||
private $category;
|
private $category;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The product url.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The product image url.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $image_url;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The tax rate.
|
* The tax rate.
|
||||||
*
|
*
|
||||||
|
@ -90,6 +104,8 @@ class Item {
|
||||||
* @param Money|null $tax The tax.
|
* @param Money|null $tax The tax.
|
||||||
* @param string $sku The SKU.
|
* @param string $sku The SKU.
|
||||||
* @param string $category The category.
|
* @param string $category The category.
|
||||||
|
* @param string $url The product url.
|
||||||
|
* @param string $image_url The product image url.
|
||||||
* @param float $tax_rate The tax rate.
|
* @param float $tax_rate The tax rate.
|
||||||
* @param ?string $cart_item_key The cart key for this item.
|
* @param ?string $cart_item_key The cart key for this item.
|
||||||
*/
|
*/
|
||||||
|
@ -101,6 +117,8 @@ class Item {
|
||||||
Money $tax = null,
|
Money $tax = null,
|
||||||
string $sku = '',
|
string $sku = '',
|
||||||
string $category = 'PHYSICAL_GOODS',
|
string $category = 'PHYSICAL_GOODS',
|
||||||
|
string $url = '',
|
||||||
|
string $image_url = '',
|
||||||
float $tax_rate = 0,
|
float $tax_rate = 0,
|
||||||
string $cart_item_key = null
|
string $cart_item_key = null
|
||||||
) {
|
) {
|
||||||
|
@ -111,8 +129,9 @@ class Item {
|
||||||
$this->description = $description;
|
$this->description = $description;
|
||||||
$this->tax = $tax;
|
$this->tax = $tax;
|
||||||
$this->sku = $sku;
|
$this->sku = $sku;
|
||||||
$this->category = ( self::DIGITAL_GOODS === $category ) ? self::DIGITAL_GOODS : self::PHYSICAL_GOODS;
|
|
||||||
$this->category = $category;
|
$this->category = $category;
|
||||||
|
$this->url = $url;
|
||||||
|
$this->image_url = $image_url;
|
||||||
$this->tax_rate = $tax_rate;
|
$this->tax_rate = $tax_rate;
|
||||||
$this->cart_item_key = $cart_item_key;
|
$this->cart_item_key = $cart_item_key;
|
||||||
}
|
}
|
||||||
|
@ -180,6 +199,24 @@ class Item {
|
||||||
return $this->category;
|
return $this->category;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the url.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function url():string {
|
||||||
|
return $this->url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the image url.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function image_url():string {
|
||||||
|
return $this->image_url;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the tax rate.
|
* Returns the tax rate.
|
||||||
*
|
*
|
||||||
|
@ -211,6 +248,8 @@ class Item {
|
||||||
'description' => $this->description(),
|
'description' => $this->description(),
|
||||||
'sku' => $this->sku(),
|
'sku' => $this->sku(),
|
||||||
'category' => $this->category(),
|
'category' => $this->category(),
|
||||||
|
'url' => $this->url(),
|
||||||
|
'image_url' => $this->image_url(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( $this->tax() ) {
|
if ( $this->tax() ) {
|
||||||
|
|
|
@ -53,6 +53,7 @@ class ItemFactory {
|
||||||
* @var \WC_Product $product
|
* @var \WC_Product $product
|
||||||
*/
|
*/
|
||||||
$quantity = (int) $item['quantity'];
|
$quantity = (int) $item['quantity'];
|
||||||
|
$image = wp_get_attachment_image_src( $product->get_image_id(), 'full' );
|
||||||
|
|
||||||
$price = (float) $item['line_subtotal'] / (float) $item['quantity'];
|
$price = (float) $item['line_subtotal'] / (float) $item['quantity'];
|
||||||
return new Item(
|
return new Item(
|
||||||
|
@ -63,6 +64,8 @@ class ItemFactory {
|
||||||
null,
|
null,
|
||||||
$product->get_sku(),
|
$product->get_sku(),
|
||||||
( $product->is_virtual() ) ? Item::DIGITAL_GOODS : Item::PHYSICAL_GOODS,
|
( $product->is_virtual() ) ? Item::DIGITAL_GOODS : Item::PHYSICAL_GOODS,
|
||||||
|
$product->get_permalink(),
|
||||||
|
$image[0] ?? '',
|
||||||
0,
|
0,
|
||||||
$cart_item_key
|
$cart_item_key
|
||||||
);
|
);
|
||||||
|
@ -128,6 +131,7 @@ class ItemFactory {
|
||||||
$quantity = (int) $item->get_quantity();
|
$quantity = (int) $item->get_quantity();
|
||||||
$price_without_tax = (float) $order->get_item_subtotal( $item, false );
|
$price_without_tax = (float) $order->get_item_subtotal( $item, false );
|
||||||
$price_without_tax_rounded = round( $price_without_tax, 2 );
|
$price_without_tax_rounded = round( $price_without_tax, 2 );
|
||||||
|
$image = wp_get_attachment_image_src( $product->get_image_id(), 'full' );
|
||||||
|
|
||||||
return new Item(
|
return new Item(
|
||||||
mb_substr( $item->get_name(), 0, 127 ),
|
mb_substr( $item->get_name(), 0, 127 ),
|
||||||
|
@ -136,7 +140,9 @@ class ItemFactory {
|
||||||
$product instanceof WC_Product ? $this->prepare_description( $product->get_description() ) : '',
|
$product instanceof WC_Product ? $this->prepare_description( $product->get_description() ) : '',
|
||||||
null,
|
null,
|
||||||
$product instanceof WC_Product ? $product->get_sku() : '',
|
$product instanceof WC_Product ? $product->get_sku() : '',
|
||||||
( $product instanceof WC_Product && $product->is_virtual() ) ? Item::DIGITAL_GOODS : Item::PHYSICAL_GOODS
|
( $product instanceof WC_Product && $product->is_virtual() ) ? Item::DIGITAL_GOODS : Item::PHYSICAL_GOODS,
|
||||||
|
$product->get_permalink(),
|
||||||
|
$image[0] ?? ''
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,6 +196,8 @@ class ItemFactory {
|
||||||
: null;
|
: null;
|
||||||
$sku = ( isset( $data->sku ) ) ? $data->sku : '';
|
$sku = ( isset( $data->sku ) ) ? $data->sku : '';
|
||||||
$category = ( isset( $data->category ) ) ? $data->category : 'PHYSICAL_GOODS';
|
$category = ( isset( $data->category ) ) ? $data->category : 'PHYSICAL_GOODS';
|
||||||
|
$url = ( isset( $data->url ) ) ? $data->url : '';
|
||||||
|
$image_url = ( isset( $data->image_url ) ) ? $data->image_url : '';
|
||||||
|
|
||||||
return new Item(
|
return new Item(
|
||||||
$data->name,
|
$data->name,
|
||||||
|
@ -198,7 +206,9 @@ class ItemFactory {
|
||||||
$description,
|
$description,
|
||||||
$tax,
|
$tax,
|
||||||
$sku,
|
$sku,
|
||||||
$category
|
$category,
|
||||||
|
$url,
|
||||||
|
$image_url
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,9 @@ class ItemTest extends TestCase
|
||||||
'description',
|
'description',
|
||||||
$tax,
|
$tax,
|
||||||
'sku',
|
'sku',
|
||||||
'PHYSICAL_GOODS'
|
'PHYSICAL_GOODS',
|
||||||
|
'url',
|
||||||
|
'image_url'
|
||||||
);
|
);
|
||||||
|
|
||||||
$expected = [
|
$expected = [
|
||||||
|
@ -76,6 +78,8 @@ class ItemTest extends TestCase
|
||||||
'description' => 'description',
|
'description' => 'description',
|
||||||
'sku' => 'sku',
|
'sku' => 'sku',
|
||||||
'category' => 'PHYSICAL_GOODS',
|
'category' => 'PHYSICAL_GOODS',
|
||||||
|
'url' => 'url',
|
||||||
|
'image_url' => 'image_url',
|
||||||
'tax' => [2],
|
'tax' => [2],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,14 @@ class ItemFactoryTest extends TestCase
|
||||||
$woocommerce->session = $session;
|
$woocommerce->session = $session;
|
||||||
$session->shouldReceive('get')->andReturn([]);
|
$session->shouldReceive('get')->andReturn([]);
|
||||||
|
|
||||||
|
when('wp_get_attachment_image_src')->justReturn('image_url');
|
||||||
|
$product
|
||||||
|
->expects('get_image_id')
|
||||||
|
->andReturn(1);
|
||||||
|
$product
|
||||||
|
->expects('get_permalink')
|
||||||
|
->andReturn('url');
|
||||||
|
|
||||||
$result = $testee->from_wc_cart($cart);
|
$result = $testee->from_wc_cart($cart);
|
||||||
|
|
||||||
$this->assertCount(1, $result);
|
$this->assertCount(1, $result);
|
||||||
|
@ -107,6 +115,13 @@ class ItemFactoryTest extends TestCase
|
||||||
$woocommerce->session = $session;
|
$woocommerce->session = $session;
|
||||||
$session->shouldReceive('get')->andReturn([]);
|
$session->shouldReceive('get')->andReturn([]);
|
||||||
|
|
||||||
|
when('wp_get_attachment_image_src')->justReturn('image_url');
|
||||||
|
$product
|
||||||
|
->expects('get_image_id')
|
||||||
|
->andReturn(1);
|
||||||
|
$product
|
||||||
|
->expects('get_permalink')
|
||||||
|
->andReturn('url');
|
||||||
|
|
||||||
$result = $testee->from_wc_cart($cart);
|
$result = $testee->from_wc_cart($cart);
|
||||||
|
|
||||||
|
@ -132,6 +147,14 @@ class ItemFactoryTest extends TestCase
|
||||||
expect('wp_strip_all_tags')->andReturnFirstArg();
|
expect('wp_strip_all_tags')->andReturnFirstArg();
|
||||||
expect('strip_shortcodes')->andReturnFirstArg();
|
expect('strip_shortcodes')->andReturnFirstArg();
|
||||||
|
|
||||||
|
when('wp_get_attachment_image_src')->justReturn('image_url');
|
||||||
|
$product
|
||||||
|
->expects('get_image_id')
|
||||||
|
->andReturn(1);
|
||||||
|
$product
|
||||||
|
->expects('get_permalink')
|
||||||
|
->andReturn('url');
|
||||||
|
|
||||||
$item = Mockery::mock(\WC_Order_Item_Product::class);
|
$item = Mockery::mock(\WC_Order_Item_Product::class);
|
||||||
$item
|
$item
|
||||||
->expects('get_product')
|
->expects('get_product')
|
||||||
|
@ -217,6 +240,14 @@ class ItemFactoryTest extends TestCase
|
||||||
->expects('get_fees')
|
->expects('get_fees')
|
||||||
->andReturn([]);
|
->andReturn([]);
|
||||||
|
|
||||||
|
when('wp_get_attachment_image_src')->justReturn('image_url');
|
||||||
|
$product
|
||||||
|
->expects('get_image_id')
|
||||||
|
->andReturn(1);
|
||||||
|
$product
|
||||||
|
->expects('get_permalink')
|
||||||
|
->andReturn('url');
|
||||||
|
|
||||||
$result = $testee->from_wc_order($order);
|
$result = $testee->from_wc_order($order);
|
||||||
$item = current($result);
|
$item = current($result);
|
||||||
/**
|
/**
|
||||||
|
@ -271,6 +302,14 @@ class ItemFactoryTest extends TestCase
|
||||||
->expects('get_fees')
|
->expects('get_fees')
|
||||||
->andReturn([]);
|
->andReturn([]);
|
||||||
|
|
||||||
|
when('wp_get_attachment_image_src')->justReturn('image_url');
|
||||||
|
$product
|
||||||
|
->expects('get_image_id')
|
||||||
|
->andReturn(1);
|
||||||
|
$product
|
||||||
|
->expects('get_permalink')
|
||||||
|
->andReturn('url');
|
||||||
|
|
||||||
$result = $testee->from_wc_order($order);
|
$result = $testee->from_wc_order($order);
|
||||||
$item = current($result);
|
$item = current($result);
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue