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

namespace specProphecyDoublerClassPatch;

use 
PhpSpecObjectBehavior;
use 
ProphecyArgument;

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

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

    
/**
     * @param ProphecyDoublerGeneratorNodeClassNode $node
     */
    
function it_does_not_support_nodes_without_parent_class($node)
    {
        
$node->getParentClass()->willReturn('stdClass');
        
$this->supports($node)->shouldReturn(false);
    }

    
/**
     * @param ProphecyDoublerGeneratorNodeClassNode $node
     */
    
function it_supports_nodes_with_SplFileInfo_as_parent_class($node)
    {
        
$node->getParentClass()->willReturn('SplFileInfo');
        
$this->supports($node)->shouldReturn(true);
    }

    
/**
     * @param ProphecyDoublerGeneratorNodeClassNode $node
     */
    
function it_supports_nodes_with_derivative_of_SplFileInfo_as_parent_class($node)
    {
        
$node->getParentClass()->willReturn('SplFileInfo');
        
$this->supports($node)->shouldReturn(true);
    }

    
/**
     * @param ProphecyDoublerGeneratorNodeClassNode $node
     */
    
function it_adds_a_method_to_node_if_not_exists($node)
    {
        
$node->hasMethod('__construct')->willReturn(false);
        
$node->addMethod(Argument::any())->shouldBeCalled();
        
$node->getParentClass()->shouldBeCalled();

        
$this->apply($node);
    }

    
/**
     * @param ProphecyDoublerGeneratorNodeClassNode  $node
     * @param ProphecyDoublerGeneratorNodeMethodNode $method
     */
    
function it_updates_existing_method_if_found($node$method)
    {
        
$node->hasMethod('__construct')->willReturn(true);
        
$node->getMethod('__construct')->willReturn($method);
        
$node->getParentClass()->shouldBeCalled();

        
$method->useParentCode()->shouldBeCalled();

        
$this->apply($node);
    }

    
/**
     * @param ProphecyDoublerGeneratorNodeClassNode  $node
     * @param ProphecyDoublerGeneratorNodeMethodNode $method
     */
    
function it_should_not_supply_a_file_for_a_directory_iterator($node$method)
    {
        
$node->hasMethod('__construct')->willReturn(true);
        
$node->getMethod('__construct')->willReturn($method);
        
$node->getParentClass()->willReturn('DirectoryIterator');

        
$method->setCode(Argument::that(function($value) {
            return 
strpos($value'.php') === false;
        }))->
shouldBeCalled();

        
$this->apply($node);
    }

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