Danny Lamb
8 years ago
16 changed files with 660 additions and 50 deletions
@ -0,0 +1,56 @@ |
|||||||
|
uuid: 3ef878c1-3187-4141-aba1-2aac5acc9366 |
||||||
|
langcode: en |
||||||
|
status: true |
||||||
|
dependencies: |
||||||
|
module: |
||||||
|
- islandora |
||||||
|
- rules |
||||||
|
enforced: |
||||||
|
module: |
||||||
|
- islandora |
||||||
|
id: broadcast_create_event |
||||||
|
label: 'Broadcast Create Event' |
||||||
|
events: |
||||||
|
- |
||||||
|
event_name: 'rules_entity_insert:fedora_resource' |
||||||
|
description: 'Broadcasts a ''Create'' event when a user creates a new FedoraResource.' |
||||||
|
tags: |
||||||
|
- '' |
||||||
|
config_version: '3' |
||||||
|
expression: |
||||||
|
id: rules_rule |
||||||
|
uuid: d25688b0-eef1-46b0-acf4-98a6d1ccd76a |
||||||
|
conditions: |
||||||
|
id: rules_and |
||||||
|
uuid: 6648629a-0b52-4352-bb85-df2cbafb7db2 |
||||||
|
conditions: { } |
||||||
|
actions: |
||||||
|
id: rules_action_set |
||||||
|
uuid: 957db51c-d055-4350-8caa-4ad773172e87 |
||||||
|
actions: |
||||||
|
- |
||||||
|
id: rules_action |
||||||
|
uuid: d483f5bc-fd36-4d7c-baa4-66234b438d1a |
||||||
|
context_values: { } |
||||||
|
context_mapping: |
||||||
|
entity: fedora_resource |
||||||
|
user: '@user.current_user_context:current_user' |
||||||
|
context_processors: { } |
||||||
|
provides_mapping: { } |
||||||
|
action_id: islandora_create_event_generator |
||||||
|
- |
||||||
|
id: rules_action |
||||||
|
uuid: bbcd7317-2879-4961-a79d-5827fab4e194 |
||||||
|
context_values: |
||||||
|
type: info |
||||||
|
repeat: false |
||||||
|
context_mapping: |
||||||
|
message: event_message |
||||||
|
context_processors: |
||||||
|
type: |
||||||
|
rules_tokens: { } |
||||||
|
repeat: |
||||||
|
rules_tokens: { } |
||||||
|
provides_mapping: { } |
||||||
|
action_id: rules_system_message |
||||||
|
|
@ -0,0 +1,56 @@ |
|||||||
|
uuid: 16c10c0c-68a7-4b75-ab8f-ab1778d7c2e2 |
||||||
|
langcode: en |
||||||
|
status: true |
||||||
|
dependencies: |
||||||
|
module: |
||||||
|
- islandora |
||||||
|
- rules |
||||||
|
enforced: |
||||||
|
module: |
||||||
|
- islandora |
||||||
|
id: broadcast_delete_event |
||||||
|
label: 'Broadcast Delete Event' |
||||||
|
events: |
||||||
|
- |
||||||
|
event_name: 'rules_entity_delete:fedora_resource' |
||||||
|
description: 'Broadcasts a ''Delete'' event when a user deletes a FedoraResource.' |
||||||
|
tags: |
||||||
|
- '' |
||||||
|
config_version: '3' |
||||||
|
expression: |
||||||
|
id: rules_rule |
||||||
|
uuid: dd0ffd15-c6b4-4578-8b54-9c9debae0216 |
||||||
|
conditions: |
||||||
|
id: rules_and |
||||||
|
uuid: 9c50dd1f-ec9a-4cd8-9d18-27c860815a1c |
||||||
|
conditions: { } |
||||||
|
actions: |
||||||
|
id: rules_action_set |
||||||
|
uuid: 7f1f1fc6-d5d2-450b-ba14-225e8e56448f |
||||||
|
actions: |
||||||
|
- |
||||||
|
id: rules_action |
||||||
|
uuid: 7ebcda8c-3626-4bff-a536-60caf9f46708 |
||||||
|
context_values: { } |
||||||
|
context_mapping: |
||||||
|
entity: fedora_resource |
||||||
|
user: '@user.current_user_context:current_user' |
||||||
|
context_processors: { } |
||||||
|
provides_mapping: { } |
||||||
|
action_id: islandora_delete_event_generator |
||||||
|
- |
||||||
|
id: rules_action |
||||||
|
uuid: bacf7f09-1d54-46f2-a4b9-e345992a604d |
||||||
|
context_values: |
||||||
|
type: info |
||||||
|
repeat: false |
||||||
|
context_mapping: |
||||||
|
message: event_message |
||||||
|
context_processors: |
||||||
|
type: |
||||||
|
rules_tokens: { } |
||||||
|
repeat: |
||||||
|
rules_tokens: { } |
||||||
|
provides_mapping: { } |
||||||
|
action_id: rules_system_message |
||||||
|
|
@ -0,0 +1,56 @@ |
|||||||
|
uuid: 3bfa9b33-b0a7-437e-a949-e50178a702fe |
||||||
|
langcode: en |
||||||
|
status: true |
||||||
|
dependencies: |
||||||
|
module: |
||||||
|
- islandora |
||||||
|
- rules |
||||||
|
enforced: |
||||||
|
module: |
||||||
|
- islandora |
||||||
|
id: broadcast_update_event |
||||||
|
label: 'Broadcast Update Event' |
||||||
|
events: |
||||||
|
- |
||||||
|
event_name: 'rules_entity_update:fedora_resource' |
||||||
|
description: 'Broadcasts a ''Update'' event when a user updates a FedoraResource.' |
||||||
|
tags: |
||||||
|
- '' |
||||||
|
config_version: '3' |
||||||
|
expression: |
||||||
|
id: rules_rule |
||||||
|
uuid: 55563628-5ea2-4459-989e-0ce573f50aaa |
||||||
|
conditions: |
||||||
|
id: rules_and |
||||||
|
uuid: 8113ab9f-7af6-4315-8701-60812bb86190 |
||||||
|
conditions: { } |
||||||
|
actions: |
||||||
|
id: rules_action_set |
||||||
|
uuid: 78330180-141b-404e-8bf3-b7c9d8dcc748 |
||||||
|
actions: |
||||||
|
- |
||||||
|
id: rules_action |
||||||
|
uuid: 86a6f157-8d0c-4b3c-bd8e-d4c3ce4794a7 |
||||||
|
context_values: { } |
||||||
|
context_mapping: |
||||||
|
entity: fedora_resource |
||||||
|
user: '@user.current_user_context:current_user' |
||||||
|
context_processors: { } |
||||||
|
provides_mapping: { } |
||||||
|
action_id: islandora_update_event_generator |
||||||
|
- |
||||||
|
id: rules_action |
||||||
|
uuid: f77c64ef-c737-4143-89b4-e1b6599232b5 |
||||||
|
context_values: |
||||||
|
type: info |
||||||
|
repeat: false |
||||||
|
context_mapping: |
||||||
|
message: event_message |
||||||
|
context_processors: |
||||||
|
type: |
||||||
|
rules_tokens: { } |
||||||
|
repeat: |
||||||
|
rules_tokens: { } |
||||||
|
provides_mapping: { } |
||||||
|
action_id: rules_system_message |
||||||
|
|
@ -0,0 +1,45 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\islandora\EventGenerator; |
||||||
|
|
||||||
|
use Drupal\Core\Entity\EntityInterface; |
||||||
|
use Drupal\user\UserInterface; |
||||||
|
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; |
||||||
|
use Drupal\rules\Core\RulesActionBase; |
||||||
|
use Symfony\Component\DependencyInjection\ContainerInterface; |
||||||
|
|
||||||
|
abstract class EventGeneratorActionBase extends RulesActionBase implements ContainerFactoryPluginInterface { |
||||||
|
|
||||||
|
/** |
||||||
|
* @var \Drupal\islandora\EventGenerator\EventGeneratorInterface; |
||||||
|
*/ |
||||||
|
protected $eventGenerator; |
||||||
|
|
||||||
|
/** |
||||||
|
* Constructs a MessageBroadcaster action. |
||||||
|
* |
||||||
|
* @param array $configuration |
||||||
|
* A configuration array containing information about the plugin instance. |
||||||
|
* @param string $plugin_id |
||||||
|
* The plugin ID for the plugin instance. |
||||||
|
* @param mixed $plugin_definition |
||||||
|
* The plugin implementation definition. |
||||||
|
*/ |
||||||
|
public function __construct(array $configuration, $plugin_id, $plugin_definition, EventGeneratorInterface $event_generator) { |
||||||
|
parent::__construct($configuration, $plugin_id, $plugin_definition); |
||||||
|
$this->eventGenerator = $event_generator; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { |
||||||
|
return new static( |
||||||
|
$configuration, |
||||||
|
$plugin_id, |
||||||
|
$plugin_definition, |
||||||
|
$container->get('islandora.eventgenerator') |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\islandora\Plugin\RulesAction; |
||||||
|
|
||||||
|
use Drupal\Core\Entity\EntityInterface; |
||||||
|
use Drupal\user\UserInterface; |
||||||
|
use Drupal\islandora\EventGenerator\EventGeneratorActionBase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Provides an action to generate a serialized Update event. |
||||||
|
* |
||||||
|
* @RulesAction( |
||||||
|
* id = "islandora_create_event_generator", |
||||||
|
* label = @Translation("Generate Create Event"), |
||||||
|
* category = @Translation("Islandora"), |
||||||
|
* context = { |
||||||
|
* "entity" = @ContextDefinition("entity", |
||||||
|
* label = @Translation("Created entity"), |
||||||
|
* description = @Translation("The entity that was created") |
||||||
|
* ), |
||||||
|
* "user" = @ContextDefinition("entity:user", |
||||||
|
* label = @Translation("User"), |
||||||
|
* description = @Translation("The user who created the entity") |
||||||
|
* ), |
||||||
|
* }, |
||||||
|
* provides = { |
||||||
|
* "event_message" = @ContextDefinition("string", |
||||||
|
* label = @Translation("Serialized event message") |
||||||
|
* ) |
||||||
|
* } |
||||||
|
* ) |
||||||
|
*/ |
||||||
|
class CreateEventGenerator extends EventGeneratorActionBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* Provides the serialized create event to downstream actions. |
||||||
|
*/ |
||||||
|
protected function doExecute(EntityInterface $entity, UserInterface $user) { |
||||||
|
$this->setProvidedValue('event_message', $this->eventGenerator->generateCreateEvent($entity, $user)); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\islandora\Plugin\RulesAction; |
||||||
|
|
||||||
|
use Drupal\Core\Entity\EntityInterface; |
||||||
|
use Drupal\user\UserInterface; |
||||||
|
use Drupal\islandora\EventGenerator\EventGeneratorActionBase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Provides an action to generate a serialized Update event. |
||||||
|
* |
||||||
|
* @RulesAction( |
||||||
|
* id = "islandora_delete_event_generator", |
||||||
|
* label = @Translation("Generate Delete Event"), |
||||||
|
* category = @Translation("Islandora"), |
||||||
|
* context = { |
||||||
|
* "entity" = @ContextDefinition("entity", |
||||||
|
* label = @Translation("Deleted entity"), |
||||||
|
* description = @Translation("The entity that was deleted") |
||||||
|
* ), |
||||||
|
* "user" = @ContextDefinition("entity:user", |
||||||
|
* label = @Translation("User"), |
||||||
|
* description = @Translation("The user who deleted the entity") |
||||||
|
* ), |
||||||
|
* }, |
||||||
|
* provides = { |
||||||
|
* "event_message" = @ContextDefinition("string", |
||||||
|
* label = @Translation("Serialized event message") |
||||||
|
* ) |
||||||
|
* } |
||||||
|
* ) |
||||||
|
*/ |
||||||
|
class DeleteEventGenerator extends EventGeneratorActionBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* Provides the serialized delete event to downstream actions. |
||||||
|
*/ |
||||||
|
protected function doExecute(EntityInterface $entity, UserInterface $user) { |
||||||
|
$this->setProvidedValue('event_message', $this->eventGenerator->generateDeleteEvent($entity, $user)); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,71 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\islandora\Plugin\RulesAction; |
||||||
|
|
||||||
|
use Drupal\Core\Plugin\ContainerFactoryPluginInterface; |
||||||
|
use Drupal\rules\Core\RulesActionBase; |
||||||
|
use Symfony\Component\DependencyInjection\ContainerInterface; |
||||||
|
|
||||||
|
/** |
||||||
|
* Provides an action to broadcast a message to a list of queues. |
||||||
|
* |
||||||
|
* @RulesAction( |
||||||
|
* id = "islandora_message_broadcaster", |
||||||
|
* label = @Translation("Broadcast Message"), |
||||||
|
* category = @Translation("Islandora"), |
||||||
|
* context = { |
||||||
|
* "message" = @ContextDefinition("string", |
||||||
|
* label = @Translation("Message"), |
||||||
|
* description = @Translation("The message to broadcast.") |
||||||
|
* ), |
||||||
|
* "broker_url" = @ContextDefinition("string", |
||||||
|
* label = @Translation("Broker URL"), |
||||||
|
* description = @Translation("URL of STOMP Broker"), |
||||||
|
* default_value = "http://localhost:61613" |
||||||
|
* ), |
||||||
|
* "queue" = @ContextDefinition("string", |
||||||
|
* label = @Translation("Queue"), |
||||||
|
* description = @Translation("Queue to publish message"), |
||||||
|
* default_value = "islandora/indexing/fedora" |
||||||
|
* ) |
||||||
|
* } |
||||||
|
* ) |
||||||
|
*/ |
||||||
|
class MessageBroadcaster extends RulesActionBase implements ContainerFactoryPluginInterface { |
||||||
|
|
||||||
|
protected $serializer; |
||||||
|
|
||||||
|
/** |
||||||
|
* Constructs a MessageBroadcaster action. |
||||||
|
* |
||||||
|
* @param array $configuration |
||||||
|
* A configuration array containing information about the plugin instance. |
||||||
|
* @param string $plugin_id |
||||||
|
* The plugin ID for the plugin instance. |
||||||
|
* @param mixed $plugin_definition |
||||||
|
* The plugin implementation definition. |
||||||
|
*/ |
||||||
|
public function __construct(array $configuration, $plugin_id, $plugin_definition) { |
||||||
|
parent::__construct($configuration, $plugin_id, $plugin_definition); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { |
||||||
|
return new static( |
||||||
|
$configuration, |
||||||
|
$plugin_id, |
||||||
|
$plugin_definition |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set a system message. |
||||||
|
* |
||||||
|
*/ |
||||||
|
protected function doExecute($message, $broker_url, $queue) { |
||||||
|
drupal_set_message($message, "info", FALSE); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\islandora\Plugin\RulesAction; |
||||||
|
|
||||||
|
use Drupal\Core\Entity\EntityInterface; |
||||||
|
use Drupal\user\UserInterface; |
||||||
|
use Drupal\islandora\EventGenerator\EventGeneratorActionBase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Provides an action to generate a serialized Update event. |
||||||
|
* |
||||||
|
* @RulesAction( |
||||||
|
* id = "islandora_update_event_generator", |
||||||
|
* label = @Translation("Generate Update Event"), |
||||||
|
* category = @Translation("Islandora"), |
||||||
|
* context = { |
||||||
|
* "entity" = @ContextDefinition("entity", |
||||||
|
* label = @Translation("Updated entity"), |
||||||
|
* description = @Translation("The entity that was updated") |
||||||
|
* ), |
||||||
|
* "user" = @ContextDefinition("entity:user", |
||||||
|
* label = @Translation("User"), |
||||||
|
* description = @Translation("The user who updated the entity") |
||||||
|
* ), |
||||||
|
* }, |
||||||
|
* provides = { |
||||||
|
* "event_message" = @ContextDefinition("string", |
||||||
|
* label = @Translation("Serialized event message") |
||||||
|
* ) |
||||||
|
* } |
||||||
|
* ) |
||||||
|
*/ |
||||||
|
class UpdateEventGenerator extends EventGeneratorActionBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* Provides the serialized update event to downstream actions. |
||||||
|
*/ |
||||||
|
protected function doExecute(EntityInterface $entity, UserInterface $user) { |
||||||
|
$this->setProvidedValue('event_message', $this->eventGenerator->generateUpdateEvent($entity, $user)); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\Tests\islandora\Kernel; |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests the basic behavior of the CreateEventGenerator rules action. |
||||||
|
* |
||||||
|
* @group islandora |
||||||
|
* @coversDefaultClass \Drupal\islandora\Plugin\RulesAction\CreateEventGenerator |
||||||
|
*/ |
||||||
|
class CreateEventGeneratorTest extends EventGeneratorActionTestBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public function setUp() { |
||||||
|
parent::setUp(); |
||||||
|
|
||||||
|
// Get an instance of the action. |
||||||
|
$this->action = $this->actionManager->createInstance('islandora_create_event_generator'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests the CreateEventGenerator action. |
||||||
|
* |
||||||
|
* @covers \Drupal\islandora\Plugin\RulesAction\CreateEventGenerator::execute |
||||||
|
*/ |
||||||
|
public function testExecute() { |
||||||
|
// Execute the action and get the message it outputs. |
||||||
|
$msg = $this->assertExecution(); |
||||||
|
|
||||||
|
// Assert it's outputs a 'Create' event. |
||||||
|
$this->assertTrue($msg["type"] == "Create", "Event must be of type 'Create'."); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\Tests\islandora\Kernel; |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests the basic behavior of the DeleteEventGenerator rules action. |
||||||
|
* |
||||||
|
* @group islandora |
||||||
|
* @coversDefaultClass \Drupal\islandora\Plugin\RulesAction\DeleteEventGenerator |
||||||
|
*/ |
||||||
|
class DeleteEventGeneratorTest extends EventGeneratorActionTestBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public function setUp() { |
||||||
|
parent::setUp(); |
||||||
|
|
||||||
|
// Get an instance of the action. |
||||||
|
$this->action = $this->actionManager->createInstance('islandora_delete_event_generator'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests the DeleteEventGenerator action. |
||||||
|
* |
||||||
|
* @covers \Drupal\islandora\Plugin\RulesAction\DeleteEventGenerator::execute |
||||||
|
*/ |
||||||
|
public function testExecute() { |
||||||
|
// Execute the action and get the message it outputs. |
||||||
|
$msg = $this->assertExecution(); |
||||||
|
|
||||||
|
// Assert it's outputs a 'Delete' event. |
||||||
|
$this->assertTrue($msg["type"] == "Delete", "Event must be of type 'Delete'."); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\Tests\islandora\Kernel; |
||||||
|
|
||||||
|
use Drupal\islandora\Entity\FedoraResource; |
||||||
|
use Drupal\islandora\EventGenerator\EventGenerator; |
||||||
|
use Drupal\simpletest\UserCreationTrait; |
||||||
|
|
||||||
|
/** |
||||||
|
* Base class for testing EventGenerator functionality. |
||||||
|
*/ |
||||||
|
abstract class EventGeneratorActionTestBase extends EventGeneratorTestBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* Action plugin manager. |
||||||
|
* |
||||||
|
* @var \Drupal\rules\Core\RulesActionManagerInterface |
||||||
|
*/ |
||||||
|
protected $actionManager; |
||||||
|
|
||||||
|
/** |
||||||
|
* Action to test. |
||||||
|
* |
||||||
|
* @var Drupal\rules\Core\RulesActionInterface |
||||||
|
*/ |
||||||
|
protected $action; |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public function setUp() { |
||||||
|
parent::setUp(); |
||||||
|
|
||||||
|
// Get the action manager |
||||||
|
$this->actionManager = $this->container->get('plugin.manager.rules_action'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Utility function to bootstrap an action, run it, and do basic asserts. |
||||||
|
* |
||||||
|
* @return array |
||||||
|
* The event message, as an array. |
||||||
|
*/ |
||||||
|
protected function assertExecution() { |
||||||
|
|
||||||
|
// Set the required contexts for the action to run. |
||||||
|
$this->action->setContextValue('entity', $this->entity); |
||||||
|
$this->action->setContextValue('user', $this->user); |
||||||
|
|
||||||
|
// Execute the action. |
||||||
|
$this->action->execute(); |
||||||
|
|
||||||
|
// Assert some basics. |
||||||
|
$message_str = $this->action->getProvidedContext('event_message')->getContextValue(); |
||||||
|
$this->assertNotEmpty($message_str, "Event message must not be empty."); |
||||||
|
$message = json_decode($message_str, TRUE); |
||||||
|
$this->assertTrue(array_key_exists('type', $message), "Event has type key."); |
||||||
|
|
||||||
|
// Return the event message. |
||||||
|
return $message; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\Tests\islandora\Kernel; |
||||||
|
|
||||||
|
use Drupal\islandora\Entity\FedoraResource; |
||||||
|
use Drupal\islandora\EventGenerator\EventGenerator; |
||||||
|
use Drupal\simpletest\UserCreationTrait; |
||||||
|
|
||||||
|
/** |
||||||
|
* Base class for testing EventGenerator functionality. |
||||||
|
*/ |
||||||
|
abstract class EventGeneratorTestBase extends IslandoraKernelTestBase { |
||||||
|
|
||||||
|
use UserCreationTrait { |
||||||
|
createUser as drupalCreateUser; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* User entity. |
||||||
|
* |
||||||
|
* @var \Drupal\user\UserInterface |
||||||
|
*/ |
||||||
|
protected $user; |
||||||
|
|
||||||
|
/** |
||||||
|
* Fedora resource entity. |
||||||
|
* |
||||||
|
* @var \Drupal\islandora\FedoraResourceInterface |
||||||
|
*/ |
||||||
|
protected $entity; |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public function setUp() { |
||||||
|
parent::setUp(); |
||||||
|
|
||||||
|
// Create a test user. |
||||||
|
$this->user = $this->drupalCreateUser(); |
||||||
|
|
||||||
|
// Create a test entity. |
||||||
|
$this->entity = FedoraResource::create([ |
||||||
|
"type" => "rdf_source", |
||||||
|
"uid" => 1, |
||||||
|
"name" => "Test Fixture", |
||||||
|
"langcode" => "und", |
||||||
|
"status" => 1, |
||||||
|
]); |
||||||
|
$this->entity->save(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,36 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\Tests\islandora\Kernel; |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests the basic behavior of the UpdateEventGenerator rules action. |
||||||
|
* |
||||||
|
* @group islandora |
||||||
|
* @coversDefaultClass \Drupal\islandora\Plugin\RulesAction\UpdateEventGenerator |
||||||
|
*/ |
||||||
|
class UpdateEventGeneratorTest extends EventGeneratorActionTestBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public function setUp() { |
||||||
|
parent::setUp(); |
||||||
|
|
||||||
|
// Get an instance of the action. |
||||||
|
$this->action = $this->actionManager->createInstance('islandora_update_event_generator'); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests the UpdateEventGenerator action. |
||||||
|
* |
||||||
|
* @covers \Drupal\islandora\Plugin\RulesAction\UpdateEventGenerator::execute |
||||||
|
*/ |
||||||
|
public function testExecute() { |
||||||
|
// Execute the action and get the message it outputs. |
||||||
|
$msg = $this->assertExecution(); |
||||||
|
|
||||||
|
// Assert it's outputs a 'Update' event. |
||||||
|
$this->assertTrue($msg["type"] == "Update", "Event must be of type 'Update'."); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue