commerce-8.x-2.8/modules/payment/tests/src/Kernel/FilterPaymentGatewaysEventTest.php
modules/payment/tests/src/Kernel/FilterPaymentGatewaysEventTest.php
<?php namespace Drupal\Tests\commerce_payment\Kernel; use Drupal\commerce_order\Entity\Order; use Drupal\commerce_payment\Entity\PaymentGateway; use Drupal\profile\Entity\Profile; use Drupal\Tests\commerce\Kernel\CommerceKernelTestBase; /** * Tests the FilterPaymentGatewaysEvent. * * @group commerce */ class FilterPaymentGatewaysEventTest extends CommerceKernelTestBase { /** * The payment gateway storage. * * @var \Drupal\commerce_payment\PaymentGatewayStorageInterface */ protected $storage; /** * Modules to enable. * * @var array */ public static $modules = [ 'address', 'entity_reference_revisions', 'profile', 'state_machine', 'commerce_product', 'commerce_order', 'commerce_payment', 'commerce_payment_example', 'commerce_payment_test', ]; /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->installEntitySchema('profile'); $this->installEntitySchema('commerce_order'); $this->installEntitySchema('commerce_order_item'); $this->installConfig('commerce_order'); $this->installConfig('commerce_payment'); $this->storage = $this->container->get('entity_type.manager')->getStorage('commerce_payment_gateway'); } /** * Tests that the proper gateway is filtered out. */ public function testEvent() { $payment_gateway_example = PaymentGateway::create([ 'id' => 'example', 'label' => 'Example', 'plugin' => 'example_onsite', 'weight' => 1, ]); $payment_gateway_example->save(); $payment_gateway_filtered = PaymentGateway::create([ 'id' => 'example_filtered', 'label' => 'Example (Filtered)', 'plugin' => 'example_onsite', 'weight' => 2, ]); $payment_gateway_filtered->save(); $profile = Profile::create([ 'type' => 'customer', ]); $profile->save(); $profile = $this->reloadEntity($profile); $user = $this->createUser(); $order = Order::create([ 'type' => 'default', 'state' => 'draft', 'mail' => $user->getEmail(), 'uid' => $user->id(), 'ip_address' => '127.0.0.1', 'order_number' => '6', 'billing_profile' => $profile, 'store_id' => $this->store->id(), ]); $order->save(); $available_gateways = $this->storage->loadMultipleForOrder($order); $this->assertEquals(2, count($available_gateways)); $gateway = array_shift($available_gateways); $this->assertEquals($payment_gateway_example->label(), $gateway->label()); $gateway = array_shift($available_gateways); $this->assertEquals($payment_gateway_filtered->label(), $gateway->label()); $order->setData('excluded_gateways', [$payment_gateway_filtered->id()]); $available_gateways = $this->storage->loadMultipleForOrder($order); $this->assertEquals(1, count($available_gateways)); $gateway = array_shift($available_gateways); $this->assertEquals($payment_gateway_example->label(), $gateway->label()); } }