View source
<?php
namespace Drupal\Tests\apigee_edge_actions\Kernel\Plugin\RulesEvent;
use Drupal\apigee_edge\Entity\ApiProduct;
use Drupal\rules\Context\ContextConfig;
use Drupal\Tests\apigee_edge_actions\Kernel\ApigeeEdgeActionsRulesKernelTestBase;
class EdgeEntityAddProductEventTest extends ApigeeEdgeActionsRulesKernelTestBase {
public static $modules = [
'apigee_edge_actions',
'apigee_edge_actions_debug',
'apigee_edge',
'apigee_edge_teams',
'apigee_mock_api_client',
'dblog',
'key',
'options',
];
public function testEvent() {
$api_product_name = $this
->randomMachineName();
$rule = $this->expressionManager
->createRule();
$rule
->addAction('apigee_edge_actions_log_message', ContextConfig::create()
->setValue('message', "Product {{ api_product_name }} was added to app {{ developer_app.name }}.")
->process('message', 'rules_tokens'));
$rule
->addCondition('rules_data_comparison', ContextConfig::create()
->map('data', 'api_product_name')
->setValue('value', $api_product_name));
$config_entity = $this->storage
->create([
'id' => 'app_insert_rule',
'events' => [
[
'event_name' => 'apigee_edge_actions_entity_add_product:developer_app',
],
],
'expression' => $rule
->getConfiguration(),
]);
$config_entity
->save();
$developer_app = $this
->createDeveloperApp();
$api_product = ApiProduct::create([
'name' => $api_product_name,
'displayName' => $this
->getRandomGenerator()
->word(16),
'approvalType' => ApiProduct::APPROVAL_TYPE_AUTO,
]);
$this->stack
->queueMockResponse([
'api_product' => [
'product' => $api_product,
],
]);
$api_product
->save();
$this->stack
->queueMockResponse([
'api_product' => [
'product' => $api_product,
],
]);
$this
->queueDeveloperResponse($this->account);
$this->stack
->queueMockResponse([
'get_developer_apps' => [
'apps' => [
$developer_app,
],
],
]);
$credential_factory = \Drupal::service('apigee_edge.controller.developer_app_credential_factory');
$credential_factory
->developerAppCredentialController($this->account
->uuid(), $developer_app
->getName())
->addProducts($this
->randomString(), [
$api_product
->id(),
]);
$this
->assertLogsContains("Event apigee_edge_actions_entity_add_product:developer_app was dispatched.");
$this
->assertLogsContains("Product {$api_product->getName()} was added to app {$developer_app->getName()}.");
}
}