Viewing file: CallCenterSpec.php (7.86 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace spec\Prophecy\Call;
use PhpSpec\ObjectBehavior; use Prophecy\Prophecy\ObjectProphecy; use Prophecy\Argument\ArgumentsWildcard;
class CallCenterSpec extends ObjectBehavior { /** * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy */ function let($objectProphecy) { }
/** * @param \Prophecy\Prophecy\ObjectProphecy $objectProphecy * @param \Prophecy\Argument\ArgumentsWildcard $wildcard */ function it_records_calls_made_through_makeCall_method($objectProphecy, $wildcard) { $wildcard->scoreArguments(array(5, 2, 3))->willReturn(10); $objectProphecy->getMethodProphecies()->willReturn(array());
$this->makeCall($objectProphecy, 'setValues', array(5, 2, 3));
$calls = $this->findCalls('setValues', $wildcard); $calls->shouldHaveCount(1);
$calls[0]->shouldBeAnInstanceOf('Prophecy\Call\Call'); $calls[0]->getMethodName()->shouldReturn('setValues'); $calls[0]->getArguments()->shouldReturn(array(5, 2, 3)); $calls[0]->getReturnValue()->shouldReturn(null); }
function it_returns_null_for_any_call_through_makeCall_if_no_method_prophecies_added( $objectProphecy ) { $objectProphecy->getMethodProphecies()->willReturn(array());
$this->makeCall($objectProphecy, 'setValues', array(5, 2, 3))->shouldReturn(null); }
/** * @param \Prophecy\Prophecy\MethodProphecy $method1 * @param \Prophecy\Prophecy\MethodProphecy $method2 * @param \Prophecy\Prophecy\MethodProphecy $method3 * @param \Prophecy\Argument\ArgumentsWildcard $arguments1 * @param \Prophecy\Argument\ArgumentsWildcard $arguments2 * @param \Prophecy\Argument\ArgumentsWildcard $arguments3 * @param \Prophecy\Promise\PromiseInterface $promise */ function it_executes_promise_of_method_prophecy_that_matches_signature_passed_to_makeCall( $objectProphecy, $method1, $method2, $method3, $arguments1, $arguments2, $arguments3, $promise ) { $method1->getMethodName()->willReturn('getName'); $method1->getArgumentsWildcard()->willReturn($arguments1); $arguments1->scoreArguments(array('world', 'everything'))->willReturn(false);
$method2->getMethodName()->willReturn('setTitle'); $method2->getArgumentsWildcard()->willReturn($arguments2); $arguments2->scoreArguments(array('world', 'everything'))->willReturn(false);
$method3->getMethodName()->willReturn('getName'); $method3->getArgumentsWildcard()->willReturn($arguments3); $method3->getPromise()->willReturn($promise); $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200);
$objectProphecy->getMethodProphecies()->willReturn(array( 'method1' => array($method1), 'method2' => array($method2, $method3) )); $objectProphecy->getMethodProphecies('getName')->willReturn(array($method1, $method3)); $objectProphecy->reveal()->willReturn(new \stdClass());
$promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method3)->willReturn(42);
$this->makeCall($objectProphecy, 'getName', array('world', 'everything'))->shouldReturn(42);
$calls = $this->findCalls('getName', $arguments3); $calls->shouldHaveCount(1); $calls[0]->getReturnValue()->shouldReturn(42); }
/** * @param \Prophecy\Prophecy\MethodProphecy $method1 * @param \Prophecy\Prophecy\MethodProphecy $method2 * @param \Prophecy\Prophecy\MethodProphecy $method3 * @param \Prophecy\Argument\ArgumentsWildcard $arguments1 * @param \Prophecy\Argument\ArgumentsWildcard $arguments2 * @param \Prophecy\Argument\ArgumentsWildcard $arguments3 * @param \Prophecy\Promise\PromiseInterface $promise */ function it_executes_promise_of_method_prophecy_that_matches_with_highest_score_to_makeCall( $objectProphecy, $method1, $method2, $method3, $arguments1, $arguments2, $arguments3, $promise ) { $method1->getMethodName()->willReturn('getName'); $method1->getArgumentsWildcard()->willReturn($arguments1); $arguments1->scoreArguments(array('world', 'everything'))->willReturn(50);
$method2->getMethodName()->willReturn('getName'); $method2->getArgumentsWildcard()->willReturn($arguments2); $method2->getPromise()->willReturn($promise); $arguments2->scoreArguments(array('world', 'everything'))->willReturn(300);
$method3->getMethodName()->willReturn('getName'); $method3->getArgumentsWildcard()->willReturn($arguments3); $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200);
$objectProphecy->getMethodProphecies()->willReturn(array( 'method1' => array($method1), 'method2' => array($method2, $method3) )); $objectProphecy->getMethodProphecies('getName')->willReturn(array( $method1, $method2, $method3 )); $objectProphecy->reveal()->willReturn(new \stdClass());
$promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method2) ->willReturn('second');
$this->makeCall($objectProphecy, 'getName', array('world', 'everything')) ->shouldReturn('second'); }
/** * @param \Prophecy\Prophecy\MethodProphecy $method * @param \Prophecy\Argument\ArgumentsWildcard $arguments */ function it_throws_exception_if_call_does_not_match_any_of_defined_method_prophecies( $objectProphecy, $method, $arguments ) { $method->getMethodName()->willReturn('getName'); $method->getArgumentsWildcard()->willReturn($arguments); $arguments->scoreArguments(array('world', 'everything'))->willReturn(false); $arguments->__toString()->willReturn('arg1, arg2');
$objectProphecy->getMethodProphecies()->willReturn(array('method1' => array($method))); $objectProphecy->getMethodProphecies('getName')->willReturn(array($method));
$this->shouldThrow('Prophecy\Exception\Call\UnexpectedCallException') ->duringMakeCall($objectProphecy, 'getName', array('world', 'everything')); }
/** * @param \Prophecy\Prophecy\MethodProphecy $method * @param \Prophecy\Argument\ArgumentsWildcard $arguments */ function it_returns_null_if_method_prophecy_that_matches_makeCall_arguments_has_no_promise( $objectProphecy, $method, $arguments ) { $method->getMethodName()->willReturn('getName'); $method->getArgumentsWildcard()->willReturn($arguments); $method->getPromise()->willReturn(null); $arguments->scoreArguments(array('world', 'everything'))->willReturn(100);
$objectProphecy->getMethodProphecies()->willReturn(array($method)); $objectProphecy->getMethodProphecies('getName')->willReturn(array($method));
$this->makeCall($objectProphecy, 'getName', array('world', 'everything')) ->shouldReturn(null); }
/** * @param \Prophecy\Argument\ArgumentsWildcard $wildcard */ function it_finds_recorded_calls_by_a_method_name_and_arguments_wildcard( $objectProphecy, $wildcard ) { $objectProphecy->getMethodProphecies()->willReturn(array());
$this->makeCall($objectProphecy, 'getName', array('world')); $this->makeCall($objectProphecy, 'getName', array('everything')); $this->makeCall($objectProphecy, 'setName', array(42));
$wildcard->scoreArguments(array('world'))->willReturn(false); $wildcard->scoreArguments(array('everything'))->willReturn(10);
$calls = $this->findCalls('getName', $wildcard);
$calls->shouldHaveCount(1); $calls[0]->getMethodName()->shouldReturn('getName'); $calls[0]->getArguments()->shouldReturn(array('everything')); } }
|