commerce-8.x-2.8/modules/order/tests/src/Functional/OrderTest.php
modules/order/tests/src/Functional/OrderTest.php
<?php namespace Drupal\Tests\commerce_order\Functional; use Drupal\commerce_order\Entity\Order; use Drupal\commerce_order\Entity\OrderItem; use Drupal\commerce_price\Price; /** * Tests the commerce_order entity forms. * * @group commerce */ class OrderTest extends OrderBrowserTestBase { /** * Tests creating an order programaticaly and through the UI. */ public function testCreateOrder() { $order_item = $this->createEntity('commerce_order_item', [ 'type' => 'default', 'unit_price' => [ 'number' => '999', 'currency_code' => 'USD', ], ]); $order = $this->createEntity('commerce_order', [ 'type' => 'default', 'mail' => $this->loggedInUser->getEmail(), 'order_items' => [$order_item], 'uid' => $this->loggedInUser, 'store_id' => $this->store, ]); $order_exists = (bool) Order::load($order->id()); $this->assertNotEmpty($order_exists, 'The new order has been created in the database.'); } /** * Tests deleting an order programaticaly and through the UI. */ public function testDeleteOrder() { $order_item = $this->createEntity('commerce_order_item', [ 'type' => 'default', 'unit_price' => [ 'number' => '999', 'currency_code' => 'USD', ], ]); $order = $this->createEntity('commerce_order', [ 'type' => 'default', 'mail' => $this->loggedInUser->getEmail(), 'order_items' => [$order_item], 'uid' => $this->loggedInUser, 'store_id' => $this->store, ]); $order->delete(); $order_exists = (bool) Order::load($order->id()); $order_item_exists = (bool) OrderItem::load($order_item->id()); $this->assertEmpty($order_exists, 'The new order has been deleted from the database.'); $this->assertEmpty($order_item_exists, 'The matching order item has been deleted from the database.'); } /** * Tests the generation of the 'placed' and 'completed' timestamps. */ public function testOrderTimestamps() { $customer = $this->createUser(); $order_item = $this->createEntity('commerce_order_item', [ 'type' => 'default', 'unit_price' => new Price('12.00', 'USD'), ]); /** @var \Drupal\commerce_order\Entity\OrderInterface $order */ $order = $this->createEntity('commerce_order', [ 'type' => 'default', 'mail' => $this->loggedInUser->getEmail(), 'store_id' => $this->store->id(), 'uid' => $customer, 'order_items' => [$order_item], ]); $order->save(); $this->assertNull($order->getPlacedTime()); $this->assertNull($order->getCompletedTime()); // Transitioning the order out of the draft state should set the timestamps. $transition = $order->getState()->getWorkflow()->getTransition('place'); $order->getState()->applyTransition($transition); $order->save(); $this->assertEquals($order->getPlacedTime(), \Drupal::time()->getRequestTime()); $this->assertEquals($order->getCompletedTime(), \Drupal::time()->getRequestTime()); } }