Chris@0: shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); Chris@0: } Chris@0: Chris@0: function it_has_priority_of_0() Chris@0: { Chris@0: $this->getPriority()->shouldReturn(0); Chris@0: } Chris@0: Chris@0: function it_supports_any_class(ClassNode $node) Chris@0: { Chris@0: $this->supports($node)->shouldReturn(true); Chris@0: } Chris@0: Chris@0: function it_forces_class_to_implement_ProphecySubjectInterface(ClassNode $node) Chris@0: { Chris@0: $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->shouldBeCalled(); Chris@0: Chris@0: $node->addProperty('objectProphecy', 'private')->willReturn(null); Chris@0: $node->getMethods()->willReturn(array()); Chris@0: $node->hasMethod(Argument::any())->willReturn(false); Chris@0: $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); Chris@0: $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); Chris@0: Chris@0: $this->apply($node); Chris@0: } Chris@0: Chris@0: function it_forces_all_class_methods_except_constructor_to_proxy_calls_into_prophecy_makeCall( Chris@0: ClassNode $node, Chris@0: MethodNode $constructor, Chris@0: MethodNode $method1, Chris@0: MethodNode $method2, Chris@0: MethodNode $method3 Chris@0: ) { Chris@0: $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->willReturn(null); Chris@0: $node->addProperty('objectProphecy', 'private')->willReturn(null); Chris@0: $node->hasMethod(Argument::any())->willReturn(false); Chris@0: $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); Chris@0: $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); Chris@0: Chris@0: $constructor->getName()->willReturn('__construct'); Chris@0: $method1->getName()->willReturn('method1'); Chris@0: $method2->getName()->willReturn('method2'); Chris@0: $method3->getName()->willReturn('method3'); Chris@0: Chris@0: $method1->getReturnType()->willReturn('int'); Chris@0: $method2->getReturnType()->willReturn('int'); Chris@0: $method3->getReturnType()->willReturn('void'); Chris@0: Chris@0: $node->getMethods()->willReturn(array( Chris@0: 'method1' => $method1, Chris@0: 'method2' => $method2, Chris@0: 'method3' => $method3, Chris@0: )); Chris@0: Chris@0: $constructor->setCode(Argument::any())->shouldNotBeCalled(); Chris@0: Chris@0: $method1->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') Chris@0: ->shouldBeCalled(); Chris@0: $method2->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') Chris@0: ->shouldBeCalled(); Chris@0: $method3->setCode('$this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') Chris@0: ->shouldBeCalled(); Chris@0: Chris@0: $this->apply($node); Chris@0: } Chris@0: }