Version 5.1 - All the GraphQL #32
@ -195,7 +195,6 @@ final class JsonAPI {
|
||||
}
|
||||
|
||||
$organized[$type][$id] = $newItem;
|
||||
$organized[$type][$id]['original'] = $item;
|
||||
}
|
||||
|
||||
// Second pass, go through and fill missing relationships in the first pass
|
||||
@ -215,7 +214,6 @@ final class JsonAPI {
|
||||
$relationship =& $organized[$type][$id]['relationships'][$relType];
|
||||
unset($relationship['links']);
|
||||
unset($relationship['data']);
|
||||
$relationship['foo'] = TRUE;
|
||||
|
||||
if ($relType === $dataType)
|
||||
{
|
||||
@ -255,16 +253,16 @@ final class JsonAPI {
|
||||
$inlined[$key][$itemId] = $item;
|
||||
|
||||
foreach($item['relationships'] as $type => $ids)
|
||||
{
|
||||
{
|
||||
$inlined[$key][$itemId]['relationships'][$type] = [];
|
||||
|
||||
|
||||
if ( ! array_key_exists($type, $included)) continue;
|
||||
|
||||
|
||||
if (array_key_exists('data', $ids ))
|
||||
{
|
||||
$ids = array_column($ids['data'], 'id');
|
||||
}
|
||||
|
||||
|
||||
foreach($ids as $id)
|
||||
{
|
||||
$inlined[$key][$itemId]['relationships'][$type][$id] = $included[$type][$id];
|
||||
@ -326,12 +324,13 @@ final class JsonAPI {
|
||||
|
||||
foreach($relationships as $key => $data)
|
||||
{
|
||||
$organized[$key] = $organized[$key] ?? [];
|
||||
if ( ! array_key_exists('data', $data))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$organized[$key] = $organized[$key] ?? [];
|
||||
|
||||
foreach ($data['data'] as $item)
|
||||
{
|
||||
if (\is_array($item) && array_key_exists('id', $item))
|
||||
|
@ -21,11 +21,11 @@ use Aviat\Ion\Json;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class JsonAPITest extends TestCase {
|
||||
|
||||
|
||||
protected $startData;
|
||||
protected $organizedIncludes;
|
||||
protected $inlineIncluded;
|
||||
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$dir = __DIR__ . '/../test_data/JsonAPI';
|
||||
@ -33,20 +33,24 @@ class JsonAPITest extends TestCase {
|
||||
$this->organizedIncludes = Json::decodeFile("{$dir}/organizedIncludes.json");
|
||||
$this->inlineIncluded = Json::decodeFile("{$dir}/inlineIncluded.json");
|
||||
}
|
||||
|
||||
|
||||
public function testOrganizeIncludes()
|
||||
{
|
||||
$expected = $this->organizedIncludes;
|
||||
$actual = JsonAPI::organizeIncludes($this->startData['included']);
|
||||
|
||||
// file_put_contents(__DIR__ . '/../test_data/JsonAPI/organizedIncludes.json', json_Encode($actual));
|
||||
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
|
||||
public function testInlineIncludedRelationships()
|
||||
{
|
||||
$expected = $this->inlineIncluded;
|
||||
$actual = JsonAPI::inlineIncludedRelationships($this->organizedIncludes, 'anime');
|
||||
|
||||
|
||||
// file_put_contents(__DIR__ . '/../test_data/JsonAPI/inlineIncluded.json', json_Encode($actual));
|
||||
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user