3 use Drupal\Component\DependencyInjection\Container;
4 use Drupal\Core\Field\FieldItemInterface;
5 use Drupal\Core\Field\FieldItemList;
6 use Drupal\Core\File\FileSystemInterface;
7 use Drupal\Core\Logger\LoggerChannel;
8 use Drupal\Core\Logger\LoggerChannelFactory;
11 use Drupal\node\Entity\Node;
13 use MockChain\Options;
14 use MockChain\Sequence;
15 use PHPUnit\Framework\TestCase;
26 $options = (
new Options())
27 ->add(
"dkan_datastore.service", Service::class);
28 $containerChain = (
new Chain($this))
29 ->add(Container::class,
'get', $options);
30 $container = $containerChain->getMock();
32 $sequence = (
new Sequence())
34 ->add(json_encode($data));
36 $entity = (
new Chain($this))
37 ->add(Node::class,
'bundle',
'data')
38 ->add(Node::class,
'uuid',
'12345')
39 ->add(Node::class,
'get', FieldItemList::class)
40 ->add(FieldItemList::class,
'first', FieldItemInterface::class)
41 ->add(FieldItemInterface::class,
'__get', $sequence)
44 return [$container, $entity];
51 $metadata = (object) [
'identifier' =>
"12345"];
52 [$container, $entity] = $this->
initialSetUp(
'foobar', $metadata);
54 \Drupal::setContainer($container);
57 $this->assertNull($cycle->insert());
64 $metadata = (object) [
'identifier' =>
"12345"];
65 [$container, $entity] = $this->
initialSetUp(
'foobar', $metadata);
67 \Drupal::setContainer($container);
70 $this->assertNull($cycle->predelete());
77 $metadata = (object) [
78 'identifier' =>
"12345",
80 'accessURL' =>
"http://google.com",
83 [$container, $entity] = $this->
initialSetUp(
'distribution', $metadata);
85 \Drupal::setContainer($container);
88 $this->assertNull($cycle->insert());
95 $options = (
new Options())
96 ->add(
"dkan_datastore.service", Service::class)
97 ->add(
'logger.factory', LoggerChannelFactory::class)
100 $containerChain = (
new Chain($this))
101 ->add(Container::class,
'get', $options)
102 ->add(Service::class,
'import',
new \Exception(
"Invalid metadata information or missing file information."))
103 ->add(LoggerChannelFactory::class,
'get', LoggerChannel::class)
104 ->add(LoggerChannel::class,
'log', NULL,
'log');
106 $container = $containerChain->getMock();
108 $metadata = (object) [
109 'identifier' =>
"12345",
111 'downloadURL' =>
"http://google.com",
112 'mediaType' =>
"text/csv",
116 $sequence = (
new Sequence())
117 ->add(
'distribution')
118 ->add(json_encode($metadata));
120 $entity = (
new Chain($this))
121 ->add(Node::class,
'bundle',
'data')
122 ->add(Node::class,
'uuid',
'12345')
123 ->add(Node::class,
'get', FieldItemList::class)
124 ->add(FieldItemList::class,
'first', FieldItemInterface::class)
125 ->add(FieldItemInterface::class,
'__get', $sequence)
128 \Drupal::setContainer($container);
133 $this->assertEquals(
'Invalid metadata information or missing file information.',
134 $containerChain->getStoredInput(
'log')[1]);
141 $options = (
new Options())
142 ->add(
'dkan_datastore.service', Service::class)
143 ->add(
'logger.factory', LoggerChannelFactory::class)
144 ->add(
'file_system', FileSystemInterface::class)
147 $containerChain = (
new Chain($this))
148 ->add(Container::class,
'get', $options)
149 ->add(Service::class,
'import', [],
'import')
150 ->add(Service::class,
'drop', [],
'drop');
151 $container = $containerChain->getMock();
153 \Drupal::setContainer($container);
155 $metadata = (object) [
156 'identifier' =>
"12345",
158 'downloadURL' =>
"http://google.com",
159 'mediaType' =>
"text/csv",
163 $options = (
new Options())
164 ->add(
'field_data_type',
'distribution')
165 ->add(
'field_json_metadata', json_encode($metadata))
169 $entity = (
new Chain($this))
170 ->add(Node::class,
'bundle',
'data')
171 ->add(Node::class,
'uuid',
'12345')
172 ->add(Node::class,
'get', FieldItemList::class,
'field_get')
173 ->add(FieldItemList::class,
'first', FieldItemInterface::class)
174 ->add(FieldItemInterface::class,
'__get', $options)
180 $this->assertEquals([
'12345', TRUE], $containerChain->getStoredInput(
'import'));
184 $this->assertEquals([
'12345'], $containerChain->getStoredInput(
'drop'));