33namespace Webfactory \ShortcodeBundle \Tests \Functional ;
44
55use Symfony \Bundle \FrameworkBundle \Test \WebTestCase ;
6+ use Symfony \Component \BrowserKit \Client ;
67use Symfony \Component \DomCrawler \Crawler ;
78
89/**
910 * Abstract template for common shortcode tests.
1011 */
1112abstract class ShortcodeTest extends WebTestCase
1213{
14+ /** @var Client */
15+ protected $ client ;
16+
1317 /**
1418 * @return string name of the shortcode to test.
1519 */
@@ -24,15 +28,30 @@ protected function setUp(): void
2428 'Albeit being a ' .__CLASS__ .', ' .\get_called_class ().' does not define a shortcode to test. '
2529 );
2630 }
31+
32+ static ::bootKernel ();
33+ $ this ->client = static ::createClient ();
2734 }
2835
29- protected function crawlRenderedExample (string $ customParameters = null ): Crawler
36+ /**
37+ * @param array|string|null $customParameters use of strings is deprecated, use array instead.
38+ * @return Crawler
39+ */
40+ protected function getRenderedExampleHtml (?array $ customParameters = null ): string
41+ {
42+ return $ this ->crawlRenderedExample ($ customParameters )->html ();
43+ }
44+
45+ /**
46+ * @param array|string|null $customParameters use of strings is deprecated, use array instead.
47+ * @return Crawler
48+ */
49+ protected function crawlRenderedExample (/*array*/ $ customParameters = null ): Crawler
3050 {
3151 $ urlWithRenderedExample = $ this ->getUrlWithRenderedExample ($ customParameters );
3252
33- $ client = static ::createClient ();
34- $ crawlerOnRenderedExamplePage = $ client ->request ('GET ' , $ urlWithRenderedExample );
35- $ this ->assertEquals (200 , $ client ->getResponse ()->getStatusCode ());
53+ $ crawlerOnRenderedExamplePage = $ this ->client ->request ('GET ' , $ urlWithRenderedExample );
54+ $ this ->assertEquals (200 , $ this ->client ->getResponse ()->getStatusCode ());
3655
3756 $ crawlerOnRenderedExample = $ crawlerOnRenderedExamplePage ->filter ('#rendered-example ' );
3857 if (0 === $ crawlerOnRenderedExample ->count ()) {
@@ -44,27 +63,52 @@ protected function crawlRenderedExample(string $customParameters = null): Crawle
4463 return $ crawlerOnRenderedExample ;
4564 }
4665
47- protected function assertHttpStatusCodeWhenCrawlingRenderedExample (int $ expectedStatusCode , string $ customParameters = null ): Crawler
48- {
66+ /**
67+ * @param int $expectedStatusCode
68+ * @param array|string|null $customParameters use of strings is deprecated, use array instead.
69+ * @return Crawler
70+ */
71+ protected function assertHttpStatusCodeWhenCrawlingRenderedExample (
72+ int $ expectedStatusCode ,
73+ /*array*/ $ customParameters = null
74+ ): Crawler {
4975 $ urlWithRenderedExample = $ this ->getUrlWithRenderedExample ($ customParameters );
5076
51- $ client = static ::createClient ();
52- $ crawlerOnRenderedExamplePage = $ client ->request ('GET ' , $ urlWithRenderedExample );
53- $ this ->assertEquals ($ expectedStatusCode , $ client ->getResponse ()->getStatusCode ());
77+ $ crawlerOnRenderedExamplePage = $ this ->client ->request ('GET ' , $ urlWithRenderedExample );
78+ $ this ->assertEquals ($ expectedStatusCode , $ this ->client ->getResponse ()->getStatusCode ());
5479 }
5580
56- protected function getUrlWithRenderedExample (string $ customParameters = null ): string
81+ /**
82+ * @param array|string|null $customParameters use of strings is deprecated, use array instead.
83+ * @return Crawler
84+ */
85+ private function getUrlWithRenderedExample (/*array*/ $ customParameters = null ): string
5786 {
58- static ::bootKernel ();
59-
6087 $ urlParameters = ['shortcode ' => $ this ->getShortcodeToTest ()];
61- if ($ customParameters ) {
62- $ urlParameters ['customParameters ' ] = $ customParameters ;
88+
89+ $ customParametersAsString = $ this ->getCustomParametersAsString ($ customParameters );
90+ if ($ customParametersAsString ) {
91+ $ urlParameters ['customParameters ' ] = $ customParametersAsString ;
92+ }
93+
94+ return static ::$ container ->get ('router ' )->generate ('webfactory.shortcode.guide-detail ' , $ urlParameters );
95+ }
96+
97+ private function getCustomParametersAsString ($ customParametersAsMixed ): ?string
98+ {
99+ if (is_string ($ customParametersAsMixed )) {
100+ return $ customParametersAsMixed ;
101+ }
102+
103+ if (is_array ($ customParametersAsMixed )) {
104+ $ customParametersAsString = '' ;
105+ foreach ($ customParametersAsMixed as $ name => $ value ) {
106+ $ customParametersAsString .= $ name .'= ' .$ value .' ' ;
107+ }
108+
109+ return $ customParametersAsString ;
63110 }
64111
65- return static ::$ kernel
66- ->getContainer ()
67- ->get ('router ' )
68- ->generate ('webfactory.shortcode.guide-detail ' , $ urlParameters );
112+ return null ;
69113 }
70114}
0 commit comments