Skip to content

Commit

Permalink
Test dependencies from method signatures
Browse files Browse the repository at this point in the history
This adds a test case that checks for dependencies derived from method
signatures.
  • Loading branch information
brightbyte committed Dec 22, 2023
1 parent 4bb7ddc commit 1fb31c7
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
22 changes: 22 additions & 0 deletions tests/Core/Ast/AstMapGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
use Symfony\Component\EventDispatcher\EventDispatcher;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyClassB;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyClassC;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyMethodSignatureB;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyMethodSignatureC;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyTraitA;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyTraitB;
use Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyTraitC;
Expand Down Expand Up @@ -126,6 +128,26 @@ static function (DependencyToken $dependency) {
);
}

public function testBasicDependencyMethodSignature(): void
{
$astMap = $this->getAstMap(__DIR__.'/Fixtures/BasicDependency/BasicDependencyMethodSignature.php');

self::assertArrayValuesEquals(
[
'Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyMethodSignatureA::12 (Returns)',
],
$this->getInheritsAsString($astMap->getClassReferenceForToken(ClassLikeToken::fromFQCN(BasicDependencyMethodSignatureB::class)))
);

self::assertArrayValuesEquals(
[
'Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyMethodSignatureB::20 (Parameter)',
'Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency\BasicDependencyMethodSignatureA::22 (Variable)',
],
$this->getInheritsAsString($astMap->getClassReferenceForToken(ClassLikeToken::fromFQCN(BasicDependencyMethodSignatureC::class)))
);
}

/**
* @return string[]
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace Tests\Qossmic\Deptrac\Core\Ast\Fixtures\BasicDependency;

class BasicDependencyMethodSignatureA
{
public function foo() {}
}

class BasicDependencyMethodSignatureB
{
public function getA(): ?BasicDependencyMethodSignatureA
{
// no-op
return null;
}
}

class BasicDependencyMethodSignatureC
{
public function test( BasicDependencyMethodSignatureB $b )
{
$a = $b->getA();
$a->foo();
}

}

0 comments on commit 1fb31c7

Please sign in to comment.