55use Ladybug \Theme \ThemeResolver ;
66use Ladybug \Theme \ThemeInterface ;
77use Ladybug \Format \HtmlFormat ;
8+ use Ladybug \Format \ConsoleFormat ;
9+ use Ladybug \Format \XmlFormat ;
810use \Mockery as m ;
911
1012class ThemeResolverTest extends \PHPUnit_Framework_TestCase
@@ -13,14 +15,22 @@ class ThemeResolverTest extends \PHPUnit_Framework_TestCase
1315 /** @var ThemeResolver */
1416 protected $ resolver ;
1517
16- protected $ theme ;
18+ protected $ baseTheme ;
19+ protected $ htmlTheme ;
1720
1821 public function setUp ()
1922 {
2023 $ this ->resolver = new ThemeResolver ();
2124
22- $ this ->theme = m::mock ('Ladybug\Theme\ThemeInterface ' );
23- $ this ->theme ->shouldReceive ('getFormats ' )->andReturn (array (HtmlFormat::FORMAT_NAME ));
25+ $ this ->baseTheme = m::mock ('Ladybug\Theme\ThemeInterface ' );
26+ $ this ->baseTheme ->shouldReceive ('getFormats ' )->andReturn (array (
27+ HtmlFormat::FORMAT_NAME ,
28+ ConsoleFormat::FORMAT_NAME
29+ ));
30+ $ this ->baseTheme ->shouldReceive ('getParent ' )->andReturn (null );
31+
32+ $ this ->htmlTheme = m::mock ('Ladybug\Theme\HtmlThemeInterface ' );
33+ $ this ->htmlTheme ->shouldReceive ('getFormats ' )->andReturn (array (HtmlFormat::FORMAT_NAME ));
2434 }
2535
2636 public function tearDown ()
@@ -30,26 +40,53 @@ public function tearDown()
3040
3141 public function testAddTheme ()
3242 {
33- $ result = $ this ->resolver ->addTheme ($ this ->theme , 'theme_test ' );
43+ $ result = $ this ->resolver ->addTheme ($ this ->htmlTheme , 'theme_test ' );
3444
3545 $ this ->assertTrue ($ result );
3646 $ this ->assertCount (1 , $ this ->resolver );
3747 }
3848
3949 public function testGetRegisteredTheme ()
4050 {
41- $ this ->resolver ->addTheme ($ this ->theme , 'theme_test ' );
51+ $ this ->resolver ->addTheme ($ this ->htmlTheme , 'theme_test ' );
4252
4353 $ this ->assertInstanceOf ('Ladybug\Theme\ThemeInterface ' , $ this ->resolver ->getTheme ('test ' , 'html ' ));
4454 }
4555
4656 public function testGetDefaultThemeWhenDoesNotExist ()
4757 {
48- $ this ->resolver ->addTheme ($ this ->theme , 'theme_test ' );
49- $ this ->resolver ->addTheme ($ this ->theme , 'theme_test_default ' , true );
58+ $ this ->resolver ->addTheme ($ this ->htmlTheme , 'theme_test ' );
59+ $ this ->resolver ->addTheme ($ this ->htmlTheme , 'theme_test_default ' , true );
5060
5161 $ this ->assertInstanceOf ('Ladybug\Theme\ThemeInterface ' , $ this ->resolver ->getTheme ('notfound ' , HtmlFormat::FORMAT_NAME ));
5262 }
5363
64+ public function testGetFalseWhenDoesNotExistAndNoDefaultTheme ()
65+ {
66+ $ this ->resolver ->addTheme ($ this ->htmlTheme , 'theme_test ' );
67+
68+ $ this ->assertFalse ($ this ->resolver ->getTheme ('notfound ' , HtmlFormat::FORMAT_NAME ));
69+ }
70+
71+ public function testGetParentThemeWhenSelectedNotAcceptFormat ()
72+ {
73+ $ this ->htmlTheme ->shouldReceive ('getParent ' )->andReturn ('base ' );
74+
75+ $ this ->resolver ->addTheme ($ this ->baseTheme , 'theme_base ' );
76+ $ this ->resolver ->addTheme ($ this ->htmlTheme , 'theme_test ' );
77+
78+ $ this ->assertInstanceOf ('Ladybug\Theme\ThemeInterface ' , $ this ->resolver ->getTheme ('test ' , ConsoleFormat::FORMAT_NAME ));
79+ }
80+
81+ public function testGetFalseWhenSelectedNotAcceptFormat ()
82+ {
83+ $ this ->htmlTheme ->shouldReceive ('getParent ' )->andReturn ('base ' );
84+
85+ $ this ->resolver ->addTheme ($ this ->baseTheme , 'theme_base ' );
86+ $ this ->resolver ->addTheme ($ this ->htmlTheme , 'theme_test ' );
87+
88+ $ this ->assertFalse ($ this ->resolver ->getTheme ('test ' , XmlFormat::FORMAT_NAME ));
89+ }
90+
5491
5592}
0 commit comments