PaymentRulesEventsTest.php in Ubercart 8.4
File
payment/uc_payment/tests/src/Functional/PaymentRulesEventsTest.php
View source
<?php
namespace Drupal\Tests\uc_payment\Functional;
use Drupal\rules\Context\ContextConfig;
use Drupal\Tests\uc_store\Functional\UbercartBrowserTestBase;
class PaymentRulesEventsTest extends UbercartBrowserTestBase {
protected $profile = 'testing';
protected static $modules = [
'uc_payment',
'uc_payment_pack',
'uc_order',
'rules',
];
protected static $adminPermissions = [
'view payments',
'manual payments',
'delete payments',
];
protected $rulesStorage;
protected $expressionManager;
protected function setUp() {
parent::setUp();
$this
->drupalLogin($this->adminUser);
$this->rulesStorage = $this->container
->get('entity_type.manager')
->getStorage('rules_reaction_rule');
$this->expressionManager = $this->container
->get('plugin.manager.rules_expression');
}
public function testRulesEvents() {
$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();
}
$assert = $this
->assertSession();
$method = $this
->createPaymentMethod('check');
$order = $this
->createOrder();
$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');
}
}