commerce_shipping-8.x-2.0-rc2/tests/src/Kernel/FilterShippingMethodsEventTest.php
tests/src/Kernel/FilterShippingMethodsEventTest.php
<?php namespace Drupal\Tests\commerce_shipping\Kernel; use Drupal\commerce_order\Entity\Order; use Drupal\commerce_price\Price; use Drupal\commerce_shipping\Entity\Shipment; use Drupal\commerce_shipping\Entity\ShippingMethod; use Drupal\commerce_shipping\ShipmentItem; use Drupal\physical\Weight; /** * Tests the FilterShippingMethodsEvent. * * @coversDefaultClass \Drupal\commerce_shipping\Event\FilterShippingMethodsEvent * @group commerce_shipping */ class FilterShippingMethodsEventTest extends ShippingKernelTestBase { /** * The shipping method storage. * * @var \Drupal\commerce_shipping\ShippingMethodStorageInterface */ protected $storage; /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); $this->storage = $this->container->get('entity_type.manager')->getStorage('commerce_shipping_method'); } /** * Tests that the shipping method is removed. */ public function testEvent() { $shipping_method_example = ShippingMethod::create([ 'name' => 'Example', 'plugin' => [ 'target_plugin_id' => 'flat_rate', 'target_plugin_configuration' => [], ], 'status' => 1, 'stores' => $this->store->id(), ]); $shipping_method_example->save(); $shipping_method_filtered = ShippingMethod::create([ 'name' => 'Example (Filtered)', 'plugin' => [ 'target_plugin_id' => 'flat_rate', 'target_plugin_configuration' => [], ], 'status' => 1, 'stores' => $this->store->id(), ]); $shipping_method_filtered->save(); $user = $this->createUser(); $order = Order::create([ 'type' => 'default', 'state' => 'draft', 'mail' => $user->getEmail(), 'uid' => $user->id(), 'store_id' => $this->store->id(), ]); $order->save(); $shipment = Shipment::create([ 'type' => 'default', 'order_id' => $order->id(), 'shipping_method' => $shipping_method_filtered, 'title' => 'Shipment', 'amount' => new Price('10.00', 'USD'), 'items' => [ new ShipmentItem([ 'order_item_id' => 10, 'title' => 'T-shirt (red, large)', 'quantity' => 1, 'weight' => new Weight('10', 'kg'), 'declared_value' => new Price('15', 'USD'), ]), ], ]); $shipment->save(); $available_methods = $this->storage->loadMultipleForShipment($shipment); $this->assertEquals(2, count($available_methods)); $method = array_shift($available_methods); $this->assertEquals($shipping_method_example->label(), $method->label()); $method = array_shift($available_methods); $this->assertEquals($shipping_method_filtered->label(), $method->label()); $shipment->setData('excluded_methods', [$shipping_method_filtered->id()]); $available_methods = $this->storage->loadMultipleForShipment($shipment); $this->assertEquals(1, count($available_methods)); $method = array_shift($available_methods); $this->assertEquals($shipping_method_example->label(), $method->label()); } }