Nelmio\Alice\Generator\Resolver\Value\Chainable\FunctionCallArgumentResolverTest::testResolvesAllArgumentsValuesBeforePassingThemToTheDecoratedResolver PHP Method

testResolvesAllArgumentsValuesBeforePassingThemToTheDecoratedResolver() public method

    public function testResolvesAllArgumentsValuesBeforePassingThemToTheDecoratedResolver()
    {
        $value = new FunctionCallValue('foo', ['scalar', new FakeValue(), 'another scalar']);
        $fixture = new FakeFixture();
        $set = ResolvedFixtureSetFactory::create(new ParameterBag(['foo' => 'bar']));
        $scope = ['val' => 'scopie'];
        $context = new GenerationContext();
        $context->markIsResolvingFixture('foo');
        $argumentResolverProphecy = $this->prophesize(ValueResolverInterface::class);
        $argumentResolverProphecy->resolve(new FakeValue(), $fixture, $set, $scope, $context)->willReturn(new ResolvedValueWithFixtureSet($instance = new \stdClass(), $newSet = ResolvedFixtureSetFactory::create(new ParameterBag(['ping' => 'pong']))));
        /** @var ValueResolverInterface $argumentResolver */
        $argumentResolver = $argumentResolverProphecy->reveal();
        $decoratedResolverProphecy = $this->prophesize(ValueResolverInterface::class);
        $decoratedResolverProphecy->resolve(new FunctionCallValue('foo', ['scalar', $instance, 'another scalar']), $fixture, $newSet, $scope, $context)->willReturn($expected = new ResolvedValueWithFixtureSet('end', ResolvedFixtureSetFactory::create(new ParameterBag(['gnip' => 'gnop']))));
        /** @var ValueResolverInterface $decoratedResolver */
        $decoratedResolver = $decoratedResolverProphecy->reveal();
        $resolver = new FunctionCallArgumentResolver($decoratedResolver, $argumentResolver);
        $actual = $resolver->resolve($value, $fixture, $set, $scope, $context);
        $this->assertEquals($expected, $actual);
    }