commerce_shipping-8.x-2.0-rc2/tests/src/Kernel/CartIntegrationTest.php
tests/src/Kernel/CartIntegrationTest.php
<?php
namespace Drupal\Tests\commerce_shipping\Kernel;
use Drupal\commerce_order\Entity\OrderInterface;
use Drupal\commerce_price\Price;
use Drupal\commerce_product\Entity\ProductVariation;
use Drupal\physical\Weight;
use Drupal\profile\Entity\Profile;
/**
* Tests integration with the Cart module.
*
* @group commerce_shipping
*/
class CartIntegrationTest extends ShippingKernelTestBase {
/**
* The sample product variations.
*
* @var \Drupal\commerce_product\Entity\ProductVariationInterface[]
*/
protected $variations = [];
/**
* The cart provider.
*
* @var \Drupal\commerce_cart\CartProviderInterface
*/
protected $cartProvider;
/**
* The cart manager.
*
* @var \Drupal\commerce_cart\CartManagerInterface
*/
protected $cartManager;
/**
* {@inheritdoc}
*/
protected static $modules = [
'commerce_cart',
];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->installConfig(['commerce_cart']);
$first_variation = ProductVariation::create([
'type' => 'default',
'sku' => 'test-product-01',
'title' => 'Hat',
'price' => new Price('10', 'USD'),
'weight' => new Weight('0', 'g'),
]);
$first_variation->save();
$this->variations[] = $first_variation;
$second_variation = ProductVariation::create([
'type' => 'default',
'sku' => 'test-product-02',
'title' => 'Mug',
'price' => new Price('10', 'USD'),
'weight' => new Weight('0', 'g'),
]);
$second_variation->save();
$this->variations[] = $second_variation;
$this->cartProvider = $this->container->get('commerce_cart.cart_provider');
$this->cartManager = $this->container->get('commerce_cart.cart_manager');
}
/**
* Tests that emptying a cart removes its shipments.
*/
public function testEmptyCart() {
$cart = $this->cartProvider->createCart('default');
$this->cartManager->addEntity($cart, $this->variations[0]);
$shipping_profile = Profile::create([
'type' => 'customer',
'address' => [
'country_code' => 'US',
],
]);
$shipping_profile->save();
$shipping_order_manager = $this->container->get('commerce_shipping.order_manager');
$shipments = $shipping_order_manager->pack($cart, $shipping_profile);
$cart->set('shipments', $shipments);
$cart->setRefreshState(OrderInterface::REFRESH_SKIP);
$cart->save();
$this->assertCount(1, $cart->get('shipments')->referencedEntities());
$this->cartManager->emptyCart($cart);
$this->assertCount(0, $cart->get('shipments')->referencedEntities());
$storage = $this->container->get('entity_type.manager')->getStorage('commerce_shipment');
$shipments = $storage->loadMultiple();
$this->assertEmpty($shipments);
}
}
