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/Currency | |
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/Currency')
-rw-r--r-- | library/intl/tests/Currency/CurrencyRepositoryTest.php | 113 | ||||
-rw-r--r-- | library/intl/tests/Currency/CurrencyTest.php | 83 |
2 files changed, 196 insertions, 0 deletions
diff --git a/library/intl/tests/Currency/CurrencyRepositoryTest.php b/library/intl/tests/Currency/CurrencyRepositoryTest.php new file mode 100644 index 000000000..4270dc70f --- /dev/null +++ b/library/intl/tests/Currency/CurrencyRepositoryTest.php @@ -0,0 +1,113 @@ +<?php + +namespace CommerceGuys\Intl\Tests\Currency; + +use CommerceGuys\Intl\Currency\CurrencyRepository; +use org\bovigo\vfs\vfsStream; + +/** + * @coversDefaultClass \CommerceGuys\Intl\Currency\CurrencyRepository + */ +class CurrencyRepositoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * Base currency definitions. + * + * @var array + */ + protected $baseDefinitions = array( + 'USD' => array( + 'code' => 'USD', + 'numeric_code' => '840', + ), + 'EUR' => array( + 'code' => 'EUR', + 'numeric_code' => '840', + 'fraction_digits' => '2', + ), + ); + + /** + * English currency definitions. + * + * @var array + */ + protected $englishDefinitions = array( + 'USD' => array( + 'name' => 'US Dollar', + 'symbol' => '$', + ), + 'EUR' => array( + 'name' => 'Euro', + 'symbol' => '€', + ), + ); + + /** + * @covers ::__construct + */ + public function testConstructor() + { + // Mock the existence of JSON definitions on the filesystem. + $root = vfsStream::setup('resources'); + vfsStream::newFile('currency/base.json')->at($root)->setContent(json_encode($this->baseDefinitions)); + vfsStream::newFile('currency/en.json')->at($root)->setContent(json_encode($this->englishDefinitions)); + + // Instantiate the currency repository and confirm that the definition path + // was properly set. + $currencyRepository = new CurrencyRepository('vfs://resources/currency/'); + $definitionPath = $this->getObjectAttribute($currencyRepository, 'definitionPath'); + $this->assertEquals('vfs://resources/currency/', $definitionPath); + + return $currencyRepository; + } + + /** + * @covers ::get + * @covers ::loadDefinitions + * @covers ::createCurrencyFromDefinition + * @uses \CommerceGuys\Intl\Currency\Currency + * @uses \CommerceGuys\Intl\LocaleResolverTrait + * @depends testConstructor + */ + public function testGet($currencyRepository) + { + $currency = $currencyRepository->get('USD'); + $this->assertInstanceOf('CommerceGuys\\Intl\\Currency\\Currency', $currency); + $this->assertEquals('USD', $currency->getCurrencyCode()); + $this->assertEquals('US Dollar', $currency->getName()); + $this->assertEquals('840', $currency->getNumericCode()); + $this->assertEquals('2', $currency->getFractionDigits()); + $this->assertEquals('$', $currency->getSymbol()); + $this->assertEquals('en', $currency->getLocale()); + } + + /** + * @covers ::get + * @covers ::loadDefinitions + * @uses \CommerceGuys\Intl\LocaleResolverTrait + * @expectedException \CommerceGuys\Intl\Exception\UnknownCurrencyException + * @depends testConstructor + */ + public function testGetInvalidCurrency($currencyRepository) + { + $currencyRepository->get('RSD'); + } + + /** + * @covers ::getAll + * @covers ::loadDefinitions + * @covers ::createCurrencyFromDefinition + * @uses \CommerceGuys\Intl\Currency\Currency + * @uses \CommerceGuys\Intl\LocaleResolverTrait + * @depends testConstructor + */ + public function testGetAll($currencyRepository) + { + $currencies = $currencyRepository->getAll(); + $this->assertArrayHasKey('USD', $currencies); + $this->assertArrayHasKey('EUR', $currencies); + $this->assertEquals('USD', $currencies['USD']->getCurrencyCode()); + $this->assertEquals('EUR', $currencies['EUR']->getCurrencyCode()); + } +} diff --git a/library/intl/tests/Currency/CurrencyTest.php b/library/intl/tests/Currency/CurrencyTest.php new file mode 100644 index 000000000..837e4d07a --- /dev/null +++ b/library/intl/tests/Currency/CurrencyTest.php @@ -0,0 +1,83 @@ +<?php + +namespace CommerceGuys\Intl\Tests\Currency; + +use CommerceGuys\Intl\Currency\Currency; + +/** + * @coversDefaultClass \CommerceGuys\Intl\Currency\Currency + */ +class CurrencyTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var Currency + */ + protected $currency; + + public function setUp() + { + $this->currency = new Currency(); + } + + /** + * @covers ::getCurrencyCode + * @covers ::setCurrencyCode + * @covers ::__toString + */ + public function testCurrencyCode() + { + $this->currency->setCurrencyCode('USD'); + $this->assertEquals('USD', $this->currency->getCurrencyCode()); + $this->assertEquals('USD', (string) $this->currency); + } + + /** + * @covers ::getName + * @covers ::setName + */ + public function testName() + { + $this->currency->setName('US Dollar'); + $this->assertEquals('US Dollar', $this->currency->getName()); + } + + /** + * @covers ::getNumericCode + * @covers ::setNumericCode + */ + public function testNumericCode() + { + $this->currency->setNumericCode('840'); + $this->assertEquals('840', $this->currency->getNumericCode()); + } + + /** + * @covers ::getFractionDigits + * @covers ::setFractionDigits + */ + public function testFractionDigits() + { + $this->currency->setFractionDigits('2'); + $this->assertEquals('2', $this->currency->getFractionDigits()); + } + + /** + * @covers ::getSymbol + * @covers ::setSymbol + */ + public function testSymbol() + { + $this->currency->setSymbol('$'); + $this->assertEquals('$', $this->currency->getSymbol()); + } + + /** + * @covers ::getLocale + * @covers ::setLocale + */ + public function testLocale() + { + $this->currency->setLocale('en'); + $this->assertEquals('en', $this->currency->getLocale()); + } +} |