Nelmio\Alice\Generator\Resolver\Parameter\ParameterResolverRegistryTest::testIteratesOverEveryResolverAndUsesTheFirstValidOne PHP Method

testIteratesOverEveryResolverAndUsesTheFirstValidOne() public method

    public function testIteratesOverEveryResolverAndUsesTheFirstValidOne()
    {
        $parameter = new Parameter('foo', null);
        $expected = new ParameterBag(['foo' => 'bar']);
        $resolver1Prophecy = $this->prophesize(ChainableParameterResolverInterface::class);
        $resolver1Prophecy->canResolve($parameter)->willReturn(false);
        /* @var ChainableParameterResolverInterface $resolver1 */
        $resolver1 = $resolver1Prophecy->reveal();
        $resolver2Prophecy = $this->prophesize(ChainableParameterResolverInterface::class);
        $resolver2Prophecy->canResolve($parameter)->willReturn(true);
        $resolver2Prophecy->resolve(Argument::cetera())->willReturn($expected);
        /* @var ChainableParameterResolverInterface $resolver2 */
        $resolver2 = $resolver2Prophecy->reveal();
        $resolver3Prophecy = $this->prophesize(ChainableParameterResolverInterface::class);
        $resolver3Prophecy->canResolve(Argument::any())->shouldNotBeCalled();
        /* @var ChainableParameterResolverInterface $resolver */
        $resolver = $resolver3Prophecy->reveal();
        $registry = new ParameterResolverRegistry([$resolver1, $resolver2, $resolver]);
        $actual = $registry->resolve($parameter, new ParameterBag(), new ParameterBag());
        $this->assertSame($expected, $actual);
        $resolver1Prophecy->canResolve(Argument::any())->shouldHaveBeenCalledTimes(1);
        $resolver2Prophecy->canResolve(Argument::any())->shouldHaveBeenCalledTimes(1);
        $resolver2Prophecy->resolve(Argument::cetera())->shouldHaveBeenCalledTimes(1);
    }