Вход Регистрация
Файл: gapps/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php
Строк: 153
<?php

namespace specProphecyDoublerClassPatch;

use 
PhpSpecObjectBehavior;
use 
ProphecyArgument;
use 
ProphecyDoublerGeneratorNodeClassNode;
use 
ProphecyDoublerGeneratorNodeMethodNode;

class 
MagicCallPatchSpec extends ObjectBehavior
{
    function 
it_is_a_patch()
    {
        
$this->shouldBeAnInstanceOf('ProphecyDoublerClassPatchClassPatchInterface');
    }

    function 
it_supports_anything(ClassNode $node)
    {
        
$this->supports($node)->shouldReturn(true);
    }

    function 
it_discovers_api_using_phpdoc(ClassNode $node)
    {
        
$node->getParentClass()->willReturn('specProphecyDoublerClassPatchMagicalApi');
        
$node->getInterfaces()->willReturn(array());

        
$node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled();

        
$this->apply($node);
    }

    function 
it_ignores_existing_methods(ClassNode $node)
    {
        
$node->getParentClass()->willReturn('specProphecyDoublerClassPatchMagicalApiExtended');
        
$node->getInterfaces()->willReturn(array());

        
$node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled();
        
$node->addMethod(new MethodNode('definedMethod'))->shouldNotBeCalled();

        
$this->apply($node);
    }

    function 
it_ignores_empty_methods_from_phpdoc(ClassNode $node)
    {
        
$node->getParentClass()->willReturn('specProphecyDoublerClassPatchMagicalApiInvalidMethodDefinition');
        
$node->getInterfaces()->willReturn(array());

        
$node->addMethod(new MethodNode(''))->shouldNotBeCalled();

        
$this->apply($node);
    }

    function 
it_discovers_api_using_phpdoc_from_implemented_interfaces(ClassNode $node)
    {
        
$node->getParentClass()->willReturn('specProphecyDoublerClassPatchMagicalApiImplemented');
        
$node->getInterfaces()->willReturn(array());

        
$node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled();

        
$this->apply($node);
    }

    function 
it_discovers_api_using_phpdoc_from_own_interfaces(ClassNode $node)
    {
        
$node->getParentClass()->willReturn('stdClass');
        
$node->getInterfaces()->willReturn(array('specProphecyDoublerClassPatchMagicalApiImplemented'));

        
$node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled();

        
$this->apply($node);
    }

    function 
it_discovers_api_using_phpdoc_from_extended_parent_interfaces(ClassNode $node)
    {
        
$node->getParentClass()->willReturn('specProphecyDoublerClassPatchMagicalApiImplementedExtended');
        
$node->getInterfaces()->willReturn(array());

        
$node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled();

        
$this->apply($node);
    }

    function 
it_has_50_priority()
    {
        
$this->getPriority()->shouldReturn(50);
    }
}

/**
 * @method void undefinedMethod()
 */
class MagicalApi
{
    
/**
     * @return void
     */
    
public function definedMethod()
    {

    }
}

/**
 * @method void invalidMethodDefinition
 * @method void
 * @method
 */
class MagicalApiInvalidMethodDefinition
{
}

/**
 * @method void undefinedMethod()
 * @method void definedMethod()
 */
class MagicalApiExtended extends MagicalApi
{

}

/**
 */
class MagicalApiImplemented implements MagicalApiInterface
{

}

/**
 */
class MagicalApiImplementedExtended extends MagicalApiImplemented
{
}

/**
 * @method void implementedMethod()
 */
interface MagicalApiInterface
{

}
Онлайн: 0
Реклама