Nelmio\Alice\FixtureBuilder\Denormalizer\Fixture\SimpleFixtureBagDenormalizerTest::testDenormalizesASetOfDataIntoAFixtureBag PHP Method

testDenormalizesASetOfDataIntoAFixtureBag() public method

    public function testDenormalizesASetOfDataIntoAFixtureBag()
    {
        $fixture1Prophecy = $this->prophesize(FixtureInterface::class);
        $fixture1Prophecy->getId()->willReturn('user_alice');
        /** @var FixtureInterface $fixture1 */
        $fixture1 = $fixture1Prophecy->reveal();
        $fixture2Prophecy = $this->prophesize(FixtureInterface::class);
        $fixture2Prophecy->getId()->willReturn('user_bob');
        /** @var FixtureInterface $fixture2 */
        $fixture2 = $fixture2Prophecy->reveal();
        $fixture3Prophecy = $this->prophesize(FixtureInterface::class);
        $fixture3Prophecy->getId()->willReturn('owern1');
        /** @var FixtureInterface $fixture3 */
        $fixture3 = $fixture3Prophecy->reveal();
        $data = ['Nelmio\\Entity\\User (dummy_flag)' => ['user_alice' => ['username' => 'alice'], 'user_bob' => ['username' => 'bob']], 'Nelmio\\Entity\\Owner' => ['owner1' => []]];
        $flagParserProphecy = $this->prophesize(FlagParserInterface::class);
        $userFlags = (new FlagBag('Nelmio\\Alice\\Entity\\User'))->withFlag(new ElementFlag('dummy_flag'));
        $flagParserProphecy->parse('Nelmio\\Entity\\User (dummy_flag)')->willReturn($userFlags);
        $ownerFlags = new FlagBag('Nelmio\\Entity\\Owner');
        $flagParserProphecy->parse('Nelmio\\Entity\\Owner')->willReturn(new FlagBag('Nelmio\\Entity\\Owner'));
        /** @var FlagParserInterface $flagParser */
        $flagParser = $flagParserProphecy->reveal();
        $fixtureDenormalizerProphecy = $this->prophesize(FixtureDenormalizerInterface::class);
        $newFixtureBag = new FixtureBag();
        $bag1 = $newFixtureBag->with($fixture1);
        $fixtureDenormalizerProphecy->denormalize(new FixtureBag(), 'Nelmio\\Alice\\Entity\\User', 'user_alice', ['username' => 'alice'], $userFlags)->willReturn($bag1);
        $bag2 = $bag1->with($fixture2);
        $fixtureDenormalizerProphecy->denormalize($bag1, 'Nelmio\\Alice\\Entity\\User', 'user_bob', ['username' => 'bob'], $userFlags)->willReturn($bag2);
        $bag3 = $bag2->with($fixture3);
        $fixtureDenormalizerProphecy->denormalize($bag2, 'Nelmio\\Entity\\Owner', 'owner1', [], $ownerFlags)->willReturn($bag3);
        /** @var FixtureDenormalizerInterface $fixtureDenormalizer */
        $fixtureDenormalizer = $fixtureDenormalizerProphecy->reveal();
        $denormalizer = new SimpleFixtureBagDenormalizer($fixtureDenormalizer, $flagParser);
        $actual = $denormalizer->denormalize($data);
        $this->assertSame($bag3, $actual);
        $flagParserProphecy->parse(Argument::any())->shouldHaveBeenCalledTimes(2);
        $fixtureDenormalizerProphecy->denormalize(Argument::cetera())->shouldHaveBeenCalledTimes(3);
    }