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()); } }