Open Data Catalog v2.0.0
DataNodeLifeCycleTest.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use Drupal\Core\DependencyInjection\Container;
6 use Drupal\Core\Entity\EntityInterface;
7 use MockChain\Chain;
8 use MockChain\Options;
11 use Drupal\node\Entity\Node;
12 use PHPUnit\Framework\TestCase;
13 use Symfony\Component\HttpFoundation\Request;
14 use Symfony\Component\HttpFoundation\RequestStack;
15 
19 class DataNodeLifeCycleTest extends TestCase {
20 
24  public function testNotNode() {
25  $this->expectExceptionMessage("We only work with nodes.");
26 
27  $entity = (new Chain($this))
28  ->add(EntityInterface::class, "blah", NULL)
29  ->getMock();
30 
31  new DataNodeLifeCycle($entity);
32  }
33 
37  public function testNonDataNode() {
38  $this->expectExceptionMessage("We only work with data nodes.");
39 
40  $node = (new Chain($this))
41  ->add(Node::class, "bundle", "blah")
42  ->getMock();
43 
44  new DataNodeLifeCycle($node);
45  }
46 
50  public function testPresaveDistribution() {
51  $container = (new Chain($this))
52  ->add(Container::class, "get", RequestStack::class)
53  ->add(RequestStack::class, "getCurrentRequest", Request::class)
54  ->add(Request::class, "getHost", "dkan")
55  ->add(Request::class, "getSchemeAndHttpHost", "http://dkan")
56  ->getMock();
57 
58  \Drupal::setContainer($container);
59 
60  $metadata = (object) [
61  "data" => (object) [
62  "downloadURL" => "http://dkan/some/path/blah",
63  ],
64  ];
65 
66  $options = (new Options())
67  ->add('field_json_metadata', (object) ["value" => json_encode($metadata)])
68  ->add('field_data_type', (object) ["value" => "distribution"])
69  ->index(0);
70 
71  $nodeChain = new Chain($this);
72  $node = $nodeChain
73  ->add(Node::class, "bundle", "data")
74  ->add(Node::class, "get", $options)
75  ->add(Node::class, "set", NULL, "metadata")
76  ->getMock();
77 
78  $lifeCycle = new DataNodeLifeCycle($node);
79  $lifeCycle->presave();
80 
81  $metadata = $nodeChain->getStoredInput("metadata");
82 
83  $this->assertTrue((substr_count($metadata[1], UrlHostTokenResolver::TOKEN) > 0));
84  }
85 
86 }
Drupal\Tests\dkan_data\Unit\DataNodeLifeCycleTest\testNonDataNode
testNonDataNode()
Definition: DataNodeLifeCycleTest.php:37
Drupal\Tests\dkan_data\Unit\DataNodeLifeCycleTest\testPresaveDistribution
testPresaveDistribution()
Definition: DataNodeLifeCycleTest.php:50
Drupal\Tests\dkan_data\Unit
Definition: ConfigurationOverriderTest.php:3
Drupal\dkan_common\UrlHostTokenResolver
Definition: UrlHostTokenResolver.php:8
Drupal\Tests\dkan_data\Unit\DataNodeLifeCycleTest\testNotNode
testNotNode()
Definition: DataNodeLifeCycleTest.php:24
Drupal\dkan_common\UrlHostTokenResolver\TOKEN
const TOKEN
Definition: UrlHostTokenResolver.php:9
Drupal\Tests\dkan_data\Unit\DataNodeLifeCycleTest
Definition: DataNodeLifeCycleTest.php:19
Drupal\dkan_data\DataNodeLifeCycle
Definition: DataNodeLifeCycle.php:11