getSpecification() public method

public getSpecification ( ) : SpecificationNode | null
return SpecificationNode | null
 /**
  * @param ExampleNode            $example
  * @param SpecificationInterface $context
  * @param MatcherManager         $matchers
  * @param CollaboratorManager    $collaborators
  */
 public function prepare(ExampleNode $example, SpecificationInterface $context, MatcherManager $matchers, CollaboratorManager $collaborators)
 {
     $spec = $example->getSpecification()->getClassReflection()->newInstance();
     $beforeMethod = $example->getSpecification()->getClassReflection()->getMethod($this->beforeMethod);
     $this->createMissingCollabolators($collaborators, $beforeMethod);
     $beforeMethod->invokeArgs($spec, $collaborators->getArgumentsFor($beforeMethod));
 }
示例#2
0
 /**
  * @param ExampleNode            $example
  * @param SpecificationInterface $context
  * @param MatcherManager         $matchers
  * @param CollaboratorManager    $collaborators
  */
 public function teardown(ExampleNode $example, SpecificationInterface $context, MatcherManager $matchers, CollaboratorManager $collaborators)
 {
     if (!$example->getSpecification()->getClassReflection()->hasMethod('letgo')) {
         return;
     }
     $reflection = $example->getSpecification()->getClassReflection()->getMethod('letgo');
     $reflection->invokeArgs($context, $collaborators->getArgumentsFor($reflection));
 }
 /**
  * Generates DI related stuff via parameter validator
  *
  * @param ExampleNode $example
  * @param Specification $context
  * @param MatcherManager $matchers
  * @param CollaboratorManager $collaborators
  *
  * @return $this
  */
 public function prepare(ExampleNode $example, Specification $context, MatcherManager $matchers, CollaboratorManager $collaborators)
 {
     if ($example->getSpecification()->getClassReflection()->hasMethod('let')) {
         $this->parameterValidator->validate($example->getSpecification()->getClassReflection()->getMethod('let'));
     }
     $this->parameterValidator->validate($example->getFunctionReflection());
     return $this;
 }
示例#4
0
 /**
  * @param ExampleNode            $example
  * @param Specification $context
  * @param MatcherManager         $matchers
  * @param CollaboratorManager    $collaborators
  */
 public function prepare(ExampleNode $example, Specification $context, MatcherManager $matchers, CollaboratorManager $collaborators)
 {
     $subjectFactory = new Wrapper($matchers, $this->presenter, $this->dispatcher, $example, $this->accessInspector);
     $subject = $subjectFactory->wrap(null);
     $subject->beAnInstanceOf($example->getSpecification()->getResource()->getSrcClassname());
     $context->setSpecificationSubject($subject);
 }
 /**
  * @param ExampleNode            $example
  * @param SpecificationInterface $context
  * @param MatcherManager         $matchers
  * @param CollaboratorManager    $collaborators
  */
 public function prepare(ExampleNode $example, SpecificationInterface $context, MatcherManager $matchers, CollaboratorManager $collaborators)
 {
     $this->prophet = new Prophet(null, $this->unwrapper, null);
     $classRefl = $example->getSpecification()->getClassReflection();
     if ($classRefl->hasMethod('let')) {
         $this->generateCollaborators($collaborators, $classRefl->getMethod('let'));
     }
     $this->generateCollaborators($collaborators, $example->getFunctionReflection());
 }
 function it_prepares_the_subject(ExampleNode $example, ObjectBehavior $context, MatcherManager $matchers, CollaboratorManager $collaborators, SpecificationNode $specification, ResourceInterface $resource, VarienWrapper $wrapper, Subject $subject, $factory)
 {
     $factory->create(Argument::cetera())->willReturn($wrapper);
     $wrapper->wrap(null)->willReturn($subject);
     $subject->beAnInstanceOf('\\stdObject');
     $subject = $subject->getWrappedObject();
     $resource->getSrcClassname()->willReturn('\\stdObject');
     $specification->getResource()->willReturn($resource);
     $example->getSpecification()->willReturn($specification);
     $context->setSpecificationSubject($subject)->shouldBeCalled();
     $this->prepare($example, $context, $matchers, $collaborators);
 }
    function prepareExampleBeforeAnnotation(ExampleNode $exampleNode, \ReflectionMethod $method, SpecificationNode $specificationNode, \ReflectionClass $specClass)
    {
        $exampleNode->getFunctionReflection()->willReturn($method);
        $method->getDocComment()->willReturn(<<<ANNOTATION
/**
 * @before prepareMethod
 */
ANNOTATION
);
        $exampleNode->getSpecification()->willReturn($specificationNode);
        $specificationNode->getClassReflection()->willReturn($specClass);
    }
 function let(Laravel $laravel, ExampleNode $example, SpecificationInterface $context)
 {
     $this->beConstructedWith($laravel);
     $p = new Prophet();
     $this->refMethod = $p->prophesize('ReflectionMethod');
     $this->refMethod->invokeArgs(Argument::type('PhpSpec\\SpecificationInterface'), Argument::type('array'))->shouldBeCalled();
     $refClass = $p->prophesize('ReflectionClass');
     $refClass->hasMethod('setLaravel')->willReturn(true);
     $refClass->hasMethod('setLaravel')->shouldBeCalled();
     $refClass->getMethod('setLaravel')->willReturn($this->refMethod->reveal());
     $refClass->getMethod('setLaravel')->shouldBeCalled();
     $specNode = $p->prophesize('PhpSpec\\Loader\\Node\\SpecificationNode');
     $specNode->getClassReflection()->willReturn($refClass->reveal());
     $example->getSpecification()->willReturn($specNode->reveal());
 }
 function it_does_pass_regular_example_into_parameter_validator_and_let_method_if_they_are_defined(ExampleNode $example, Specification $context, MatcherManager $matchers, CollaboratorManager $collaborators, SpecificationNode $specificationNode, \ReflectionClass $reflectionClass)
 {
     $example->getSpecification()->willReturn($specificationNode);
     $specificationNode->getClassReflection()->willReturn($reflectionClass);
     $reflectionClass->hasMethod('let')->willReturn(true);
     $exampleClosureReflection = new \ReflectionFunction(function () {
     });
     $letClosureReflection = new \ReflectionFunction(function () {
     });
     $reflectionClass->getMethod('let')->willReturn($letClosureReflection)->shouldBeCalled();
     $example->getFunctionReflection()->willReturn($exampleClosureReflection)->shouldBeCalled();
     $this->parameterValidator->validate($letClosureReflection)->shouldBeCalled();
     $this->parameterValidator->validate($exampleClosureReflection)->shouldBeCalled();
     $this->prepare($example, $context, $matchers, $collaborators)->shouldReturn($this);
 }
 function it_runs_let_and_letgo_maintainer_before_and_after_each_example_if_the_example_throws_an_exception(ExampleNode $example, SpecificationNode $specification, ReflectionClass $specReflection, $context, ReflectionMethod $exampReflection, LetAndLetgoMaintainer $maintainer, SpecificationInterface $context)
 {
     $example->isPending()->willReturn(false);
     $example->getFunctionReflection()->willReturn($exampReflection);
     $example->getSpecification()->willReturn($specification);
     $specification->getClassReflection()->willReturn($specReflection);
     $specReflection->newInstanceArgs()->willReturn($context);
     $exampReflection->getParameters()->willReturn(array());
     $exampReflection->invokeArgs($context, array())->willThrow('RuntimeException');
     $maintainer->getPriority()->willReturn(1);
     $maintainer->supports($example)->willReturn(true);
     $maintainer->prepare($example, Argument::cetera())->shouldBeCalled();
     $maintainer->teardown($example, Argument::cetera())->shouldBeCalled();
     $this->registerMaintainer($maintainer);
     $this->run($example);
 }
