commerce-8.x-2.8/modules/order/tests/src/Functional/OrderItemTypeTest.php
modules/order/tests/src/Functional/OrderItemTypeTest.php
<?php
namespace Drupal\Tests\commerce_order\Functional;
use Drupal\commerce_order\Entity\OrderItemType;
/**
* Tests the commerce_order_item_type entity type.
*
* @group commerce
*/
class OrderItemTypeTest extends OrderBrowserTestBase {
/**
* Tests creating an order item type programmatically and through the add form.
*/
public function testOrderItemTypeCreation() {
$values = [
'id' => strtolower($this->randomMachineName(8)),
'label' => $this->randomMachineName(16),
'purchasableEntityType' => 'commerce_product_variation',
'orderType' => 'default',
];
$this->createEntity('commerce_order_item_type', $values);
$order_item_type = OrderItemType::load($values['id']);
$this->assertEquals($order_item_type->label(), $values['label'], 'The new order item type has the correct label.');
$this->assertEquals($order_item_type->getPurchasableEntityTypeId(), $values['purchasableEntityType'], 'The new order item type has the correct purchasable entity type.');
$this->assertEquals($order_item_type->getOrderTypeId(), $values['orderType'], 'The new order item type has the correct order type.');
$this->drupalGet('admin/commerce/config/order-item-types/add');
$edit = [
'id' => strtolower($this->randomMachineName(8)),
'label' => $this->randomMachineName(16),
'purchasableEntityType' => 'commerce_product_variation',
'orderType' => 'default',
];
$this->submitForm($edit, t('Save'));
$order_item_type = OrderItemType::load($edit['id']);
$this->assertEquals($order_item_type->label(), $edit['label'], 'The new order item type has the correct label.');
$this->assertEquals($order_item_type->getPurchasableEntityTypeId(), $edit['purchasableEntityType'], 'The new order item type has the correct purchasable entity type.');
$this->assertEquals($order_item_type->getOrderTypeId(), $edit['orderType'], 'The new order item type has the correct order type.');
}
/**
* Tests updating an order item type through the edit form.
*/
public function testOrderItemTypeEditing() {
$values = [
'id' => strtolower($this->randomMachineName(8)),
'label' => $this->randomMachineName(16),
'purchasableEntityType' => 'commerce_product_variation',
'orderType' => 'default',
];
/** @var \Drupal\commerce_order\Entity\OrderItemTypeInterface $type */
$order_item_type = $this->createEntity('commerce_order_item_type', $values);
$this->drupalGet($order_item_type->toUrl('edit-form'));
$edit = [
'label' => $this->randomMachineName(16),
];
$this->submitForm($edit, t('Save'));
$order_item_type = OrderItemType::load($values['id']);
$this->assertEquals($order_item_type->label(), $edit['label'], 'The label of the order item type has been changed.');
}
/**
* Tests deleting an order item type programmatically and through the form.
*/
public function testOrderItemTypeDeletion() {
/** @var \Drupal\commerce_order\Entity\OrderItemTypeInterface $type */
$type = $this->createEntity('commerce_order_item_type', [
'id' => strtolower($this->randomMachineName(8)),
'label' => $this->randomMachineName(16),
'purchasableEntityType' => 'commerce_product_variation',
'orderType' => 'default',
]);
// Confirm that the delete page is not available when the type is locked.
$type->lock();
$type->save();
$this->drupalGet($type->toUrl('delete-form'));
$this->assertSession()->statusCodeEquals('403');
// Unlock the type, confirm that deletion works.
$type->unlock();
$type->save();
$this->drupalGet($type->toUrl('delete-form'));
$this->assertSession()->statusCodeEquals(200);
$this->assertSession()->pageTextContains(t('This action cannot be undone.'));
$this->submitForm([], t('Delete'));
$order_item_type_exists = (bool) OrderItemType::load($type->id());
$this->assertEmpty($order_item_type_exists, 'The order item type has been deleted form the database.');
}
}
