You are here

public function PaymentRulesEventsTest::testRulesEvents in Ubercart 8.4

Tests the one event provided by uc_payment.

File

payment/uc_payment/tests/src/Functional/PaymentRulesEventsTest.php, line 72

Class

PaymentRulesEventsTest
Tests the one event that uc_payment provides for use in Rules module.

Namespace

Drupal\Tests\uc_payment\Functional

Code

public function testRulesEvents() {

  // Create one reaction rule for each event that uc_payment triggers.
  $rule_data = [
    1 => [
      'uc_payment_entered',
      'A payment gets entered for an order',
    ],
  ];
  foreach ($rule_data as $i => list($event_name, $description)) {
    $rule[$i] = $this->expressionManager
      ->createRule();
    $message[$i] = 'RULES message ' . $i . ': ' . $description;
    $rule[$i]
      ->addAction('rules_system_message', ContextConfig::create()
      ->setValue('message', $message[$i])
      ->setValue('type', 'status'));
    $config_entity = $this->rulesStorage
      ->create([
      'id' => 'rule' . $i,
      'events' => [
        [
          'event_name' => $event_name,
        ],
      ],
      'expression' => $rule[$i]
        ->getConfiguration(),
    ]);
    $config_entity
      ->save();
  }

  /** @var \Drupal\Tests\WebAssert $assert */
  $assert = $this
    ->assertSession();

  // Create a payment method to use for checkout.
  $method = $this
    ->createPaymentMethod('check');

  // Create an order to test payment events.
  $order = $this
    ->createOrder();

  // Add a payment.
  $edit = [
    'amount' => $order
      ->getTotal(),
    'method' => 'check',
  ];
  $this
    ->drupalGet('admin/store/orders/' . $order
    ->id() . '/payments');
  $this
    ->submitForm($edit, 'Record payment');
  $assert
    ->pageTextContains('Payment entered.');
  $assert
    ->pageTextContains($message[1], '"' . $message[1] . '" IS shown');
}