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:
286
vendor/phpdocumentor/reflection/tests/integration/ProjectCreationTest.php
vendored
Normal file
286
vendor/phpdocumentor/reflection/tests/integration/ProjectCreationTest.php
vendored
Normal file
@@ -0,0 +1,286 @@
|
||||
<?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\DocBlock\Tags\Param;
|
||||
use phpDocumentor\Reflection\File\LocalFile;
|
||||
use phpDocumentor\Reflection\Php\Class_;
|
||||
use phpDocumentor\Reflection\Php\Expression;
|
||||
use phpDocumentor\Reflection\Php\Function_;
|
||||
use phpDocumentor\Reflection\Php\ProjectFactory;
|
||||
use phpDocumentor\Reflection\Types\Integer;
|
||||
use phpDocumentor\Reflection\Types\Null_;
|
||||
use phpDocumentor\Reflection\Types\Object_;
|
||||
use phpDocumentor\Reflection\Types\String_;
|
||||
|
||||
/**
|
||||
* Integration tests to check the correct working of processing a file into a project.
|
||||
*
|
||||
* @coversNothing
|
||||
*/
|
||||
class ProjectCreationTest extends MockeryTestCase
|
||||
{
|
||||
/** @var ProjectFactory */
|
||||
private $fixture;
|
||||
|
||||
protected function setUp() : void
|
||||
{
|
||||
$this->fixture = ProjectFactory::createInstance();
|
||||
}
|
||||
|
||||
public function testCreateProjectWithFunctions() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/simpleFunction.php';
|
||||
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey($fileName, $project->getFiles());
|
||||
$file = $project->getFiles()[$fileName];
|
||||
$this->assertArrayHasKey('\simpleFunction()', $file->getFunctions());
|
||||
|
||||
/** @var Function_ $function */
|
||||
$function = $file->getFunctions()['\simpleFunction()'];
|
||||
$this->assertSame('\simpleFunction()', (string) $function->getFqsen());
|
||||
$this->assertCount(1, $function->getArguments());
|
||||
}
|
||||
|
||||
public function testCreateProjectWithClass() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Pizza.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey($fileName, $project->getFiles());
|
||||
$this->assertArrayHasKey('\\Pizza', $project->getFiles()[$fileName]->getClasses());
|
||||
$this->assertArrayHasKey(
|
||||
'\\Pizza::PACKAGING',
|
||||
$project->getFiles()[$fileName]->getClasses()['\\Pizza']->getConstants()
|
||||
);
|
||||
$constant = $project->getFiles()[$fileName]->getClasses()['\\Pizza']->getConstants()['\\Pizza::PACKAGING'];
|
||||
|
||||
$this->assertEquals('\'box\'', $constant->getValue());
|
||||
}
|
||||
|
||||
public function testTypedPropertiesReturnTheirType() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Luigi/Pizza.php';
|
||||
$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 testFileWithDocBlock() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Pizza.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey($fileName, $project->getFiles());
|
||||
$this->assertInstanceOf(Docblock::class, $project->getFiles()[$fileName]->getDocBlock());
|
||||
}
|
||||
|
||||
public function testWithNamespacedClass() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Luigi/Pizza.php';
|
||||
$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()
|
||||
);
|
||||
|
||||
$sauceArgument = $methods['\\Luigi\\Pizza::__construct()']->getArguments()[1];
|
||||
$this->assertEquals('sauce', $sauceArgument->getName());
|
||||
$this->assertEquals(
|
||||
new Php\Expression(
|
||||
'{{ PHPDOC37a6259cc0c1dae299a7866489dff0bd }}',
|
||||
[
|
||||
'{{ PHPDOC37a6259cc0c1dae299a7866489dff0bd }}' => new Null_(),
|
||||
],
|
||||
),
|
||||
$sauceArgument->getDefault(false)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function testDocblockOfMethodIsProcessed() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Luigi/Pizza.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey($fileName, $project->getFiles());
|
||||
|
||||
$methods = $project->getFiles()[$fileName]->getClasses()['\\Luigi\\Pizza']->getMethods();
|
||||
|
||||
$createInstanceMethod = $methods['\\Luigi\\Pizza::createInstance()'];
|
||||
|
||||
$this->assertInstanceOf(DocBlock::class, $createInstanceMethod->getDocBlock());
|
||||
|
||||
$docblock = $createInstanceMethod->getDocBlock();
|
||||
/** @var Param[] $params */
|
||||
$params = $docblock->getTagsByName('param');
|
||||
|
||||
/** @var Object_ $objectType */
|
||||
$objectType = $params[0]->getType();
|
||||
|
||||
$this->assertEquals(new Fqsen('\Luigi\Pizza\Style'), $objectType->getFqsen());
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
public function testWithGlobalConstants() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Luigi/constants.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey('\\Luigi\\OVEN_TEMPERATURE', $project->getFiles()[$fileName]->getConstants());
|
||||
$this->assertArrayHasKey('\\Luigi\\MAX_OVEN_TEMPERATURE', $project->getFiles()[$fileName]->getConstants());
|
||||
$this->assertArrayHasKey('\\OUTSIDE_OVEN_TEMPERATURE', $project->getFiles()[$fileName]->getConstants());
|
||||
$this->assertArrayHasKey('\\LuigiFoo\\_OUTSIDE_OVEN_TEMPERATURE', $project->getFiles()[$fileName]->getConstants());
|
||||
}
|
||||
|
||||
public function testInterfaceExtends() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Luigi/Packing.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey('\\Luigi\\Packing', $project->getFiles()[$fileName]->getInterfaces());
|
||||
$interface = current($project->getFiles()[$fileName]->getInterfaces());
|
||||
|
||||
$this->assertEquals(['\\Packing' => new Fqsen('\\Packing')], $interface->getParents());
|
||||
}
|
||||
|
||||
public function testMethodReturnType() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/Packing.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey('\\Packing', $project->getFiles()[$fileName]->getInterfaces());
|
||||
$interface = current($project->getFiles()[$fileName]->getInterfaces());
|
||||
|
||||
$this->assertEquals(new String_(), $interface->getMethods()['\Packing::getName()']->getReturnType());
|
||||
}
|
||||
|
||||
public function testFunctionContantDefaultIsResolved() : void
|
||||
{
|
||||
$fileName = __DIR__ . '/data/GlobalFiles/function_constant_default.php';
|
||||
$project = $this->fixture->create(
|
||||
'MyProject',
|
||||
[new LocalFile($fileName)]
|
||||
);
|
||||
|
||||
$this->assertArrayHasKey($fileName, $project->getFiles());
|
||||
$functions = $project->getFiles()[$fileName]->getFunctions();
|
||||
|
||||
self::assertEquals(
|
||||
new Expression(
|
||||
'{{ PHPDOCa2f2ed4f8ebc2cbb4c21a29dc40ab61d }}',
|
||||
[
|
||||
'{{ PHPDOCa2f2ed4f8ebc2cbb4c21a29dc40ab61d }}' => new Fqsen('\Acme\Plugin::class'),
|
||||
],
|
||||
),
|
||||
$functions['\foo()']->getArguments()[0]->getDefault(false)
|
||||
);
|
||||
|
||||
self::assertEquals(
|
||||
new Expression(
|
||||
'{{ PHPDOCa8cfde6331bd59eb2ac96f8911c4b666 }}',
|
||||
[
|
||||
'{{ PHPDOCa8cfde6331bd59eb2ac96f8911c4b666 }}' => new Object_(),
|
||||
],
|
||||
),
|
||||
$functions['\bar()']->getArguments()[0]->getDefault(false)
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user