79 lines
2.3 KiB
79 lines
2.3 KiB
<?php |
|
|
|
namespace Drupal\Tests\islandora\Functional; |
|
|
|
/** |
|
* Tests indexing and de-indexing in hooks with pre-configured actions. |
|
* |
|
* @group islandora |
|
*/ |
|
class DerivativeReactionTest extends IslandoraFunctionalTestBase { |
|
|
|
/** |
|
* Node to hold the media. |
|
* |
|
* @var \Drupal\node\NodeInterface |
|
*/ |
|
protected $node; |
|
|
|
/** |
|
* {@inheritdoc} |
|
*/ |
|
public function setUp() { |
|
parent::setUp(); |
|
|
|
$this->node = $this->container->get('entity_type.manager')->getStorage('node')->create([ |
|
'type' => 'test_type', |
|
'title' => 'Test Node', |
|
]); |
|
$this->node->save(); |
|
} |
|
|
|
/** |
|
* @covers \Drupal\islandora\IslandoraUtils::executeDerivativeReactions |
|
*/ |
|
public function testExecuteDerivativeReaction() { |
|
// Create a test user. |
|
$account = $this->drupalCreateUser([ |
|
'bypass node access', |
|
'administer contexts', |
|
'administer actions', |
|
'create media', |
|
'update media', |
|
]); |
|
$this->drupalLogin($account); |
|
|
|
$this->createContext('Test', 'test'); |
|
$this->addPresetReaction('test', 'derivative', 'hello_world'); |
|
|
|
// Create a new media. |
|
$values = [ |
|
'name[0][value]' => 'Test Media', |
|
'files[field_media_file_0]' => __DIR__ . '/../../fixtures/test_file.txt', |
|
'field_media_of[0][target_id]' => 'Test Node', |
|
]; |
|
$this->drupalPostForm('media/add/' . $this->testMediaType->id(), $values, $this->t('Save')); |
|
|
|
// field_media_of is set and there's a file, so derivatives should fire. |
|
$this->assertSession()->pageTextContains("Hello World!"); |
|
|
|
// Change media but not file, so derivatives should not fire. |
|
$values = [ |
|
'name[0][value]' => 'Test Media Changed', |
|
]; |
|
$this->postEntityEditForm($this->getUrl(), $values, 'Save'); |
|
$media_url = $this->getUrl(); |
|
$this->assertSession()->pageTextNotContains("Hello World!"); |
|
|
|
// Change the file, so derivatives should fire again. |
|
$values = [ |
|
'files[field_media_file_0]' => __DIR__ . '/../../fixtures/test_file2.txt', |
|
]; |
|
$this->drupalGet($media_url . '/edit'); |
|
$this->getSession()->getPage()->pressButton($this->t('Remove')); |
|
$this->getSession()->getPage()->fillField('files[field_media_file_0]', __DIR__ . '/../../fixtures/test_file2.txt'); |
|
$this->getSession()->getPage()->pressButton($this->t('Save')); |
|
$this->assertSession()->pageTextContains("Hello World!"); |
|
} |
|
|
|
}
|
|
|