mirror of
https://github.com/YunoHost-Apps/hubzilla_ynh.git
synced 2024-09-03 19:26:21 +02:00
114 lines
3.5 KiB
PHP
114 lines
3.5 KiB
PHP
<?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());
|
|
}
|
|
}
|