Open Data Catalog v2.0.0
DereferencerTest.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use MockChain\Sequence;
6 use Drupal\Core\Config\ConfigFactory;
7 use Drupal\Core\Config\ImmutableConfig;
8 use Drupal\Core\Entity\EntityStorageInterface;
9 use Drupal\Core\Entity\EntityTypeManager;
10 use Drupal\Core\Queue\QueueFactory;
13 use MockChain\Chain;
14 use PHPUnit\Framework\TestCase;
15 
19 class DereferencerTest extends TestCase {
20 
24  public function testDereference() {
25  $node = (object) [
26  "field_json_metadata" => (object) [
27  "value" => json_encode((object) ["data" => (object) ['name' => 'Gerardo', 'company' => 'CivicActions']]),
28  ],
29  ];
30 
31  $entityTypeManager = (new Chain($this))
32  ->add(EntityTypeManager::class, 'getStorage', EntityStorageInterface::class)
33  ->add(EntityStorageInterface::class, 'loadByProperties', [$node])
34  ->getMock();
35 
36  $uuidService = new Uuid5();
37  $uuid = $uuidService->generate('dataset', "some value");
38 
39  $configService = (new Chain($this))
40  ->add(ConfigFactory::class, 'get', ImmutableConfig::class)
41  ->add(ImmutableConfig::class, 'get', ['publisher'])
42  ->getMock();
43 
44  $queueService = (new Chain($this))
45  ->add(QueueFactory::class, 'blah', NULL)
46  ->getMock();
47 
48  $valueReferencer = new Dereferencer($configService, $entityTypeManager);
49  $referenced = $valueReferencer->dereference((object) ['publisher' => $uuid]);
50 
51  $this->assertTrue(is_object($referenced));
52  $this->assertEquals((object) ['name' => 'Gerardo', 'company' => 'CivicActions'], $referenced->publisher);
53  }
54 
58  public function testDereferenceMultiple() {
59  $node1 = (object) [
60  "field_json_metadata" => (object) [
61  "value" => json_encode((object) ["data" => "Gerardo"]),
62  ],
63  ];
64 
65  $node2 = (object) [
66  "field_json_metadata" => (object) [
67  "value" => json_encode((object) ["data" => "CivicActions"]),
68  ],
69  ];
70 
71  $nodes = (new Sequence())
72  ->add([$node1])
73  ->add([$node2]);
74 
75  $entityTypeManager = (new Chain($this))
76  ->add(EntityTypeManager::class, 'getStorage', EntityStorageInterface::class)
77  ->add(EntityStorageInterface::class, 'loadByProperties', $nodes)
78  ->getMock();
79 
80  $uuidService = new Uuid5();
81 
82  $configService = (new Chain($this))
83  ->add(ConfigFactory::class, 'get', ImmutableConfig::class)
84  ->add(ImmutableConfig::class, 'get', ['keyword'])
85  ->getMock();
86 
87  $queueService = (new Chain($this))
88  ->add(QueueFactory::class, 'blah', NULL)
89  ->getMock();
90 
91  $valueReferencer = new Dereferencer($configService, $entityTypeManager);
92  $referenced = $valueReferencer->dereference((object) ['keyword' => ['123456789', '987654321']]);
93 
94  $this->assertTrue(is_object($referenced));
95  $this->assertEquals("Gerardo", $referenced->keyword[0]);
96  $this->assertEquals("CivicActions", $referenced->keyword[1]);
97  }
98 
99 }
Drupal\Tests\dkan_data\Unit\DereferencerTest\testDereferenceMultiple
testDereferenceMultiple()
Definition: DereferencerTest.php:58
Drupal\Tests\dkan_data\Unit
Definition: ConfigurationOverriderTest.php:3
Drupal\dkan_data\Reference\Dereferencer
Definition: Dereferencer.php:13
Drupal\Tests\dkan_data\Unit\DereferencerTest\testDereference
testDereference()
Definition: DereferencerTest.php:24
Drupal\Tests\dkan_data\Unit\DereferencerTest
Definition: DereferencerTest.php:19
Drupal\dkan_data\Service\Uuid5
Definition: Uuid5.php:17