‪TYPO3CMS  ‪main
CountrySelectViewHelperTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
25 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
26 use TYPO3Fluid\Fluid\View\TemplateView;
27 
28 final class ‪CountrySelectViewHelperTest extends FunctionalTestCase
29 {
30  protected bool ‪$initializeDatabase = false;
31 
32  #[Test]
34  {
35  $context = $this->get(RenderingContextFactory::class)->create();
36  $context->getTemplatePaths()->setTemplateSource('<f:form.countrySelect name="myCountry" value="KW" prependOptionLabel="Please choose" />');
37  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
38  $context->setRequest(new ‪Request($serverRequest));
39  $result = (new TemplateView($context))->render();
40  self::assertStringContainsString('<select name="myCountry"><option value="">Please choose</option>', $result);
41  self::assertStringContainsString('<option value="ES">Spain</option>', $result);
42  }
43 
44  #[Test]
46  {
47  $context = $this->get(RenderingContextFactory::class)->create();
48  $context->getTemplatePaths()->setTemplateSource('<f:form.countrySelect name="myCountry" value="KW" alternativeLanguage="fr" prependOptionLabel="Please choose" />');
49  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
50  $context->setRequest(new ‪Request($serverRequest));
51  $result = (new TemplateView($context))->render();
52  self::assertStringContainsString('<option value="KW" selected="selected">Koweït</option>', $result);
53  }
54 
55  #[Test]
56  public function ‪renderCorrectlyUsesLocalizedNames(): void
57  {
58  $context = $this->get(RenderingContextFactory::class)->create();
59  $context->getTemplatePaths()->setTemplateSource('<f:form.countrySelect name="myCountry" value="KW" alternativeLanguage="fr" prependOptionLabel="Please choose" />');
60  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
61  $context->setRequest(new ‪Request($serverRequest));
62  $result = (new TemplateView($context))->render();
63  self::assertStringContainsString('<option value="ES">Espagne</option>', $result);
64  }
65 
66  #[Test]
68  {
69  $context = $this->get(RenderingContextFactory::class)->create();
70  $context->getTemplatePaths()->setTemplateSource('<f:form.countrySelect required="true" prioritizedCountries="{0: \'GB\', 1: \'US\', 2: \'CA\'}" name="myCountry" value="US" alternativeLanguage="en" prependOptionLabel="Please choose" />');
71  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
72  $context->setRequest(new ‪Request($serverRequest));
73  $result = (new TemplateView($context))->render();
74  self::assertStringContainsString('<select required="required" name="myCountry"><option value="">Please choose</option>
75 <option value="GB">United Kingdom</option><option value="US" selected="selected">United States</option><option value="CA">Canada</option><option value="AD">Andorra</option>', $result);
76  }
77 
78  #[Test]
79  public function ‪rendersSortsByOptionLabel(): void
80  {
81  $context = $this->get(RenderingContextFactory::class)->create();
82  $context->getTemplatePaths()->setTemplateSource('<f:form.countrySelect sortByOptionLabel="true" name="myCountry" />');
83  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
84  $context->setRequest(new ‪Request($serverRequest));
85  $result = (new TemplateView($context))->render();
86  self::assertStringContainsString('<option value="DE">Germany</option><option value="GH">Ghana</option>', $result);
87  }
88 
89  #[Test]
91  {
92  $context = $this->get(RenderingContextFactory::class)->create();
93  $context->getTemplatePaths()->setTemplateSource('<f:form.countrySelect optionLabelField="localizedOfficialName" alternativeLanguage="de" sortByOptionLabel="true" name="myCountry" />');
94  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
95  $context->setRequest(new ‪Request($serverRequest));
96  $result = (new TemplateView($context))->render();
97  self::assertStringContainsString('<option value="BD">Volksrepublik Bangladesh</option><option value="CN">Volksrepublik China</option>', $result);
98  }
99 
100  #[Test]
101  public function ‪renderExcludesCountries(): void
102  {
103  $context = $this->get(RenderingContextFactory::class)->create();
104  $context->getTemplatePaths()->setTemplateSource('<f:form.countrySelect excludeCountries="{0: \'RU\', 1: \'CN\'}" optionLabelField="localizedOfficialName" alternativeLanguage="de" sortByOptionLabel="true" name="myCountry" />');
105  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
106  $context->setRequest(new ‪Request($serverRequest));
107  $result = (new TemplateView($context))->render();
108  self::assertStringNotContainsString('<option value="CN">Volksrepublik China</option>', $result);
109  self::assertStringNotContainsString('<option value="RU">', $result);
110  }
111  #[Test]
112  public function ‪renderOnlyListsWantedCountries(): void
113  {
114  $context = $this->get(RenderingContextFactory::class)->create();
115  $context->getTemplatePaths()->setTemplateSource('<f:form.countrySelect onlyCountries="{0: \'CH\', 1: \'AT\'}" optionLabelField="localizedOfficialName" alternativeLanguage="de" sortByOptionLabel="true" name="myCountry" />');
116  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
117  $context->setRequest(new ‪Request($serverRequest));
118  $result = (new TemplateView($context))->render();
119  self::assertEquals('<select name="myCountry"><option value="AT">Republik Österreich</option><option value="CH">Schweizerische Eidgenossenschaft</option></select>', $result);
120  }
121 }
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\renderExcludesCountries
‪renderExcludesCountries()
Definition: CountrySelectViewHelperTest.php:101
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest
Definition: CountrySelectViewHelperTest.php:29
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\renderShowsPrioritizedCountriesFirst
‪renderShowsPrioritizedCountriesFirst()
Definition: CountrySelectViewHelperTest.php:67
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\renderCorrectlySetsTagNameAndDefaultAttributes
‪renderCorrectlySetsTagNameAndDefaultAttributes()
Definition: CountrySelectViewHelperTest.php:33
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form
Definition: ButtonViewHelperTest.php:18
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\rendersSortsByOptionLabelWithLocalizedOfficialName
‪rendersSortsByOptionLabelWithLocalizedOfficialName()
Definition: CountrySelectViewHelperTest.php:90
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\renderCorrectlyUsesLocalizedNames
‪renderCorrectlyUsesLocalizedNames()
Definition: CountrySelectViewHelperTest.php:56
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\renderOnlyListsWantedCountries
‪renderOnlyListsWantedCountries()
Definition: CountrySelectViewHelperTest.php:112
‪TYPO3\CMS\Fluid\Core\Rendering\RenderingContextFactory
Definition: RenderingContextFactory.php:51
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\renderCorrectlyPreselectsAValidValue
‪renderCorrectlyPreselectsAValidValue()
Definition: CountrySelectViewHelperTest.php:45
‪TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters
Definition: ExtbaseRequestParameters.php:35
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:35
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\rendersSortsByOptionLabel
‪rendersSortsByOptionLabel()
Definition: CountrySelectViewHelperTest.php:79
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Form\CountrySelectViewHelperTest\$initializeDatabase
‪bool $initializeDatabase
Definition: CountrySelectViewHelperTest.php:30