woocommerce-paypal-payments/tests/PHPUnit/ApiClient/Endpoint/OrderTest.php

101 lines
3.4 KiB
PHP
Raw Normal View History

2020-08-31 13:38:54 +03:00
<?php
declare(strict_types=1);
2020-09-14 07:51:45 +03:00
namespace WooCommerce\PayPalCommerce\ApiClient\Endpoint;
2020-08-31 13:38:54 +03:00
2020-09-14 07:51:45 +03:00
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
use WooCommerce\PayPalCommerce\ApiClient\TestCase;
2020-08-31 13:38:54 +03:00
use Mockery;
class OrderTest extends TestCase
{
public function testOrder()
{
$id = 'id';
$createTime = new \DateTime();
$updateTime = new \DateTime();
$unit = Mockery::mock(PurchaseUnit::class);
2020-09-01 09:47:36 +03:00
$unit->expects('to_array')->andReturn([1]);
2020-08-31 13:38:54 +03:00
$status = Mockery::mock(OrderStatus::class);
$status->expects('name')->andReturn('CREATED');
$payer = Mockery::mock(Payer::class);
$payer
2020-09-01 09:47:36 +03:00
->expects('to_array')->andReturn(['payer']);
2020-08-31 13:38:54 +03:00
$intent = 'AUTHORIZE';
$applicationContext = Mockery::mock(ApplicationContext::class);
$applicationContext
2020-09-01 09:47:36 +03:00
->expects('to_array')
2020-08-31 13:38:54 +03:00
->andReturn(['applicationContext']);
$paymentSource = Mockery::mock(PaymentSource::class);
$paymentSource
2020-09-01 09:47:36 +03:00
->expects('to_array')
2020-08-31 13:38:54 +03:00
->andReturn(['paymentSource']);
$testee = new Order(
$id,
[$unit],
$status,
$applicationContext,
$paymentSource,
$payer,
$intent,
$createTime,
$updateTime
);
$this->assertEquals($id, $testee->id());
2020-09-01 09:47:36 +03:00
$this->assertEquals($createTime, $testee->create_time());
$this->assertEquals($updateTime, $testee->update_time());
$this->assertEquals([$unit], $testee->purchase_units());
2020-08-31 13:38:54 +03:00
$this->assertEquals($payer, $testee->payer());
$this->assertEquals($intent, $testee->intent());
$this->assertEquals($status, $testee->status());
$expected = [
'id' => $id,
'intent' => $intent,
'status' => 'CREATED',
'purchase_units' => [
[1],
],
'create_time' => $createTime->format(\DateTimeInterface::ISO8601),
'update_time' => $updateTime->format(\DateTimeInterface::ISO8601),
'payer' => ['payer'],
'application_context' => ['applicationContext'],
'payment_source' => ['paymentSource']
];
2020-09-01 09:47:36 +03:00
$this->assertEquals($expected, $testee->to_array());
2020-08-31 13:38:54 +03:00
}
public function testOrderNoDatesOrPayer()
{
$id = 'id';
$unit = Mockery::mock(PurchaseUnit::class);
2020-09-01 09:47:36 +03:00
$unit->expects('to_array')->andReturn([1]);
2020-08-31 13:38:54 +03:00
$status = Mockery::mock(OrderStatus::class);
$status->expects('name')->andReturn('CREATED');
$testee = new Order(
$id,
[$unit],
$status
);
2020-09-01 09:47:36 +03:00
$this->assertEquals(null, $testee->create_time());
$this->assertEquals(null, $testee->update_time());
2020-08-31 13:38:54 +03:00
$this->assertEquals(null, $testee->payer());
$this->assertEquals('CAPTURE', $testee->intent());
2020-09-01 09:47:36 +03:00
$array = $testee->to_array();
2020-08-31 13:38:54 +03:00
$this->assertFalse(array_key_exists('payer', $array));
$this->assertFalse(array_key_exists('create_time', $array));
$this->assertFalse(array_key_exists('update_time', $array));
}
}