72
35
public function testAdd()
74
# Generate random name
75
37
$name = Random::generateString(8, 'phpunit');
77
39
$response = $this->client->post('/dataset', [
78
40
'dataSet' => $name,
79
41
'description' => 'PHP Unit Test'
81
# Check if call was successful
82
44
$this->assertSame(200, $this->client->response->status(), "Not successful: " . $response);
83
46
$object = json_decode($this->client->response->body());
84
48
$this->assertObjectHasAttribute('data', $object);
85
49
$this->assertObjectHasAttribute('id', $object);
86
# Check if dataset has the correct name
87
50
$this->assertSame($name, $object->data->dataSet);
56
* @param int $dataSetId
95
public function testEdit()
60
public function testEdit($dataSetId)
97
# Create a new dataset
98
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create('phpunit dataset', 'phpunit description');
99
# Generate new name and description
62
$dataSet = DataSetFactory::getById($dataSetId);
100
64
$name = Random::generateString(8, 'phpunit');
101
$description = 'New description';
102
# Edit the name and description
103
$this->client->put('/dataset/' . $dataSet->dataSetId, [
66
$this->client->put('/dataset/' . $dataSetId, [
104
67
'dataSet' => $name,
105
'description' => $description
68
'description' => $dataSet->description
106
69
], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
107
# Check if call was successful
108
71
$this->assertSame(200, $this->client->response->status(), 'Not successful: ' . $this->client->response->body());
109
73
$object = json_decode($this->client->response->body());
110
75
$this->assertObjectHasAttribute('data', $object);
111
# Check if name and description were correctly changed
112
$this->assertSame($name, $object->data->dataSet);
113
$this->assertSame($description, $object->data->description);
114
# Deeper check by querying for dataset again
115
$dataSetCheck = (new XiboDataSet($this->getEntityProvider()))->getById($object->id);
116
$this->assertSame($name, $dataSetCheck->dataSet);
117
$this->assertSame($description, $dataSetCheck->description);
118
# Clean up the dataset as we no longer need it
77
// Deeper check by querying for resolution again
78
$object = DataSetFactory::getById($dataSetId);
80
$this->assertSame($name, $object->dataSet);
123
87
* @depends testEdit
125
public function testDelete()
89
public function testDelete($dataSetId)
127
# Generate new random names
128
$name1 = Random::generateString(8, 'phpunit');
129
$name2 = Random::generateString(8, 'phpunit');
130
# Load in a couple of known dataSets
131
$data1 = (new XiboDataSet($this->getEntityProvider()))->create($name1, 'phpunit description');
132
$data2 = (new XiboDataSet($this->getEntityProvider()))->create($name2, 'phpunit description');
133
# Delete the one we created last
134
$this->client->delete('/dataset/' . $data2->dataSetId);
135
# This should return 204 for success
136
$response = json_decode($this->client->response->body());
137
$this->assertSame(204, $response->status, $this->client->response->body());
138
# Check only one remains
139
$dataSets = (new XiboDataSet($this->getEntityProvider()))->get();
140
$this->assertEquals(count($this->startDataSets) + 1, count($dataSets));
142
foreach ($dataSets as $dataSet) {
143
if ($dataSet->dataSetId == $data1->dataSetId) {
147
$this->assertTrue($flag, 'dataSet ID ' . $data1->dataSetId . ' was not found after deleting a different dataset');
91
$this->client->delete('/dataset/' . $dataSetId);
93
$this->assertSame(200, $this->client->response->status(), $this->client->response->body());
150
# TO DO /dataset/import/
153
* @dataProvider provideSuccessCases
97
* Test adding a column
155
public function testAddColumnSuccess($columnName, $columnListContent, $columnOrd, $columnDataTypeId, $columnDataSetColumnTypeId, $columnFormula)
99
public function testColumnAdd()
157
# Create radom name and description
101
// Create a new dataset to use
102
$dataSet = new DataSet();
103
$dataSet->dataSet = Random::generateString(8, 'phpunit');
104
$dataSet->description = 'PHP Unit column assign';
105
$dataSet->userId = 1;
108
// Generate a new for the new column
158
109
$name = Random::generateString(8, 'phpunit');
159
$description = 'PHP Unit column add';
161
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
162
# Create new columns with arguments from provideSuccessCases
163
111
$response = $this->client->post('/dataset/' . $dataSet->dataSetId . '/column', [
164
'heading' => $columnName,
165
'listContent' => $columnListContent,
166
'columnOrder' => $columnOrd,
167
'dataTypeId' => $columnDataTypeId,
168
'dataSetColumnTypeId' => $columnDataSetColumnTypeId,
169
'formula' => $columnFormula
171
# Check that call was successful
172
$this->assertSame(200, $this->client->response->status(), "Not successful: " . $response);
173
$object = json_decode($this->client->response->body());
174
# Check that columns have correct parameters
175
$this->assertObjectHasAttribute('data', $object);
176
$this->assertObjectHasAttribute('id', $object);
177
$this->assertSame($columnName, $object->data->heading);
178
$this->assertSame($columnListContent, $object->data->listContent);
179
$this->assertSame($columnOrd, $object->data->columnOrder);
180
$this->assertSame($columnDataTypeId, $object->data->dataTypeId);
181
$this->assertSame($columnDataSetColumnTypeId, $object->data->dataSetColumnTypeId);
182
$this->assertSame($columnFormula, $object->data->formula);
183
# Check that column was correctly added
184
$column = (new XiboDataSetColumn($this->getEntityProvider()))->getById($dataSet->dataSetId, $object->id);
185
$this->assertSame($columnName, $column->heading);
186
# Clean up the dataset as we no longer need it
187
$this->assertTrue($dataSet->delete(), 'Unable to delete ' . $dataSet->dataSetId);
191
* Each array is a test run
192
* Format ($columnName, $columnListContent, $columnOrd, $columnDataTypeId, $columnDataSetColumnTypeId, $columnFormula)
196
public function provideSuccessCases()
198
# Cases we provide to testAddColumnSucess, you can extend it by simply adding new case here
201
'Value String' => ['Test Column Value String', NULL, 2, 1, 1, NULL],
202
'List Content' => ['Test Column list content', 'one,two,three', 2, 1, 1, NULL],
203
'Value Number' => ['Test Column Value Number', NULL, 2, 2, 1, NULL],
204
'Value Date' => ['Test Column Value Date', NULL, 2, 3, 1, NULL],
205
'External Image' => ['Test Column Value External Image', NULL, 2, 4, 1, NULL],
206
'Library Image' => ['Test Column Value Internal Image', NULL, 2, 5, 1, NULL],
208
'Formula' => ['Test Column Formula', NULL, 2, 5, 1, 'Where Name = Dan'],
213
* @dataProvider provideFailureCases
215
public function testAddColumnFailure($columnName, $columnListContent, $columnOrd, $columnDataTypeId, $columnDataSetColumnTypeId, $columnFormula)
217
# Create random name and description
218
$name = Random::generateString(8, 'phpunit');
219
$description = 'PHP Unit column add failure';
220
# Create new columns that we expect to fail with arguments from provideFailureCases
221
/** @var XiboDataSet $dataSet */
222
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
223
$this->client->post('/dataset/' . $dataSet->dataSetId . '/column', [
224
'heading' => $columnName,
225
'listContent' => $columnListContent,
226
'columnOrder' => $columnOrd,
227
'dataTypeId' => $columnDataTypeId,
228
'dataSetColumnTypeId' => $columnDataSetColumnTypeId,
229
'formula' => $columnFormula
231
# Check if cases are failing as expected
232
$this->assertSame(500, $this->client->response->status(), 'Expecting failure, received ' . $this->client->response->status());
236
* Each array is a test run
237
* Format ($columnName, $columnListContent, $columnOrd, $columnDataTypeId, $columnDataSetColumnTypeId, $columnFormula)
241
public function provideFailureCases()
243
# Cases we provide to testAddColumnFailure, you can extend it by simply adding new case here
246
'Incorrect dataType' => ['incorrect data type', NULL, 2, 12, 1, NULL],
247
'Incorrect columnType' => ['incorrect column type', NULL, 2, 19, 1, NULL],
248
'Empty Name' => [NULL, NULL, 2, 3, 1, NULL]
253
* Search columns for DataSet
255
public function testListAllColumns()
258
$name = Random::generateString(8, 'phpunit');
259
$description = 'PHP Unit column list';
260
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
261
# Add a new column to our dataset
262
$nameCol = Random::generateString(8, 'phpunit');
263
$dataSet->createColumn($nameCol,'', 2, 1, 1, '');
265
$this->client->get('/dataset/' . $dataSet->dataSetId . '/column');
266
# Check if call was successful
267
$this->assertSame(200, $this->client->response->status());
268
$this->assertNotEmpty($this->client->response->body());
269
$object = json_decode($this->client->response->body());
270
$this->assertObjectHasAttribute('data', $object, $this->client->response->body());
271
# Clean up as we no longer need it
278
public function testColumnEdit()
281
$name = Random::generateString(8, 'phpunit');
282
$description = 'PHP Unit column edit';
283
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
284
# Add new column to our dataset
285
$nameCol = Random::generateString(8, 'phpunit');
286
$column = (new XiboDataSetColumn($this->getEntityProvider()))->create($dataSet->dataSetId, $nameCol,'', 2, 1, 1, '');
287
# Generate new random name
288
$nameNew = Random::generateString(8, 'phpunit');
289
# Edit our column and change the name
290
$response = $this->client->put('/dataset/' . $dataSet->dataSetId . '/column/' . $column->dataSetColumnId, [
291
'heading' => $nameNew,
292
113
'listContent' => '',
293
'columnOrder' => $column->columnOrder,
294
'dataTypeId' => $column->dataTypeId,
295
'dataSetColumnTypeId' => $column->dataSetColumnTypeId,
116
'dataSetColumnTypeId' => 1,
297
], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
298
# Check if call was successful
299
$this->assertSame(200, $this->client->response->status(), "Not successful: " . $this->client->response->body());
300
$object = json_decode($this->client->response->body());
301
$this->assertObjectHasAttribute('data', $object);
302
$this->assertObjectHasAttribute('id', $object);
303
# Check if our column has updated name
304
$this->assertSame($nameNew, $object->data->heading);
305
# Clean up as we no longer need it
311
* @depends testAddColumnSuccess
313
public function testDeleteColumn()
316
$name = Random::generateString(8, 'phpunit');
317
$description = 'PHP Unit column delete';
318
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
319
# Add new column to our dataset
320
$nameCol = Random::generateString(8, 'phpunit');
321
$column = (new XiboDataSetColumn($this->getEntityProvider()))->create($dataSet->dataSetId, $nameCol,'', 2, 1, 1, '');
323
$response = $this->client->delete('/dataset/' . $dataSet->dataSetId . '/column/' . $column->dataSetColumnId);
324
$this->assertSame(200, $this->client->response->status(), $this->client->response->body());
331
public function testGetData()
334
$name = Random::generateString(8, 'phpunit');
335
$description = 'PHP Unit';
336
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
338
$this->client->get('/dataset/data/' . $dataSet->dataSetId);
339
# Check if call was successful
340
$this->assertSame(200, $this->client->response->status());
341
$this->assertNotEmpty($this->client->response->body());
342
$object = json_decode($this->client->response->body());
343
$this->assertObjectHasAttribute('data', $object, $this->client->response->body());
351
public function testRowAdd()
353
# Create a new dataset to use
354
$name = Random::generateString(8, 'phpunit');
355
$description = 'PHP Unit row add';
356
/** @var XiboDataSet $dataSet */
357
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
358
# Create column and add it to our dataset
359
$nameCol = Random::generateString(8, 'phpunit');
360
$column = (new XiboDataSetColumn($this->getEntityProvider()))->create($dataSet->dataSetId, $nameCol,'', 2, 1, 1, '');
361
# Add new row to our dataset and column
362
$response = $this->client->post('/dataset/data/' . $dataSet->dataSetId, [
363
'dataSetColumnId_' . $column->dataSetColumnId => 'test',
365
$this->assertSame(200, $this->client->response->status(), "Not successful: " . $response);
366
$object = json_decode($this->client->response->body());
367
$this->assertObjectHasAttribute('data', $object);
368
$this->assertObjectHasAttribute('id', $object);
370
$row = $dataSet->getDataByRowId($object->id);
371
# Check if data was correctly added to the row
372
$this->assertArrayHasKey($nameCol, $row);
373
$this->assertSame($row[$nameCol], 'test');
374
# Clean up as we no longer need it, deleteWData will delete dataset even if it has data assigned to it
375
$dataSet->deleteWData();
379
* @dataProvider provideSuccessCasesRow
381
public function testRowEdit($data)
383
# Create a new dataset to use
384
/** @var XiboDataSet $dataSet */
385
$name = Random::generateString(8, 'phpunit');
386
$description = 'PHP Unit row edit';
387
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
388
# Generate a new name for the new column
389
$nameCol = Random::generateString(8, 'phpunit');
390
# Create new column and add it to our dataset
391
$column = (new XiboDataSetColumn($this->getEntityProvider()))->create($dataSet->dataSetId, $nameCol,'', 2, 1, 1, '');
392
# Add new row with data to our dataset
394
$row = $dataSet->createRow($column->dataSetColumnId, $rowD);
395
$rowCheck = $dataSet->getDataByRowId($row['id']);
397
$response = $this->client->put('/dataset/data/' . $dataSet->dataSetId . '/' . $row['id'], [
398
'dataSetColumnId_' . $column->dataSetColumnId => $data
399
], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
400
$this->assertSame(200, $this->client->response->status(), "Not successful: " . $response);
401
$object = json_decode($this->client->response->body());
402
$this->assertObjectHasAttribute('data', $object);
403
$this->assertObjectHasAttribute('id', $object);
405
$rowCheck = $dataSet->getDataByRowId($object->id);
406
# Check if data was correctly added to the row
407
$this->assertArrayHasKey($nameCol, $rowCheck);
409
$this->assertSame($rowCheck[$nameCol], $rowD);
412
$this->assertSame($rowCheck[$nameCol], $data);
414
# Clean up as we no longer need it, deleteWData will delete dataset even if it has data assigned to it
415
$dataSet -> deleteWData();
419
* Each array is a test run
424
public function provideSuccessCasesRow()
426
# Cases we provide to testRowEdit, you can extend it by simply adding new case here
429
'String' => ['API EDITED ROW'],
431
'number as string' => ['1212']
438
public function testRowDelete()
440
# Create a new dataset to use
441
/** @var XiboDataSet $dataSet */
442
$name = Random::generateString(8, 'phpunit');
443
$description = 'PHP Unit row delete';
444
$dataSet = (new XiboDataSet($this->getEntityProvider()))->create($name, $description);
445
# Generate a new name for the new column
446
$nameCol = Random::generateString(8, 'phpunit');
447
# Create new column and add it to our dataset
448
$column = (new XiboDataSetColumn($this->getEntityProvider()))->create($dataSet->dataSetId, $nameCol,'', 2, 1, 1, '');
450
$row = $dataSet->createRow($column->dataSetColumnId, 'test');
451
$rowCheck = $dataSet->getDataByRowId($row['id']);
453
$this->client->delete('/dataset/data/' . $dataSet->dataSetId . '/' . $row['id']);
454
$response = json_decode($this->client->response->body());
455
$this->assertSame(204, $response->status, $this->client->response->body());
456
# Clean up as we no longer need it, deleteWData will delete dataset even if it has data assigned to it
457
$dataSet -> deleteWData();
120
$this->assertSame(200, $this->client->response->status(), "Not successful: " . $response);
122
$object = json_decode($this->client->response->body());
124
$this->assertObjectHasAttribute('data', $object);
125
$this->assertObjectHasAttribute('id', $object);
126
$this->assertSame($name, $object->data->heading);
b'\\ No newline at end of file'