Version 5.1 - All the GraphQL #32

Closed
timw4mail wants to merge 1160 commits from develop into master
4 changed files with 17 additions and 398 deletions
Showing only changes of commit 0fa54d9f7f - Show all commits

View File

@ -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))

View File

@ -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