refactor: Cleanup git state - commit all staged changes
Major refactoring cleanup: - Add new controller architecture (class-controller-*.php) - Add new settings-v2 UI (views/settings-v2/) - Add new CSS architecture (agentic-sidebar.css, tokens) - Add esbuild build pipeline (scripts/build.js, package.json) - Add composer dependencies (vendor/) - Add frontend src directory (assets/js/src/index.jsx) - Add documentation files - Remove old/obsolete files (class-settings.php, old CSS) This commits all pending changes from previous refactoring efforts.
This commit is contained in:
168
vendor/phpdocumentor/reflection/tests/integration/ClassesTest.php
vendored
Normal file
168
vendor/phpdocumentor/reflection/tests/integration/ClassesTest.php
vendored
Normal file
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* This file is part of phpDocumentor.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*
|
||||
* @link http://phpdoc.org
|
||||
*/
|
||||
|
||||
namespace phpDocumentor\Reflection;
|
||||
|
||||
use Mockery\Adapter\Phpunit\MockeryTestCase;
|
||||
use phpDocumentor\Reflection\File\LocalFile;
|
||||
use phpDocumentor\Reflection\Php\Class_;
|
||||
use phpDocumentor\Reflection\Php\Constant;
|
||||
use phpDocumentor\Reflection\Php\File as PhpFile;
|
||||
use phpDocumentor\Reflection\Php\ProjectFactory;
|
||||
use phpDocumentor\Reflection\Types\Integer;
|
||||
use phpDocumentor\Reflection\Types\Object_;
|
||||
|
||||
/**
|
||||
* @coversNothing
|
||||
*/
|
||||
final class ClassesTest extends MockeryTestCase
|
||||
{
|
||||
const FILE_PIZZA = __DIR__ . '/data/Pizza.php';
|
||||
const FILE_LUIGI_PIZZA = __DIR__ . '/data/Luigi/Pizza.php';
|
||||
/** @var ProjectFactory */
|
||||
private $fixture;
|
||||
|
||||
/** @var Project */
|
||||
private $project;
|
||||
|
||||
protected function setUp() : void
|
||||
{
|
||||
$this->fixture = ProjectFactory::createInstance();
|
||||
$this->project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[
|
||||
new LocalFile(self::FILE_PIZZA),
|
||||
new LocalFile(self::FILE_LUIGI_PIZZA),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function testItHasAllConstants() : void
|
||||
{
|
||||
$file = $this->project->getFiles()[self::FILE_PIZZA];
|
||||
|
||||
$className = '\\Pizza';
|
||||
$constantName = '\\Pizza::PACKAGING';
|
||||
|
||||
$class = $this->fetchClassFromFile($className, $file);
|
||||
|
||||
$this->assertArrayHasKey($constantName, $class->getConstants());
|
||||
$constant = $class->getConstants()[$constantName];
|
||||
|
||||
$this->assertInstanceOf(Constant::class, $constant);
|
||||
|
||||
$this->assertArrayHasKey('\\OVEN_TEMPERATURE', $file->getConstants());
|
||||
$this->assertArrayHasKey('\\MAX_OVEN_TEMPERATURE', $file->getConstants());
|
||||
}
|
||||
|
||||
public function testTypedPropertiesReturnTheirType() : void
|
||||
{
|
||||
$fileName = self::FILE_LUIGI_PIZZA;
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
/** @var Class_ $pizzaClass */
|
||||
$pizzaClass = $project->getFiles()[$fileName]->getClasses()['\\Luigi\\Pizza'];
|
||||
$this->assertArrayHasKey('\\Luigi\\Pizza::$size', $pizzaClass->getProperties());
|
||||
$this->assertEquals(new Integer(), $pizzaClass->getProperties()['\\Luigi\\Pizza::$size']->getType());
|
||||
}
|
||||
|
||||
public function testUsedTraitsAreIncludedInClass() : void
|
||||
{
|
||||
$fileName = self::FILE_LUIGI_PIZZA;
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
/** @var Class_ $pizzaClass */
|
||||
$pizzaClass = $project->getFiles()[$fileName]->getClasses()['\\Luigi\\Pizza'];
|
||||
$this->assertEquals(['\\Luigi\\ExampleNestedTrait' => new Fqsen('\\Luigi\\ExampleNestedTrait')], $pizzaClass->getUsedTraits());
|
||||
}
|
||||
|
||||
public function testWithNamespacedClass() : void
|
||||
{
|
||||
$fileName = self::FILE_LUIGI_PIZZA;
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey($fileName, $project->getFiles());
|
||||
$this->assertArrayHasKey('\\Luigi\\Pizza', $project->getFiles()[$fileName]->getClasses());
|
||||
$this->assertEquals('\Pizza', $project->getFiles()[$fileName]->getClasses()['\\Luigi\\Pizza']->getParent());
|
||||
$this->assertArrayHasKey(
|
||||
'\\Luigi\\Pizza::$instance',
|
||||
$project->getFiles()[$fileName]->getClasses()['\\Luigi\\Pizza']->getProperties()
|
||||
);
|
||||
|
||||
$methods = $project->getFiles()[$fileName]->getClasses()['\\Luigi\\Pizza']->getMethods();
|
||||
$this->assertArrayHasKey(
|
||||
'\\Luigi\\Pizza::__construct()',
|
||||
$methods
|
||||
);
|
||||
|
||||
$this->assertEquals('style', $methods['\\Luigi\\Pizza::__construct()']->getArguments()[0]->getName());
|
||||
$this->assertEquals(
|
||||
new Object_(new Fqsen('\\Luigi\\Pizza\Style')),
|
||||
$methods['\\Luigi\\Pizza::__construct()']->getArguments()[0]->getType()
|
||||
);
|
||||
}
|
||||
|
||||
public function testWithUsedParent() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Luigi/StyleFactory.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey($fileName, $project->getFiles());
|
||||
$this->assertArrayHasKey('\\Luigi\\StyleFactory', $project->getFiles()[$fileName]->getClasses());
|
||||
$this->assertEquals(
|
||||
'\\Luigi\\Pizza\\PizzaComponentFactory',
|
||||
$project->getFiles()[$fileName]->getClasses()['\\Luigi\\StyleFactory']->getParent()
|
||||
);
|
||||
}
|
||||
|
||||
public function testWithInterface() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Luigi/Valued.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey('\\Luigi\\Valued', $project->getFiles()[$fileName]->getInterfaces());
|
||||
}
|
||||
|
||||
public function testWithTrait() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Luigi/ExampleNestedTrait.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey('\\Luigi\\ExampleNestedTrait', $project->getFiles()[$fileName]->getTraits());
|
||||
}
|
||||
|
||||
private function fetchClassFromFile(string $className, PhpFile $file)
|
||||
{
|
||||
$this->assertArrayHasKey($className, $file->getClasses());
|
||||
|
||||
return $file->getClasses()[$className];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user