commerce-8.x-2.8/modules/payment/tests/src/Kernel/Entity/PaymentTest.php
modules/payment/tests/src/Kernel/Entity/PaymentTest.php
<?php namespace Drupal\Tests\commerce_payment\Kernel\Entity; use Drupal\commerce_order\Entity\Order; use Drupal\commerce_payment\Entity\PaymentGateway; use Drupal\commerce_payment\Entity\Payment; use Drupal\commerce_payment\Plugin\Commerce\PaymentType\PaymentDefault; use Drupal\commerce_price\Price; use Drupal\Tests\commerce\Kernel\CommerceKernelTestBase; /** * Tests the payment entity. * * @coversDefaultClass \Drupal\commerce_payment\Entity\Payment * * @group commerce */ class PaymentTest extends CommerceKernelTestBase { /** * A sample user. * * @var \Drupal\user\UserInterface */ protected $user; /** * Modules to enable. * * @var array */ public static $modules = [ 'entity_reference_revisions', 'profile', 'state_machine', 'commerce_product', 'commerce_order', 'commerce_payment', 'commerce_payment_example', ]; /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->installEntitySchema('profile'); $this->installEntitySchema('commerce_order'); $this->installEntitySchema('commerce_order_item'); $this->installEntitySchema('commerce_payment'); $this->installConfig('commerce_order'); $this->installConfig('commerce_payment'); PaymentGateway::create([ 'id' => 'example', 'label' => 'Example', 'plugin' => 'example_onsite', ])->save(); $user = $this->createUser(); $this->user = $this->reloadEntity($user); } /** * @covers ::getType * @covers ::getPaymentGatewayId * @covers ::getPaymentGatewayMode * @covers ::getOrder * @covers ::getOrderId * @covers ::getRemoteId * @covers ::setRemoteId * @covers ::getRemoteState * @covers ::setRemoteState * @covers ::getBalance * @covers ::getAmount * @covers ::setAmount * @covers ::getRefundedAmount * @covers ::setRefundedAmount * @covers ::getState * @covers ::setState * @covers ::isExpired * @covers ::getExpiresTime * @covers ::setExpiresTime * @covers ::isCompleted * @covers ::getCompletedTime * @covers ::setCompletedTime */ public function testPayment() { $order = Order::create([ 'type' => 'default', 'mail' => $this->user->getEmail(), 'uid' => $this->user->id(), 'store_id' => $this->store->id(), ]); $order->save(); $order = $this->reloadEntity($order); /** @var \Drupal\commerce_payment\Entity\PaymentInterface $payment */ $payment = Payment::create([ 'type' => 'payment_default', 'payment_gateway' => 'example', 'order_id' => $order, 'amount' => new Price('30', 'USD'), 'refunded_amount' => new Price('10', 'USD'), 'state' => 'refunded', ]); $payment->save(); $this->assertInstanceOf(PaymentDefault::class, $payment->getType()); $this->assertEquals('example', $payment->getPaymentGatewayId()); $this->assertEquals('test', $payment->getPaymentGatewayMode()); $this->assertEquals($order, $payment->getOrder()); $this->assertEquals($order->id(), $payment->getOrderId()); $payment->setRemoteId('123456'); $this->assertEquals('123456', $payment->getRemoteId()); $payment->setRemoteState('pending'); $this->assertEquals('pending', $payment->getRemoteState()); $this->assertEquals(new Price('30', 'USD'), $payment->getAmount()); $this->assertEquals(new Price('10', 'USD'), $payment->getRefundedAmount()); $this->assertEquals(new Price('20', 'USD'), $payment->getBalance()); $payment->setAmount(new Price('40', 'USD')); $this->assertEquals(new Price('40', 'USD'), $payment->getAmount()); $payment->setRefundedAmount(new Price('15', 'USD')); $this->assertEquals(new Price('15', 'USD'), $payment->getRefundedAmount()); $this->assertEquals('refunded', $payment->getState()->value); $payment->setState('completed'); $this->assertEquals('completed', $payment->getState()->value); $this->assertFalse($payment->isExpired()); $payment->setExpiresTime(635879700); $this->assertTrue($payment->isExpired()); $this->assertEquals(635879700, $payment->getExpiresTime()); $this->assertFalse($payment->isCompleted()); $payment->setCompletedTime(635879700); $this->assertEquals(635879700, $payment->getCompletedTime()); $this->assertTrue($payment->isCompleted()); } }