function let(LoaderInterface $loader, Collection $resourcesToThemes, ThemeInterface $theme) { $theme->getLogicalName()->willReturn("sylius/sample-theme"); $resourcesToThemes->get(realpath($this->getThemeTranslationResourcePath()))->willReturn($theme); $resourcesToThemes->get(realpath($this->getVanillaTranslationResourcePath()))->willReturn(null); $this->beConstructedWith($loader, $resourcesToThemes); }
function it_resolves_themes(ThemeRepositoryInterface $themeRepository, ThemeInterface $firstTheme, ThemeInterface $secondTheme) { $firstTheme->getLogicalName()->willReturn("foo/bar1"); $firstTheme->getParentsNames()->willReturn(["foo/bar2"]); $secondTheme->getLogicalName()->willReturn("foo/bar2"); $secondTheme->getParentsNames()->willReturn([]); $themeRepository->findByLogicalName("foo/bar1")->willReturn($firstTheme); $themeRepository->findByLogicalName("foo/bar2")->willReturn($secondTheme); $this->getDependencies($firstTheme)->shouldReturn([$secondTheme]); }
function it_adds_theme_parents_to_context_while_setting_theme(ThemeDependenciesResolverInterface $themeDependenciesResolver, ThemeInterface $firstTheme, ThemeInterface $secondTheme) { $firstTheme->getLogicalName()->willReturn("foo/bar1"); $firstTheme->getParentsNames()->willReturn(["foo/bar2"]); $secondTheme->getLogicalName()->willReturn("foo/bar2"); $secondTheme->getParentsNames()->willReturn([]); $themeDependenciesResolver->getDependencies($firstTheme)->shouldBeCalled()->willReturn([$secondTheme]); $this->setTheme($firstTheme); $this->getThemes()->shouldHaveCount(2); $this->getThemes()->shouldReturn([$firstTheme, $secondTheme]); }
/** * {@inheritdoc} */ public function getDependencies(ThemeInterface $theme) { $parents = []; $parentsNames = $theme->getParentsNames(); foreach ($parentsNames as $parentName) { $parent = $this->themeRepository->findByLogicalName($parentName); if (null === $parent) { throw new \InvalidArgumentException(sprintf('Theme "%s" not found (required by theme "%s")!', $parentName, $theme->getLogicalName()), 0); } $parents = array_merge($parents, [$parent], $this->getDependencies($parent)); } return $parents; }
function it_returns_null_if_theme_with_given_logical_name_is_not_found(ThemeInterface $theme) { $this->beConstructedWith([$theme]); $theme->getLogicalName()->willReturn("foo/bar"); $this->findByLogicalName("blah/blah")->shouldReturn(null); }
function it_returns_modified_path_if_its_referencing_bundle_asset(ThemeInterface $theme) { $theme->getLogicalName()->shouldBeCalled()->willReturn("sylius/test-theme"); $this->resolve('bundles/asset.min.js', $theme)->shouldReturn('bundles/_theme/sylius/test-theme/asset.min.js'); }
/** * @param TemplateReferenceInterface $template * @param ThemeInterface|null $theme * * @return string */ private function getCacheKey(TemplateReferenceInterface $template, ThemeInterface $theme = null) { $key = $template->getLogicalName(); if (null !== $theme) { $key .= '|' . $theme->getLogicalName(); } return $key; }
/** * {@inheritdoc} */ public function resolve($path, ThemeInterface $theme) { return str_replace('bundles/', 'bundles/_theme/' . $theme->getLogicalName() . '/', $path); }