Chris@0: shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); Chris@0: } Chris@0: Chris@0: function its_priority_is_100() Chris@0: { Chris@0: $this->getPriority()->shouldReturn(100); Chris@0: } Chris@0: Chris@0: function it_supports_anything(ClassNode $node) Chris@0: { Chris@0: $this->supports($node)->shouldReturn(true); Chris@0: } Chris@0: Chris@0: function it_makes_all_constructor_arguments_optional( Chris@0: ClassNode $class, Chris@0: MethodNode $method, Chris@0: ArgumentNode $arg1, Chris@0: ArgumentNode $arg2 Chris@0: ) { Chris@0: $class->hasMethod('__construct')->willReturn(true); Chris@0: $class->getMethod('__construct')->willReturn($method); Chris@0: $method->getArguments()->willReturn(array($arg1, $arg2)); Chris@0: Chris@0: $arg1->setDefault(null)->shouldBeCalled(); Chris@0: $arg2->setDefault(null)->shouldBeCalled(); Chris@0: Chris@0: $method->setCode(Argument::type('string'))->shouldBeCalled(); Chris@0: Chris@0: $this->apply($class); Chris@0: } Chris@0: Chris@0: function it_creates_new_constructor_if_object_has_none(ClassNode $class) Chris@0: { Chris@0: $class->hasMethod('__construct')->willReturn(false); Chris@0: $class->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode')) Chris@0: ->shouldBeCalled(); Chris@0: Chris@0: $this->apply($class); Chris@0: } Chris@0: }