/** * Resolves a given fixture. The resolution of a fixture may result in the resolution of several fixtures. * * @param TemplatingFixture|FixtureInterface $fixture Fixture to resolve * @param FixtureBag $unresolvedFixtures * @param TemplatingFixtureBag $resolvedFixtures * @param ResolvingContext $context * * @throws FixtureNotFoundException * * @return TemplatingFixtureBag */ public function resolve(TemplatingFixture $fixture, FixtureBag $unresolvedFixtures, TemplatingFixtureBag $resolvedFixtures, ResolvingContext $context) : TemplatingFixtureBag { $context->checkForCircularReference($fixture->getId()); if (false === $fixture->extendsFixtures()) { return $resolvedFixtures->with($fixture); } /** * @var FixtureBag $extendedFixtures * @var TemplatingFixtureBag $resolvedFixtures */ list($extendedFixtures, $resolvedFixtures) = $this->resolveExtendedFixtures($fixture, $fixture->getExtendedFixturesReferences(), $unresolvedFixtures, $resolvedFixtures, $context); $fixture = $this->getExtendedFixture($fixture, $extendedFixtures); return $resolvedFixtures->with($fixture); }