graphql-php/tests/Error/PrintErrorTest.php
2018-09-19 20:50:32 +02:00

104 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
namespace GraphQL\Tests\Error;
use GraphQL\Error\Error;
use GraphQL\Error\FormattedError;
use GraphQL\Language\Parser;
use GraphQL\Language\Source;
use GraphQL\Language\SourceLocation;
use PHPUnit\Framework\TestCase;
class PrintErrorTest extends TestCase
{
/**
* @see it('prints an line numbers with correct padding')
*/
public function testPrintsAnLineNumbersWithCorrectPadding() : void
{
$singleDigit = new Error(
'Single digit line number with no padding',
null,
new Source('*', 'Test', new SourceLocation(9, 1)),
[0]
);
$actual = FormattedError::printError($singleDigit);
$expected = 'Single digit line number with no padding
Test (9:1)
9: *
^
';
self::assertEquals($expected, $actual);
$doubleDigit = new Error(
'Left padded first line number',
null,
new Source("*\n", 'Test', new SourceLocation(9, 1)),
[0]
);
$actual = FormattedError::printError($doubleDigit);
$expected = 'Left padded first line number
Test (9:1)
9: *
^
10:
';
self::assertEquals($expected, $actual);
}
/**
* @see it('prints an error with nodes from different sources')
*/
public function testPrintsAnErrorWithNodesFromDifferentSources() : void
{
$sourceA = Parser::parse(new Source(
'type Foo {
field: String
}',
'SourceA'
));
$fieldTypeA = $sourceA->definitions[0]->fields[0]->type;
$sourceB = Parser::parse(new Source(
'type Foo {
field: Int
}',
'SourceB'
));
$fieldTypeB = $sourceB->definitions[0]->fields[0]->type;
$error = new Error(
'Example error with two nodes',
[
$fieldTypeA,
$fieldTypeB,
]
);
self::assertEquals(
'Example error with two nodes
SourceA (2:10)
1: type Foo {
2: field: String
^
3: }
SourceB (2:10)
1: type Foo {
2: field: Int
^
3: }
',
FormattedError::printError($error)
);
}
}