Open Data Catalog v2.0.0
ResourceTest.php
Go to the documentation of this file.
1 <?php
2 
3 use PHPUnit\Framework\TestCase;
4 use FileFetcher\FileFetcher;
5 use Procrastinator\Result;
6 use Dkan\Datastore\Resource;
7 use Drupal\Core\Entity\EntityRepository;
8 use Drupal\Core\File\FileSystem;
9 use Drupal\Core\Field\Plugin\DataType\FieldItem;
10 use Drupal\node\Entity\Node;
11 use MockChain\Chain;
15 
19 class ResourceTest extends TestCase {
20 
24  public function testNoFileFetcher() {
25 
26  $object = (object) [];
27  $object->data = (object) [];
28  $object->data->downloadURL = "http://google.com";
29  $object->data->mediaType = "text/csv";
30 
31  $meta = json_encode($object);
32 
33  $entityRepository = (new Chain($this))
34  ->add(EntityRepository::class, "loadEntityByUuid", Node::class)
35  ->add(Node::class, "id", "1")
36  ->add(Node::class, "get", FieldItem::class)
37  ->add(FieldItem::class, "getString", $meta)
38  ->getMock();
39 
40  $fileSystem = (new Chain($this))
41  ->add(FileSystem::class, "chmod", NULL)
42  ->getMock();
43 
44  $jobStore = (new Chain($this))
45  ->add(JobStore::class, "store", NULL)
46  ->getMock();
47 
48  $jobStoreFactory = (new Chain($this))
49  ->add(JobStoreFactory::class, "getInstance", $jobStore)
50  ->getMock();
51 
52  $service = new Service("123", $entityRepository, $fileSystem, $jobStoreFactory);
53  $resource = $service->get();
54 
55  $this->assertTrue($resource instanceof Resource);
56  }
57 
61  public function testFileFetcherNotDone() {
62 
63  $object = (object) [];
64  $object->data = (object) [];
65  $object->data->downloadURL = "http://google.com";
66  $object->data->mediaType = "text/csv";
67 
68  $meta = json_encode($object);
69 
70  $entityRepository = (new Chain($this))
71  ->add(EntityRepository::class, "loadEntityByUuid", Node::class)
72  ->add(Node::class, "id", "1")
73  ->add(Node::class, "get", FieldItem::class)
74  ->add(FieldItem::class, "getString", $meta)
75  ->getMock();
76 
77  $fileSystem = (new Chain($this))
78  ->add(FileSystem::class, "chmod", NULL)
79  ->add(FileSystem::class, "realpath", "/tmp")
80  ->add(FileSystem::class, "prepareDirectory", NULL)
81  ->getMock();
82 
83  $data = json_encode((object) [
84  "destination" => "hello",
85  ]);
86 
87  $jobStore = (new Chain($this))
88  ->add(JobStore::class, "retrieve", "")
89  ->add(JobStore::class, "store", NULL)
90  ->add(Result::class, "getData", $data)
91  ->getMock();
92 
93  $jobStoreFactory = (new Chain($this))
94  ->add(JobStoreFactory::class, "getInstance", $jobStore)
95  ->getMock();
96 
97  $fileFetcher = (new Chain($this))
98  ->add(FileFetcher::class, "getResult", Result::class)
99  ->add(FileFetcher::class, "run", Result::class)
100  ->getMock();
101 
102  $service = $this->getMockBuilder(Service::class)
103  ->setConstructorArgs(["123", $entityRepository, $fileSystem, $jobStoreFactory])
104  ->setMethods(["getFileFetcherInstance"])
105  ->getMock();
106 
107  $service->method("getFileFetcherInstance")->willReturn($fileFetcher);
108 
109  $resource = $service->get(TRUE);
110 
111  $this->assertTrue(!isset($resource));
112  }
113 
117  public function testFileFetcherDone() {
118 
119  $object = (object) [];
120  $object->data = (object) [];
121  $object->data->downloadURL = "http://google.com";
122  $object->data->mediaType = "text/csv";
123 
124  $meta = json_encode($object);
125 
126  $entityRepository = (new Chain($this))
127  ->add(EntityRepository::class, "loadEntityByUuid", Node::class)
128  ->add(Node::class, "id", "1")
129  ->add(Node::class, "get", FieldItem::class)
130  ->add(FieldItem::class, "getString", $meta)
131  ->getMock();
132 
133  $fileSystem = $this->getFileSystemMock();
134 
135  $data = json_encode((object) [
136  "destination" => "hello",
137  ]);
138 
139  $fileFetcher = (new Chain($this))
140  ->add(FileFetcher::class, "getResult", Result::class)
141  ->add(FileFetcher::class, "run", Result::class)
142  ->add(Result::class, "getData", $data)
143  ->add(Result::class, "getStatus", Result::DONE)
144  ->getMock();
145 
146  $jobStore = (new Chain($this))
147  ->add(JobStore::class, "retrieve", FileFetcher::class)
148  ->add(JobStore::class, "store", NULL)
149  ->add(FileFetcher::class, "getResult", $fileFetcher)
150  ->getMock();
151 
152  $jobStoreFactory = (new Chain($this))
153  ->add(JobStoreFactory::class, "getInstance", $jobStore)
154  ->getMock();
155 
156  $service = $this->getMockBuilder(Service::class)
157  ->setConstructorArgs(["123", $entityRepository, $fileSystem, $jobStoreFactory])
158  ->setMethods(["getFileFetcherInstance"])
159  ->getMock();
160 
161  $service->method("getFileFetcherInstance")->willReturn($fileFetcher);
162  $resource = $service->get(TRUE);
163 
164  $this->assertTrue($resource instanceof Resource);
165  $this->assertTrue($service->getResult() instanceof Result);
166  }
167 
171  public function testNoStoredFileFetcher() {
172 
173  $object = (object) [];
174  $object->data = (object) [];
175  $object->data->downloadURL = "http://google.com";
176  $object->data->mediaType = "text/csv";
177 
178  $meta = json_encode($object);
179 
180  $entityRepository = (new Chain($this))
181  ->add(EntityRepository::class, "loadEntityByUuid", Node::class)
182  ->add(Node::class, "id", "1")
183  ->add(Node::class, "get", FieldItem::class)
184  ->add(FieldItem::class, "getString", $meta)
185  ->getMock();
186 
187  $fileSystem = $this->getFileSystemMock();
188 
189  $jobStore = (new Chain($this))
190  ->add(JobStore::class, "retrieve", NULL)
191  ->add(JobStore::class, "store", NULL)
192  ->getMock();
193 
194  $jobStoreFactory = (new Chain($this))
195  ->add(JobStoreFactory::class, "getInstance", $jobStore)
196  ->getMock();
197 
198  $data = json_encode((object) [
199  "destination" => "hello",
200  ]);
201  $fileFetcher = (new Chain($this))
202  ->add(FileFetcher::class, "getResult", Result::class)
203  ->add(FileFetcher::class, "run", Result::class)
204  ->add(Result::class, "getData", $data)
205  ->add(Result::class, "getStatus", Result::DONE)
206  ->getMock();
207 
208  $builder = $this->getMockBuilder(Service::class);
209  $builder->setConstructorArgs(["123", $entityRepository, $fileSystem, $jobStoreFactory])
210  ->setMethods(["getFileFetcherInstance"]);
211 
212  $service = $builder->getMock();
213  $service->method("getFileFetcherInstance")->willReturn($fileFetcher);
214 
215  $resource = $service->get(TRUE);
216 
217  $this->assertTrue($resource instanceof Resource);
218  }
219 
223  private function getFileSystemMock() {
224  return (new Chain($this))
225  ->add(FileSystem::class, "realpath", "/")
226  ->add(FileSystem::class, "prepareDirectory", NULL)
227  ->add(FileSystem::class, "chmod", NULL)
228  ->getMock();
229  }
230 
231 }
ResourceTest\testFileFetcherNotDone
testFileFetcherNotDone()
Definition: ResourceTest.php:61
Drupal\dkan_datastore\Service\Resource
Definition: Resource.php:16
ResourceTest\testFileFetcherDone
testFileFetcherDone()
Definition: ResourceTest.php:117
ResourceTest
Definition: ResourceTest.php:19
ResourceTest\testNoStoredFileFetcher
testNoStoredFileFetcher()
Definition: ResourceTest.php:171
Drupal\dkan_datastore\Storage\JobStore
Definition: JobStore.php:12
ResourceTest\testNoFileFetcher
testNoFileFetcher()
Definition: ResourceTest.php:24
Drupal\dkan_datastore\Storage\JobStoreFactory
Definition: JobStoreFactory.php:11