[NodeTypeResolver] split tests to 2 classes

This commit is contained in:
TomasVotruba 2017-08-21 11:44:56 +02:00
parent d013fe2534
commit 922b1f855c
4 changed files with 64 additions and 21 deletions

View File

@ -1,15 +1,14 @@
<?php declare(strict_types=1);
namespace Rector\NodeTypeResolver\Tests\NodeVisitor;
namespace Rector\NodeTypeResolver\Tests\NodeVisitor\ClassLikeTypeResolver;
use Nette\Utils\Html;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
use Rector\Contract\Parser\ParserInterface;
use Rector\NodeTraverser\StandaloneTraverseNodeTraverser;
use Rector\Tests\AbstractContainerAwareTestCase;
final class ClassLikeTypeResolverTest extends AbstractContainerAwareTestCase
final class PropertyTest extends AbstractContainerAwareTestCase
{
/**
* @var ParserInterface
@ -27,33 +26,24 @@ final class ClassLikeTypeResolverTest extends AbstractContainerAwareTestCase
$this->standaloneTraverseNodeTraverser = $this->container->get(StandaloneTraverseNodeTraverser::class);
}
public function testVariable(): void
{
$nodes = $this->parser->parseFile(__DIR__ . '/ClassLikeTypeResolverSource/VariableType.php');
$nodes = $this->standaloneTraverseNodeTraverser->traverse($nodes);
/** @var Variable $htmlVariableNode */
$htmlVariableNode = $nodes[1]->stmts[1]->stmts[0]->stmts[0]->expr->var;
$this->assertSame(Html::class, $htmlVariableNode->getAttribute('type'));
/** @var Variable $assignedVariableNode */
$assignedVariableNode = $nodes[1]->stmts[1]->stmts[0]->stmts[1]->expr->var;
$this->assertSame(Html::class, $assignedVariableNode->getAttribute('type'));
}
public function testProperty(): void
public function test(): void
{
$nodes = $this->parser->parseFile(__DIR__ . '/ClassLikeTypeResolverSource/PropertyType.php');
$nodes = $this->standaloneTraverseNodeTraverser->traverse($nodes);
// $this->property;
/** @var PropertyFetch $propertyFetchNode */
$propertyFetchNode = $nodes[1]->stmts[1]->stmts[2]->stmts[0]->expr;
$this->assertSame(Html::class, $propertyFetchNode->getAttribute('type'));
// @todo test asl well
//$propertyNode = $nodes[1]->stmts[1]->stmts[0];
// /** @var Type */ $property;
$propertyNode = $nodes[1]->stmts[1]->stmts[0];
$this->assertSame(Html::class, $propertyNode->getAttribute('type'));
dump($propertyNode);
die;
// $constructorVariableNode = $nodes[1]->stmts[1]->stmts[1]->params[0]->var;
}
}

View File

@ -0,0 +1,53 @@
<?php declare(strict_types=1);
namespace Rector\NodeTypeResolver\Tests\NodeVisitor\ClassLikeTypeResolver;
use Nette\Utils\Html;
use PhpParser\Node\Expr\Variable;
use Rector\Contract\Parser\ParserInterface;
use Rector\NodeTraverser\StandaloneTraverseNodeTraverser;
use Rector\Tests\AbstractContainerAwareTestCase;
final class VariableTest extends AbstractContainerAwareTestCase
{
/**
* @var ParserInterface
*/
private $parser;
/**
* @var StandaloneTraverseNodeTraverser
*/
private $standaloneTraverseNodeTraverser;
protected function setUp(): void
{
$this->parser = $this->container->get(ParserInterface::class);
$this->standaloneTraverseNodeTraverser = $this->container->get(StandaloneTraverseNodeTraverser::class);
$nodes = $this->parser->parseFile(__DIR__ . '/ClassLikeTypeResolverSource/VariableType.php');
$this->nodes = $this->standaloneTraverseNodeTraverser->traverse($nodes);
}
/**
* $variable
*/
public function testVariable(): void
{
/** @var Variable $htmlVariableNode */
$htmlVariableNode = $this->nodes[1]->stmts[1]->stmts[0]->stmts[0]->expr->var;
$this->assertSame(Html::class, $htmlVariableNode->getAttribute('type'));
}
/**
* $newVariable = $variable;
*/
public function testReassignedVariable(): void
{
/** @var Variable $assignedVariableNode */
$assignedVariableNode = $this->nodes[1]->stmts[1]->stmts[0]->stmts[1]->expr->var;
$this->assertSame(Html::class, $assignedVariableNode->getAttribute('type'));
}
}