public function EdgeEntityAddProductEventTest::testEvent in Apigee Edge 8
Tests add_member events for Edge entities.
Throws
\Drupal\Core\Entity\EntityStorageException
\Drupal\rules\Exception\LogicException
File
- modules/
apigee_edge_actions/ tests/ src/ Kernel/ Plugin/ RulesEvent/ EdgeEntityAddProductEventTest.php, line 57
Class
- EdgeEntityAddProductEventTest
- Tests Edge entity add_product event.
Namespace
Drupal\Tests\apigee_edge_actions\Kernel\Plugin\RulesEventCode
public function testEvent() {
$api_product_name = $this
->randomMachineName();
// Create an insert rule.
$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'));
// Test condition.
$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();
/** @var \Drupal\apigee_edge\Entity\AppInterface $developer_app */
$developer_app = $this
->createDeveloperApp();
$api_product = ApiProduct::create([
'name' => $api_product_name,
'displayName' => $this
->getRandomGenerator()
->word(16),
'approvalType' => ApiProduct::APPROVAL_TYPE_AUTO,
]);
/** @var \Drupal\apigee_edge\Entity\ApiProduct $api_product */
$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,
],
],
]);
/** @var \Drupal\apigee_edge\Entity\Controller\DeveloperAppCredentialControllerFactoryInterface $credential_factory */
$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()}.");
}