Nelmio\Alice\Generator\Resolver\Value\Chainable\UnresolvedFixtureReferenceIdResolverTest::testPassesTheObjectGeneratorAwarenessPropertyToItsDecoratedResolver PHP Метод

testPassesTheObjectGeneratorAwarenessPropertyToItsDecoratedResolver() публичный Метод

    public function testPassesTheObjectGeneratorAwarenessPropertyToItsDecoratedResolver()
    {
        $generator = new FakeObjectGenerator();
        $resolver = new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver());
        $newResolver = $resolver->withObjectGenerator($generator);
        $this->assertEquals($newResolver, $resolver);
        $this->assertNotSame($newResolver, $resolver);
        $resolver = new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver(), new FakeValueResolver());
        $newResolver = $resolver->withObjectGenerator($generator);
        $this->assertEquals($newResolver, $resolver);
        $this->assertNotSame($newResolver, $resolver);
        $decoratedResolverProphecy = $this->prophesize(ChainableValueResolverInterface::class);
        $decoratedResolverProphecy->willImplement(ObjectGeneratorAwareInterface::class);
        $decoratedResolverProphecy->withObjectGenerator($generator)->willReturn($newDecoratedResolver = new FakeChainableValueResolver());
        /** @var ChainableValueResolverInterface $decoratedResolver */
        $decoratedResolver = $decoratedResolverProphecy->reveal();
        $resolver = new UnresolvedFixtureReferenceIdResolver($decoratedResolver);
        $newResolver = $resolver->withObjectGenerator($generator);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($decoratedResolver), $resolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($newDecoratedResolver), $newResolver);
        $resolver = new UnresolvedFixtureReferenceIdResolver($decoratedResolver, new FakeValueResolver());
        $newResolver = $resolver->withObjectGenerator($generator);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($decoratedResolver, new FakeValueResolver()), $resolver);
        $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($newDecoratedResolver, new FakeValueResolver()), $newResolver);
        $decoratedResolverProphecy->withObjectGenerator(Argument::any())->shouldHaveBeenCalledTimes(2);
    }