blob: 1db220904663ae3646f9e158d0218bb7659c685a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<?php
namespace Civi\Test\Api4\Traits;
/**
* This probably should be a separate class
*/
trait TestDataLoaderTrait {
/**
* @var array
* References to entities used for loading test data
*/
protected $references;
/**
* Creates entities from a JSON data set
*
* @param $path
*/
protected function loadDataSet($path) {
if (!file_exists($path)) {
$path = __DIR__ . '/../DataSets/' . $path . '.json';
}
$dataSet = json_decode(file_get_contents($path), TRUE);
foreach ($dataSet as $entityName => $entities) {
foreach ($entities as $entityValues) {
$entityValues = $this->replaceReferences($entityValues);
$params = ['values' => $entityValues, 'checkPermissions' => FALSE];
$result = civicrm_api4($entityName, 'create', $params);
if (isset($entityValues['@ref'])) {
$this->references[$entityValues['@ref']] = $result->first();
}
}
}
}
/**
* @param $name
*
* @return null|mixed
*/
protected function getReference($name) {
return isset($this->references[$name]) ? $this->references[$name] : NULL;
}
/**
* @param array $entityValues
*
* @return array
*/
private function replaceReferences($entityValues) {
foreach ($entityValues as $name => $value) {
if (is_array($value)) {
$entityValues[$name] = $this->replaceReferences($value);
}
elseif (substr($value, 0, 4) === '@ref') {
$referenceName = substr($value, 5);
list ($reference, $property) = explode('.', $referenceName);
$entityValues[$name] = $this->references[$reference][$property];
}
}
return $entityValues;
}
}
|