123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- namespace spec\Prophecy\Doubler\ClassPatch;
- use PhpSpec\ObjectBehavior;
- use Prophecy\Argument;
- use Prophecy\Doubler\Generator\Node\ArgumentNode;
- use Prophecy\Doubler\Generator\Node\ClassNode;
- use Prophecy\Doubler\Generator\Node\MethodNode;
- class DisableConstructorPatchSpec extends ObjectBehavior
- {
- function it_is_a_patch()
- {
- $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
- }
- function its_priority_is_100()
- {
- $this->getPriority()->shouldReturn(100);
- }
- function it_supports_anything(ClassNode $node)
- {
- $this->supports($node)->shouldReturn(true);
- }
- function it_makes_all_constructor_arguments_optional(
- ClassNode $class,
- MethodNode $method,
- ArgumentNode $arg1,
- ArgumentNode $arg2
- ) {
- $class->hasMethod('__construct')->willReturn(true);
- $class->getMethod('__construct')->willReturn($method);
- $method->getArguments()->willReturn(array($arg1, $arg2));
- $arg1->setDefault(null)->shouldBeCalled();
- $arg2->setDefault(null)->shouldBeCalled();
- $method->setCode(Argument::type('string'))->shouldBeCalled();
- $this->apply($class);
- }
- function it_creates_new_constructor_if_object_has_none(ClassNode $class)
- {
- $class->hasMethod('__construct')->willReturn(false);
- $class->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))
- ->shouldBeCalled();
- $this->apply($class);
- }
- }
|