Skip to content
Snippets Groups Projects
Commit 1088bd03 authored by Daniel Kurowski's avatar Daniel Kurowski
Browse files

make preserving annotated methods default behavior

parent a07c388a
No related tags found
1 merge request!62Draft: Make preserving annotated methods default behavior
Pipeline #50352 passed
......@@ -5,6 +5,8 @@ declare(strict_types = 1);
namespace Grifart\ClassScaffolder\Definition;
use Grifart\ClassScaffolder\Capabilities\Capability;
use Grifart\ClassScaffolder\Capabilities\PreservedAnnotatedMethods;
final class ClassDefinition
{
......@@ -31,6 +33,8 @@ final class ClassDefinition
} else {
$this->className = $className;
}
$this->capabilities[] = new PreservedAnnotatedMethods();
}
......
......@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Grifart\ClassScaffolder\Test\Definition;
use Grifart\ClassScaffolder\Capabilities\ImplementedInterface;
use Grifart\ClassScaffolder\Capabilities\PreservedAnnotatedMethods;
use Grifart\ClassScaffolder\Decorators\PropertiesDecorator;
use Grifart\ClassScaffolder\Definition\ClassDefinitionBuilder;
use Grifart\ClassScaffolder\Definition\Types\SimpleType;
......@@ -37,9 +38,10 @@ final class ClassDefinitionBuilderTest extends TestCase
Assert::type(SimpleType::class, $definition->getFields()[0]->getType());
Assert::type('string', $definition->getFields()[0]->getType()->getTypeHint());
Assert::count(2, $definition->getCapabilities());
Assert::type(ImplementedInterface::class, $definition->getCapabilities()[0]);
Assert::type(PropertiesDecorator::class, $definition->getCapabilities()[1]);
Assert::count(3, $definition->getCapabilities());
Assert::type(PreservedAnnotatedMethods::class, $definition->getCapabilities()[0]);
Assert::type(ImplementedInterface::class, $definition->getCapabilities()[1]);
Assert::type(PropertiesDecorator::class, $definition->getCapabilities()[2]);
}
public function testDeprecation(): void
......
......@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Grifart\ClassScaffolder\Test\Definition;
use Grifart\ClassScaffolder\Capabilities\Capability;
use Grifart\ClassScaffolder\Capabilities\PreservedAnnotatedMethods;
use Grifart\ClassScaffolder\ClassInNamespace;
use Grifart\ClassScaffolder\Definition\ClassDefinition;
use Grifart\ClassScaffolder\Definition\Types\CheckedClassType;
......@@ -12,6 +13,7 @@ use Grifart\ClassScaffolder\Definition\Types\NullableType;
use Grifart\ClassScaffolder\Definition\Types\SimpleType;
use Tester\Assert;
use Tester\TestCase;
use function array_shift;
use function Grifart\ClassScaffolder\Definition\definitionOf;
use function Grifart\ClassScaffolder\Definition\Types\nullable;
use function Grifart\ClassScaffolder\Definition\Types\resolve;
......@@ -66,6 +68,8 @@ final class ClassDefinitionTest extends TestCase
public function testCapabilities(): void
{
$preserveExpected = new PreservedAnnotatedMethods();
$capability1 = new class implements Capability {
public function applyTo(ClassDefinition $definition, ClassInNamespace $draft, ?ClassInNamespace $current): void {}
};
......@@ -76,12 +80,19 @@ final class ClassDefinitionTest extends TestCase
public function applyTo(ClassDefinition $definition, ClassInNamespace $draft, ?ClassInNamespace $current): void {}
};
// check auto-registered capabilities and then the rest
$assertCapabilities = function (array $expected, array $actual) {
$preserveAnnotatedMethods = array_shift($actual);
Assert::type(PreservedAnnotatedMethods::class, $preserveAnnotatedMethods);
Assert::same($expected, $actual);
};
$definition = (new ClassDefinition('ClassName'))->with($capability1, $capability2);
Assert::same([$capability1, $capability2], $definition->getCapabilities());
$assertCapabilities([$capability1, $capability2], $definition->getCapabilities());
$updatedDefinition = $definition->with($capability3);
Assert::same([$capability1, $capability2, $capability3], $updatedDefinition->getCapabilities());
Assert::same([$capability1, $capability2], $definition->getCapabilities());
$assertCapabilities([$capability1, $capability2, $capability3], $updatedDefinition->getCapabilities());
$assertCapabilities([$capability1, $capability2], $definition->getCapabilities());
}
public function testDefinitionOf(): void
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment