Nelmio\Alice\Generator\Resolver\Value\Chainable\UnresolvedFixtureReferenceIdResolverTest::testPassesTheValeResolverAwarenessPropertyToItsDecoratedResolver PHP Method

testPassesTheValeResolverAwarenessPropertyToItsDecoratedResolver() public method

    public function testPassesTheValeResolverAwarenessPropertyToItsDecoratedResolver()
    {
        $valueResolver = new FakeValueResolver();
        $injectedValueResolver = new FakeValueResolver();
        $injectedValueResolver->foo = 'bar';
        $resolver = new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver());
        $newResolver = $resolver->withValueResolver($valueResolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver()), $resolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver(), $valueResolver), $newResolver);
        $resolver = new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver(), $injectedValueResolver);
        $newResolver = $resolver->withValueResolver($valueResolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver(), $injectedValueResolver), $resolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver(), $valueResolver), $newResolver);
        $decoratedResolverProphecy = $this->prophesize(ChainableValueResolverInterface::class);
        $decoratedResolverProphecy->willImplement(ValueResolverAwareInterface::class);
        $decoratedResolverProphecy->withValueResolver($valueResolver)->willReturn($newDecoratedResolver = new FakeChainableValueResolver());
        /** @var ChainableValueResolverInterface $decoratedResolver */
        $decoratedResolver = $decoratedResolverProphecy->reveal();
        $resolver = new UnresolvedFixtureReferenceIdResolver($decoratedResolver);
        $newResolver = $resolver->withValueResolver($valueResolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($decoratedResolver), $resolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($newDecoratedResolver, $valueResolver), $newResolver);
        $resolver = new UnresolvedFixtureReferenceIdResolver($decoratedResolver, $injectedValueResolver);
        $newResolver = $resolver->withValueResolver($valueResolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($decoratedResolver, $injectedValueResolver), $resolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($newDecoratedResolver, $valueResolver), $newResolver);
        $decoratedResolverProphecy->withValueResolver(Argument::any())->shouldHaveBeenCalledTimes(2);
    }