Open Data Catalog v2.0.0
JobStoreTest.php
Go to the documentation of this file.
1 <?php
2 
4 
5 use Contracts\Mock\Storage\Memory;
6 use Drupal\Core\Database\Connection;
7 use Drupal\Core\Database\Query\Delete;
8 use Drupal\Core\Database\Query\Select;
9 use Drupal\Core\Database\Query\Update;
10 use Drupal\Core\Database\Schema;
11 use Drupal\Core\Database\Statement;
12 use MockChain\Chain;
13 use MockChain\Sequence;
15 use FileFetcher\FileFetcher;
16 use PHPUnit\Framework\TestCase;
17 
21 class JobStoreTest extends TestCase {
22 
26  public function testConstruction() {
27  $chain = (new Chain($this))
28  ->add(Connection::class, "blah", "blah")
29  ->add(Connection::class, "schema", Schema::class)
30  ->add(Schema::class, "tableExists", FALSE);
31 
32  $jobStore = new JobStore(FileFetcher::class, $chain->getMock());
33  $this->assertTrue(is_object($jobStore));
34  }
35 
39  public function testRetrieve() {
40  $job_data = json_encode($this->getFileFetcher());
41  $job = (object) [];
42  $job->ref_uuid = "1";
43  $job->job_data = $job_data;
44 
45  $fieldInfo = [
46  (object) ['Field' => "ref_uuid"],
47  (object) ['Field' => "job_data"],
48  ];
49 
50  $chain = (new Chain($this))
51  ->add(Connection::class, "schema", Schema::class)
52  ->add(Schema::class, "tableExists", TRUE)
53  ->add(Connection::class, 'select', Select::class, 'select_1')
54  ->add(Select::class, 'fields', Select::class)
55  ->add(Select::class, 'condition', Select::class)
56  ->add(Select::class, 'execute', Statement::class)
57  ->add(Statement::class, 'fetch', $job)
58  ->add(Connection::class, 'query', Statement::class)
59  ->add(Statement::class, 'fetchAll', $fieldInfo);
60 
61  $jobStore = new JobStore(FileFetcher::class, $chain->getMock());
62  $this->assertEquals($job_data, $jobStore->retrieve("1", FileFetcher::class));
63  }
64 
68  public function testRetrieveAll() {
69  $job_data = json_encode($this->getFileFetcher());
70  $job = (object) [];
71  $job->ref_uuid = "1";
72  $job->job_data = $job_data;
73 
74  $fieldInfo = [
75  (object) ['Field' => "ref_uuid"],
76  (object) ['Field' => "job_data"],
77  ];
78 
79  $sequence = (new Sequence())
80  ->add($fieldInfo)
81  ->add([$job]);
82 
83  $chain = (new Chain($this))
84  ->add(Connection::class, "schema", Schema::class)
85  ->add(Schema::class, "tableExists", TRUE)
86  ->add(Connection::class, 'select', Select::class, 'select_1')
87  ->add(Select::class, 'fields', Select::class)
88  ->add(Select::class, 'execute', Statement::class)
89  ->add(Connection::class, 'query', Statement::class)
90  ->add(Statement::class, 'fetchAll', $sequence);
91 
92  $jobStore = new JobStore(FileFetcher::class, $chain->getMock());
93  $this->assertTrue(is_array($jobStore->retrieveAll()));
94  }
95 
99  public function testStore() {
100  $jobObject = $this->getFileFetcher();
101 
102  $job_data = json_encode($jobObject);
103  $job = (object) [];
104  $job->jid = "1";
105  $job->ref_uuid = "1";
106  $job->job_data = $job_data;
107 
108  $fieldInfo = [
109  (object) ['Field' => "ref_uuid"],
110  (object) ['Field' => "job_data"],
111  ];
112 
113  $connection = (new Chain($this))
114  ->add(Connection::class, "schema", Schema::class)
115  ->add(Schema::class, "tableExists", TRUE)
116  ->add(Connection::class, 'select', Select::class, 'select_1')
117  ->add(Select::class, 'fields', Select::class)
118  ->add(Select::class, 'condition', Select::class)
119  ->add(Select::class, 'execute', Statement::class)
120  ->add(Statement::class, 'fetch', $job)
121  ->add(Connection::class, 'update', Update::class)
122  ->add(Update::class, "fields", Update::class)
123  ->add(Update::class, "condition", Update::class)
124  ->add(Update::class, "execute", NULL)
125  ->add(Connection::class, 'query', Statement::class)
126  ->add(Statement::class, 'fetchAll', $fieldInfo)
127  ->getMock();
128 
129  $jobStore = new JobStore(FileFetcher::class, $connection);
130 
131  $this->assertEquals("1", $jobStore->store(json_encode($jobObject), "1"));
132  }
133 
137  public function testRemove() {
138  $fieldInfo = [
139  (object) ['Field' => "ref_uuid"],
140  (object) ['Field' => "job_data"],
141  ];
142 
143  $connection = (new Chain($this))
144  ->add(Connection::class, "schema", Schema::class)
145  ->add(Schema::class, "tableExists", TRUE)
146  ->add(Connection::class, "delete", Delete::class)
147  ->add(Delete::class, "condition", Delete::class)
148  ->add(Delete::class, "execute", NULL)
149  ->add(Connection::class, 'query', Statement::class)
150  ->add(Statement::class, 'fetchAll', $fieldInfo)
151  ->getMock();
152 
153  $jobStore = new JobStore(FileFetcher::class, $connection);
154 
155  $this->assertEquals("", $jobStore->remove("1", FileFetcher::class));
156  }
157 
161  private function getFileFetcher() {
162  return FileFetcher::get("1", new Memory(), ["filePath" => "file://" . __DIR__ . "/../../../data/countries.csv"]);
163  }
164 
165 }
Drupal\Tests\dkan_datastore\Unit\Storage\JobStoreTest\testStore
testStore()
Definition: JobStoreTest.php:99
Drupal\Tests\dkan_datastore\Unit\Storage\JobStoreTest\testRetrieve
testRetrieve()
Definition: JobStoreTest.php:39
Drupal\Tests\dkan_datastore\Unit\Storage\JobStoreTest\testRemove
testRemove()
Definition: JobStoreTest.php:137
Drupal\Tests\dkan_datastore\Unit\Storage
Definition: DatabaseTableFactoryTest.php:3
Drupal\dkan_datastore\Storage\JobStore
Definition: JobStore.php:12
Drupal\Tests\dkan_datastore\Unit\Storage\JobStoreTest
Definition: JobStoreTest.php:21
Drupal\Tests\dkan_datastore\Unit\Storage\JobStoreTest\testRetrieveAll
testRetrieveAll()
Definition: JobStoreTest.php:68
Drupal\Tests\dkan_datastore\Unit\Storage\JobStoreTest\testConstruction
testConstruction()
Definition: JobStoreTest.php:26