Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function getThemeHierarchy(ThemeInterface $theme)
 {
     $parents = [];
     $parentsNames = $theme->getParentsNames();
     foreach ($parentsNames as $parentName) {
         $parents = array_merge($parents, $this->getThemeHierarchy($this->getTheme($parentName)));
     }
     return array_merge([$theme], $parents);
 }
 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]);
 }
Exemplo n.º 3
0
 function it_returns_theme_list_in_hierarchized_order(ThemeRepositoryInterface $themeRepository, ThemeInterface $firstTheme, ThemeInterface $secondTheme)
 {
     $firstTheme->getName()->willReturn('foo/bar1');
     $firstTheme->getParentsNames()->willReturn(['foo/bar2']);
     $secondTheme->getName()->willReturn('foo/bar2');
     $secondTheme->getParentsNames()->willReturn([]);
     $themeRepository->findOneByName('foo/bar1')->willReturn($firstTheme);
     $themeRepository->findOneByName('foo/bar2')->willReturn($secondTheme);
     $this->getThemeHierarchy($firstTheme)->shouldReturn([$firstTheme, $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;
 }