diff options
author | Stefan Parviainen <saparvia@caterva.eu> | 2014-12-30 19:57:12 +0100 |
---|---|---|
committer | Stefan Parviainen <saparvia@caterva.eu> | 2014-12-30 20:29:31 +0100 |
commit | 9cab8ae58a29ecf7387e6865aa170715caeabf04 (patch) | |
tree | 97c4791763ecb7c877c13b562a0ad3b80857b9d7 /library/intl/tests/Country | |
parent | 8e034a3b6b67a9aaa20fe9db671350e198fe7c42 (diff) | |
download | volse-hubzilla-9cab8ae58a29ecf7387e6865aa170715caeabf04.tar.gz volse-hubzilla-9cab8ae58a29ecf7387e6865aa170715caeabf04.tar.bz2 volse-hubzilla-9cab8ae58a29ecf7387e6865aa170715caeabf04.zip |
Language names via intl library. Fixes #773
Diffstat (limited to 'library/intl/tests/Country')
-rw-r--r-- | library/intl/tests/Country/CountryRepositoryTest.php | 114 | ||||
-rw-r--r-- | library/intl/tests/Country/CountryTest.php | 83 |
2 files changed, 197 insertions, 0 deletions
diff --git a/library/intl/tests/Country/CountryRepositoryTest.php b/library/intl/tests/Country/CountryRepositoryTest.php new file mode 100644 index 000000000..23e1509d8 --- /dev/null +++ b/library/intl/tests/Country/CountryRepositoryTest.php @@ -0,0 +1,114 @@ +<?php + +namespace CommerceGuys\Intl\Tests\Country; + +use CommerceGuys\Intl\Country\CountryRepository; +use org\bovigo\vfs\vfsStream; + +/** + * @coversDefaultClass \CommerceGuys\Intl\Country\CountryRepository + */ +class CountryRepositoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * Base country definitions. + * + * @var array + */ + protected $baseDefinitions = array( + 'FR' => array( + 'code' => 'FR', + 'three_letter_code' => 'FRA', + 'numeric_code' => '250', + 'telephone_code' => '33', + ), + 'US' => array( + 'code' => 'US', + 'three_letter_code' => 'USA', + 'numeric_code' => '840', + 'telephone_code' => '1', + ), + ); + + /** + * English country definitions. + * + * @var array + */ + protected $englishDefinitions = array( + 'FR' => array( + 'name' => 'France', + ), + 'US' => array( + 'name' => 'United States', + ), + ); + + /** + * @covers ::__construct + */ + public function testConstructor() + { + // Mock the existence of JSON definitions on the filesystem. + $root = vfsStream::setup('resources'); + vfsStream::newFile('country/base.json')->at($root)->setContent(json_encode($this->baseDefinitions)); + vfsStream::newFile('country/en.json')->at($root)->setContent(json_encode($this->englishDefinitions)); + + // Instantiate the country repository and confirm that the definition path + // was properly set. + $countryRepository = new CountryRepository('vfs://resources/country/'); + $definitionPath = $this->getObjectAttribute($countryRepository, 'definitionPath'); + $this->assertEquals('vfs://resources/country/', $definitionPath); + + return $countryRepository; + } + + /** + * @covers ::get + * @covers ::loadDefinitions + * @covers ::createCountryFromDefinition + * @uses \CommerceGuys\Intl\Country\Country + * @uses \CommerceGuys\Intl\LocaleResolverTrait + * @depends testConstructor + */ + public function testGet($countryRepository) + { + $country = $countryRepository->get('FR'); + $this->assertInstanceOf('CommerceGuys\\Intl\\Country\\Country', $country); + $this->assertEquals('FR', $country->getCountryCode()); + $this->assertEquals('France', $country->getName()); + $this->assertEquals('FRA', $country->getThreeLetterCode()); + $this->assertEquals('250', $country->getNumericCode()); + $this->assertEquals('33', $country->getTelephoneCode()); + $this->assertEquals('en', $country->getLocale()); + } + + /** + * @covers ::get + * @covers ::loadDefinitions + * @uses \CommerceGuys\Intl\LocaleResolverTrait + * @expectedException \CommerceGuys\Intl\Exception\UnknownCountryException + * @depends testConstructor + */ + public function testGetInvalidCountry($countryRepository) + { + $countryRepository->get('DE'); + } + + /** + * @covers ::getAll + * @covers ::loadDefinitions + * @covers ::createCountryFromDefinition + * @uses \CommerceGuys\Intl\Country\Country + * @uses \CommerceGuys\Intl\LocaleResolverTrait + * @depends testConstructor + */ + public function testGetAll($countryRepository) + { + $countries = $countryRepository->getAll(); + $this->assertArrayHasKey('FR', $countries); + $this->assertArrayHasKey('US', $countries); + $this->assertEquals('FR', $countries['FR']->getCountryCode()); + $this->assertEquals('US', $countries['US']->getCountryCode()); + } +} diff --git a/library/intl/tests/Country/CountryTest.php b/library/intl/tests/Country/CountryTest.php new file mode 100644 index 000000000..a0b2dc116 --- /dev/null +++ b/library/intl/tests/Country/CountryTest.php @@ -0,0 +1,83 @@ +<?php + +namespace CommerceGuys\Intl\Tests\Country; + +use CommerceGuys\Intl\Country\Country; + +/** + * @coversDefaultClass \CommerceGuys\Intl\Country\Country + */ +class CountryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var Country + */ + protected $country; + + public function setUp() + { + $this->country = new Country(); + } + + /** + * @covers ::getCountryCode + * @covers ::setCountryCode + * @covers ::__toString + */ + public function testCountryCode() + { + $this->country->setCountryCode('US'); + $this->assertEquals('US', $this->country->getCountryCode()); + $this->assertEquals('US', (string) $this->country); + } + + /** + * @covers ::getName + * @covers ::setName + */ + public function testName() + { + $this->country->setName('United States'); + $this->assertEquals('United States', $this->country->getName()); + } + + /** + * @covers ::getThreeLetterCode + * @covers ::setThreeLetterCode + */ + public function testThreeLetterCode() + { + $this->country->setThreeLetterCode('USA'); + $this->assertEquals('USA', $this->country->getThreeLetterCode()); + } + + /** + * @covers ::getNumericCode + * @covers ::setNumericCode + */ + public function testNumericCode() + { + $this->country->setNumericCode('840'); + $this->assertEquals('840', $this->country->getNumericCode()); + } + + /** + * @covers ::getTelephoneCode + * @covers ::setTelephoneCode + */ + public function testTelephoneCode() + { + $this->country->setTelephoneCode('1'); + $this->assertEquals('1', $this->country->getTelephoneCode()); + } + + /** + * @covers ::getLocale + * @covers ::setLocale + */ + public function testLocale() + { + $this->country->setLocale('en'); + $this->assertEquals('en', $this->country->getLocale()); + } +} |