示例#11
0
 private function getIterators(ExampleNode $example)
 {
     $classRefl = $example->getSpecification()->getClassReflection();
     if ($classRefl->hasMethod('let')) {
         foreach ($classRefl->getMethod('let')->getParameters() as $parameter) {
             if ($this->isIterator($parameter->getClass())) {
                 (yield $parameter->getName() => $parameter->getClass()->getName());
             }
         }
     }
     foreach ($example->getFunctionReflection()->getParameters() as $parameter) {
         if ($this->isIterator($parameter->getClass())) {
             (yield $parameter->getName() => $parameter->getClass()->getName());
         }
     }
 }
示例#12
0
 /**
  * @return \PhpSpec\Loader\Suite
  */
 public function getSuite()
 {
     return $this->example->getSpecification()->getSuite();
 }
示例#13
0
 /**
  * {@inheritdoc}
  */
 public function prepare(ExampleNode $example, SpecificationInterface $context, MatcherManager $matchers, CollaboratorManager $collaborators)
 {
     $reflection = $example->getSpecification()->getClassReflection()->getMethod('setLumen');
     $reflection->invokeArgs($context, array($this->lumen));
 }
 /**
  * {@inheritdoc}
  */
 public function prepare(ExampleNode $example, Specification $context, MatcherManager $matchers, CollaboratorManager $collaborators)
 {
     $reflection = $example->getSpecification()->getClassReflection()->getMethod('setLaravel');
     $reflection->invokeArgs($context, [$this->laravel]);
 }
 public function supports(ExampleNode $example)
 {
     return $example->getSpecification()->getResource() instanceof ModelResource;
 }
 /**
  * @param ExampleNode $example
  * @return bool|mixed
  */
 private function getDataFromProvider(ExampleNode $example)
 {
     $parser = new Parser();
     $dataProviderMethod = $parser->getDataProvider($example->getFunctionReflection());
     if (!isset($dataProviderMethod)) {
         return array();
     }
     if (!$example->getSpecification()->getClassReflection()->hasMethod($dataProviderMethod)) {
         return array();
     }
     $subject = $example->getSpecification()->getClassReflection()->newInstance();
     $providedData = $example->getSpecification()->getClassReflection()->getMethod($dataProviderMethod)->invoke($subject);
     return is_array($providedData) ? $providedData : array();
 }