mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-06 07:49:24 +03:00
Execution: tests are green
This commit is contained in:
parent
2ffc14cee6
commit
fd335a1d13
@ -3,11 +3,11 @@ namespace GraphQL\Tests\Executor;
|
||||
|
||||
require_once __DIR__ . '/TestClasses.php';
|
||||
|
||||
use GraphQL\Deferred;
|
||||
use GraphQL\Error\Error;
|
||||
use GraphQL\Executor\ExecutionResult;
|
||||
use GraphQL\Executor\Executor;
|
||||
use GraphQL\Error\FormattedError;
|
||||
use GraphQL\Executor\Promise\Adapter\ReactPromiseAdapter;
|
||||
use GraphQL\Language\Parser;
|
||||
use GraphQL\Language\SourceLocation;
|
||||
use GraphQL\Schema;
|
||||
@ -18,7 +18,6 @@ use GraphQL\Type\Definition\ResolveInfo;
|
||||
use GraphQL\Type\Definition\Type;
|
||||
use GraphQL\Type\Definition\UnionType;
|
||||
use GraphQL\Utils;
|
||||
use React\Promise\Promise;
|
||||
|
||||
class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
@ -34,13 +33,12 @@ class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
public function testExecutesArbitraryCode()
|
||||
{
|
||||
Executor::setPromiseAdapter(new ReactPromiseAdapter());
|
||||
$deepData = null;
|
||||
$data = null;
|
||||
|
||||
$promiseData = function () use (&$data) {
|
||||
return new Promise(function (callable $resolve) use (&$data) {
|
||||
return $resolve($data);
|
||||
return new Deferred(function () use (&$data) {
|
||||
return $data;
|
||||
});
|
||||
};
|
||||
|
||||
@ -165,7 +163,7 @@ class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
]);
|
||||
$schema = new Schema(['query' => $dataType]);
|
||||
|
||||
$this->assertEquals($expected, self::awaitPromise(Executor::execute($schema, $ast, $data, null, ['size' => 100], 'Example')));
|
||||
$this->assertEquals($expected, Executor::execute($schema, $ast, $data, null, ['size' => 100], 'Example')->toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -397,27 +395,37 @@ class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
];
|
||||
},
|
||||
'async' => function() {
|
||||
return new Promise(function(callable $resolve) { return $resolve('async'); });
|
||||
return new Deferred(function() { return 'async'; });
|
||||
},
|
||||
'asyncReject' => function() {
|
||||
return new Promise(function($_, callable $reject) { return $reject('Error getting asyncReject'); });
|
||||
return new Deferred(function() { throw new \Exception('Error getting asyncReject'); });
|
||||
},
|
||||
'asyncRawReject' => function () {
|
||||
return \React\Promise\reject('Error getting asyncRawReject');
|
||||
return new Deferred(function() {
|
||||
throw new \Exception('Error getting asyncRawReject');
|
||||
});
|
||||
},
|
||||
'asyncEmptyReject' => function () {
|
||||
return \React\Promise\reject();
|
||||
return new Deferred(function() {
|
||||
throw new \Exception();
|
||||
});
|
||||
},
|
||||
'asyncError' => function() {
|
||||
return new Promise(function() { throw new \Exception('Error getting asyncError'); });
|
||||
return new Deferred(function() {
|
||||
throw new \Exception('Error getting asyncError');
|
||||
});
|
||||
},
|
||||
// inherited from JS reference implementation, but make no sense in this PHP impl
|
||||
// leaving it just to simplify migrations from newer js versions
|
||||
'asyncRawError' => function() {
|
||||
return new Promise(function() { throw new \Exception('Error getting asyncRawError'); });
|
||||
return new Deferred(function() {
|
||||
throw new \Exception('Error getting asyncRawError');
|
||||
});
|
||||
},
|
||||
'asyncReturnError' => function() {
|
||||
return \React\Promise\resolve(new \Exception('Error getting asyncReturnError'));
|
||||
return new Deferred(function() {
|
||||
throw new \Exception('Error getting asyncReturnError');
|
||||
});
|
||||
},
|
||||
];
|
||||
|
||||
@ -516,10 +524,9 @@ class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
]
|
||||
];
|
||||
|
||||
Executor::setPromiseAdapter(new ReactPromiseAdapter());
|
||||
$result = Executor::execute($schema, $docAst, $data);
|
||||
$result = Executor::execute($schema, $docAst, $data)->toArray();
|
||||
|
||||
$this->assertEquals($expected, self::awaitPromise($result));
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -743,8 +750,6 @@ class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
public function testCorrectFieldOrderingDespiteExecutionOrder()
|
||||
{
|
||||
Executor::setPromiseAdapter(new ReactPromiseAdapter());
|
||||
|
||||
$doc = '{
|
||||
a,
|
||||
b,
|
||||
@ -757,13 +762,13 @@ class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
return 'a';
|
||||
},
|
||||
'b' => function () {
|
||||
return new Promise(function (callable $resolve) { return $resolve('b'); });
|
||||
return new Deferred(function () { return 'b'; });
|
||||
},
|
||||
'c' => function () {
|
||||
return 'c';
|
||||
},
|
||||
'd' => function () {
|
||||
return new Promise(function (callable $resolve) { return $resolve('d'); });
|
||||
return new Deferred(function () { return 'd'; });
|
||||
},
|
||||
'e' => function () {
|
||||
return 'e';
|
||||
@ -794,7 +799,7 @@ class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
]
|
||||
];
|
||||
|
||||
$this->assertEquals($expected, self::awaitPromise(Executor::execute($schema, $ast, $data)));
|
||||
$this->assertEquals($expected, Executor::execute($schema, $ast, $data)->toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1091,17 +1096,4 @@ class ExecutorTest extends \PHPUnit_Framework_TestCase
|
||||
]
|
||||
], $result->toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \GraphQL\Executor\Promise\Promise $promise
|
||||
* @return array
|
||||
*/
|
||||
private static function awaitPromise($promise)
|
||||
{
|
||||
$results = null;
|
||||
$promise->then(function (ExecutionResult $executionResult) use (&$results) {
|
||||
$results = $executionResult->toArray();
|
||||
});
|
||||
return $results;
|
||||
}
|
||||
}
|
||||
|
@ -117,7 +117,9 @@ class ListsTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
// Returns null
|
||||
$this->checkHandlesNullableLists(
|
||||
\React\Promise\resolve(null),
|
||||
new Deferred(function() {
|
||||
return null;
|
||||
}),
|
||||
[ 'data' => [ 'nest' => [ 'test' => null ] ] ]
|
||||
);
|
||||
|
||||
@ -361,7 +363,9 @@ class ListsTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
// Returns null
|
||||
$this->checkHandlesListOfNonNulls(
|
||||
\React\Promise\resolve(null),
|
||||
new Deferred(function() {
|
||||
return null;
|
||||
}),
|
||||
[ 'data' => [ 'nest' => [ 'test' => null ] ] ]
|
||||
);
|
||||
|
||||
@ -405,7 +409,11 @@ class ListsTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
// Contains null
|
||||
$this->checkHandlesListOfNonNulls(
|
||||
[ \React\Promise\resolve(1), \React\Promise\resolve(null), \React\Promise\resolve(2) ],
|
||||
[
|
||||
new Deferred(function() {return 1;}),
|
||||
new Deferred(function() {return null;}),
|
||||
new Deferred(function() {return 2;})
|
||||
],
|
||||
[ 'data' => [ 'nest' => [ 'test' => null ] ] ]
|
||||
);
|
||||
|
||||
|
@ -1,29 +1,18 @@
|
||||
<?php
|
||||
namespace GraphQL\Tests\Executor;
|
||||
|
||||
use GraphQL\Deferred;
|
||||
use GraphQL\Executor\ExecutionResult;
|
||||
use GraphQL\Executor\Executor;
|
||||
use GraphQL\Error\FormattedError;
|
||||
use GraphQL\Executor\Promise\Adapter\ReactPromiseAdapter;
|
||||
use GraphQL\Language\Parser;
|
||||
use GraphQL\Language\SourceLocation;
|
||||
use GraphQL\Schema;
|
||||
use GraphQL\Type\Definition\ObjectType;
|
||||
use GraphQL\Type\Definition\Type;
|
||||
use React\Promise\Promise;
|
||||
|
||||
class MutationsTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
Executor::setPromiseAdapter(new ReactPromiseAdapter());
|
||||
}
|
||||
|
||||
public static function tearDownAfterClass()
|
||||
{
|
||||
Executor::setPromiseAdapter(null);
|
||||
}
|
||||
|
||||
// Execute: Handles mutation execution ordering
|
||||
|
||||
/**
|
||||
@ -69,7 +58,7 @@ class MutationsTest extends \PHPUnit_Framework_TestCase
|
||||
]
|
||||
]
|
||||
];
|
||||
$this->assertEquals($expected, self::awaitPromise($mutationResult));
|
||||
$this->assertEquals($expected, $mutationResult->toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -127,20 +116,7 @@ class MutationsTest extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
]
|
||||
];
|
||||
$this->assertArraySubset($expected, self::awaitPromise($mutationResult));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \GraphQL\Executor\Promise\Promise $promise
|
||||
* @return array
|
||||
*/
|
||||
private static function awaitPromise($promise)
|
||||
{
|
||||
$results = null;
|
||||
$promise->then(function (ExecutionResult $executionResult) use (&$results) {
|
||||
$results = $executionResult->toArray();
|
||||
});
|
||||
return $results;
|
||||
$this->assertArraySubset($expected, $mutationResult->toArray());
|
||||
}
|
||||
|
||||
private function schema()
|
||||
@ -227,12 +203,12 @@ class Root {
|
||||
/**
|
||||
* @param $newNumber
|
||||
*
|
||||
* @return Promise
|
||||
* @return Deferred
|
||||
*/
|
||||
public function promiseToChangeTheNumber($newNumber)
|
||||
{
|
||||
return new Promise(function (callable $resolve) use ($newNumber) {
|
||||
return $resolve($this->immediatelyChangeTheNumber($newNumber));
|
||||
return new Deferred(function () use ($newNumber) {
|
||||
return $this->immediatelyChangeTheNumber($newNumber);
|
||||
});
|
||||
}
|
||||
|
||||
@ -245,12 +221,12 @@ class Root {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Promise
|
||||
* @return Deferred
|
||||
*/
|
||||
public function promiseAndFailToChangeTheNumber()
|
||||
{
|
||||
return new Promise(function (callable $resolve, callable $reject) {
|
||||
return $reject(new \Exception("Cannot change the number"));
|
||||
return new Deferred(function () {
|
||||
throw new \Exception("Cannot change the number");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user