@@ -112,4 +112,92 @@ public function testTemplateNotFound() {
112112
113113 $ renderer ->render ($ response , "adfadftestTemplate.php " , []);
114114 }
115+
116+ public function testLayout () {
117+ $ renderer = new \Slim \Views \PhpRenderer ("tests/ " , ["title " => "My App " ]);
118+ $ renderer ->setLayout ("testLayout.php " );
119+
120+ $ headers = new Headers ();
121+ $ body = new Body (fopen ('php://temp ' , 'r+ ' ));
122+ $ response = new Response (200 , $ headers , $ body );
123+
124+ $ newResponse = $ renderer ->render ($ response , "testTemplate.php " , array ("title " => "Hello - My App " , "hello " => "Hi " ));
125+
126+ $ newResponse ->getBody ()->rewind ();
127+
128+ $ this ->assertEquals ("<html><head><title>Hello - My App</title></head><body>Hi</body></html> " , $ newResponse ->getBody ()->getContents ());
129+ }
130+
131+ public function testLayoutConstructor () {
132+ $ renderer = new \Slim \Views \PhpRenderer ("tests " , ["title " => "My App " ], "testLayout.php " );
133+
134+ $ headers = new Headers ();
135+ $ body = new Body (fopen ('php://temp ' , 'r+ ' ));
136+ $ response = new Response (200 , $ headers , $ body );
137+
138+ $ newResponse = $ renderer ->render ($ response , "testTemplate.php " , array ("title " => "Hello - My App " , "hello " => "Hi " ));
139+
140+ $ newResponse ->getBody ()->rewind ();
141+
142+ $ this ->assertEquals ("<html><head><title>Hello - My App</title></head><body>Hi</body></html> " , $ newResponse ->getBody ()->getContents ());
143+ }
144+
145+ public function testExceptionInLayout () {
146+ $ renderer = new \Slim \Views \PhpRenderer ("tests/ " );
147+ $ renderer ->setLayout ("testException.php " );
148+
149+ $ headers = new Headers ();
150+ $ body = new Body (fopen ('php://temp ' , 'r+ ' ));
151+ $ response = new Response (200 , $ headers , $ body );
152+
153+ try {
154+ $ newResponse = $ renderer ->render ($ response , "testTemplate.php " );
155+ } catch (Throwable $ t ) { // PHP 7+
156+ // Simulates an error template
157+ $ renderer ->setLayout (null );
158+ $ newResponse = $ renderer ->render ($ response , "testTemplate.php " , [
159+ "hello " => "Hi "
160+ ]);
161+ } catch (Exception $ e ) { // PHP < 7
162+ // Simulates an error template
163+ $ renderer ->setLayout (null );
164+ $ newResponse = $ renderer ->render ($ response , "testTemplate.php " , [
165+ "hello " => "Hi "
166+ ]);
167+ }
168+
169+ $ newResponse ->getBody ()->rewind ();
170+
171+ $ this ->assertEquals ("Hi " , $ newResponse ->getBody ()->getContents ());
172+ }
173+
174+ /**
175+ * @expectedException RuntimeException
176+ */
177+ public function testLayoutNotFound () {
178+
179+ $ renderer = new \Slim \Views \PhpRenderer ("tests/ " );
180+ $ renderer ->setLayout ("adfadftestLayout.php " );
181+
182+ $ headers = new Headers ();
183+ $ body = new Body (fopen ('php://temp ' , 'r+ ' ));
184+ $ response = new Response (200 , $ headers , $ body );
185+
186+ $ renderer ->render ($ response , "testTemplate.php " , []);
187+ }
188+
189+ public function testContentDataKeyShouldBeIgnored () {
190+ $ renderer = new \Slim \Views \PhpRenderer ("tests/ " );
191+ $ renderer ->setLayout ("testLayout.php " );
192+
193+ $ headers = new Headers ();
194+ $ body = new Body (fopen ('php://temp ' , 'r+ ' ));
195+ $ response = new Response (200 , $ headers , $ body );
196+
197+ $ newResponse = $ renderer ->render ($ response , "testTemplate.php " , array ("title " => "Hello - My App " , "hello " => "Hi " , "content " => "Ho " ));
198+
199+ $ newResponse ->getBody ()->rewind ();
200+
201+ $ this ->assertEquals ("<html><head><title>Hello - My App</title></head><body>Hi</body></html> " , $ newResponse ->getBody ()->getContents ());
202+ }
115203}
0 commit comments