dannylamb
5 years ago
committed by
Seth Shaw
2 changed files with 134 additions and 19 deletions
@ -0,0 +1,90 @@
|
||||
<?php |
||||
|
||||
namespace Drupal\Tests\islandora\Functional; |
||||
|
||||
/** |
||||
* Tests the NodeHasTerm condition. |
||||
* |
||||
* @package Drupal\Tests\islandora\Functional |
||||
* @group islandora |
||||
*/ |
||||
class NodeHasTermTest extends IslandoraFunctionalTestBase { |
||||
|
||||
/** |
||||
* {@inheritdoc} |
||||
*/ |
||||
public function setUp() { |
||||
|
||||
parent::setUp(); |
||||
|
||||
// Set up two tags so we can test the condition. |
||||
// Doesn't really matter what they are or what |
||||
// vocab they belong to. |
||||
$this->createImageTag(); |
||||
$this->createPreservationMasterTag(); |
||||
} |
||||
|
||||
/** |
||||
* @covers \Drupal\islandora\Plugin\Condition\NodeHasTerm |
||||
*/ |
||||
public function testNodeHasTerm() { |
||||
|
||||
// Create a new node with the tag. |
||||
$node = $this->container->get('entity_type.manager')->getStorage('node')->create([ |
||||
'type' => 'test_type', |
||||
'title' => 'Test Node', |
||||
'field_tags' => [$this->imageTerm->id()], |
||||
]); |
||||
|
||||
// Create and execute the condition. |
||||
$condition_manager = $this->container->get('plugin.manager.condition'); |
||||
$condition = $condition_manager->createInstance( |
||||
'node_has_term', |
||||
[ |
||||
'uri' => 'http://purl.org/coar/resource_type/c_c513', |
||||
] |
||||
); |
||||
$condition->setContextValue('node', $node); |
||||
$this->assertTrue($condition->execute(), "Condition should pass if node has the term"); |
||||
|
||||
// Create a new node without the tag. |
||||
$node = $this->container->get('entity_type.manager')->getStorage('node')->create([ |
||||
'type' => 'test_type', |
||||
'title' => 'Test Node', |
||||
]); |
||||
|
||||
$condition->setContextValue('node', $node); |
||||
$this->assertFalse($condition->execute(), "Condition should fail if the node does not have any terms"); |
||||
|
||||
// Create a new node with the wrong tag. |
||||
$node = $this->container->get('entity_type.manager')->getStorage('node')->create([ |
||||
'type' => 'test_type', |
||||
'title' => 'Test Node', |
||||
'field_tags' => [$this->preservationMasterTerm->id()], |
||||
]); |
||||
|
||||
$condition->setContextValue('node', $node); |
||||
$this->assertFalse($condition->execute(), "Condition should fail if the node has terms, but not the one we want."); |
||||
|
||||
// Check for two tags this time. |
||||
// Node still only has one. |
||||
$condition = $condition_manager->createInstance( |
||||
'node_has_term', |
||||
[ |
||||
'uri' => 'http://purl.org/coar/resource_type/c_c513,http://pcdm.org/use#PreservationMasterFile', |
||||
] |
||||
); |
||||
$condition->setContextValue('node', $node); |
||||
$this->assertFalse($condition->execute(), "Condition should fail if node does not have both terms"); |
||||
|
||||
// Create a node with both tags. |
||||
$node = $this->container->get('entity_type.manager')->getStorage('node')->create([ |
||||
'type' => 'test_type', |
||||
'title' => 'Test Node', |
||||
'field_tags' => [$this->imageTerm->id(), $this->preservationMasterTerm->id()], |
||||
]); |
||||
$condition->setContextValue('node', $node); |
||||
$this->assertTrue($condition->execute(), "Condition should pass if node has both terms"); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue