Example #1
0
 /**
  * @dataProvider providerConvert
  *
  * @param string $money          The string representation of the base money.
  * @param string $currency       The currency code to convert to.
  * @param int    $roundingMode   The rounding mode to use.
  * @param string $expectedResult The expected money's string representation, or an exception class name.
  */
 public function testConvert($money, $currency, $roundingMode, $expectedResult)
 {
     $money = Money::parse($money);
     $currency = Currency::of($currency);
     $currencyConverter = $this->createCurrencyConverter($roundingMode);
     if ($this->isExceptionClass($expectedResult)) {
         $this->setExpectedException($expectedResult);
     }
     $actualResult = $currencyConverter->convert($money, $currency);
     if (!$this->isExceptionClass($expectedResult)) {
         $this->assertMoneyIs($expectedResult, $actualResult);
     }
 }
Example #2
0
 /**
  * @depends testNewMoneyBagIsEmpty
  *
  * @param MoneyBag $moneyBag
  *
  * @return MoneyBag
  */
 public function testAddSubtractMoney(MoneyBag $moneyBag)
 {
     $moneyBag->add(Money::of('123', 'EUR'));
     $this->assertMoneyBagContains(['EUR 123.00'], $moneyBag);
     $moneyBag->add(Money::of('234.99', 'EUR'));
     $this->assertMoneyBagContains(['EUR 357.99'], $moneyBag);
     $moneyBag->add(Money::of(3, 'JPY'));
     $this->assertMoneyBagContains(['EUR 357.99', 'JPY 3'], $moneyBag);
     $moneyBag->add(Money::parse('JPY 1.1234'));
     $this->assertMoneyBagContains(['EUR 357.99', 'JPY 4.1234'], $moneyBag);
     $moneyBag->subtract(Money::parse('EUR 3.589950'));
     $this->assertMoneyBagContains(['EUR 354.400050', 'JPY 4.1234'], $moneyBag);
     return $moneyBag;
 }
Example #3
0
 /**
  * @param array    $expectedMonies
  * @param MoneyBag $moneyBag
  */
 protected final function assertMoneyBagContains(array $expectedMonies, $moneyBag)
 {
     $this->assertInstanceOf(MoneyBag::class, $moneyBag);
     // Test get() on each currency
     foreach ($expectedMonies as $money) {
         $money = Money::parse($money);
         $this->assertMoneyIs($money, $moneyBag->get($money->getCurrency()));
     }
     $actualMonies = $moneyBag->getMonies();
     foreach ($actualMonies as &$money) {
         $money = (string) $money;
     }
     sort($expectedMonies);
     sort($actualMonies);
     // Test getMonies()
     $this->assertSame($expectedMonies, $actualMonies);
 }
Example #4
0
 /**
  * @dataProvider providerMax
  *
  * @param array $monies       The monies to compare.
  * @param string $expectedMin The expected maximum money, or an exception class.
  */
 public function testMax(array $monies, $expectedMin)
 {
     $comparator = new MoneyComparator($this->getExchangeRateProvider());
     foreach ($monies as &$money) {
         $money = Money::parse($money);
     }
     if ($this->isExceptionClass($expectedMin)) {
         $this->setExpectedException($expectedMin);
     }
     $actualMin = $comparator->max(...$monies);
     if (!$this->isExceptionClass($expectedMin)) {
         $this->assertMoneyIs($expectedMin, $actualMin);
     }
 }
Example #5
0
 /**
  * @expectedException \Brick\Money\Exception\CurrencyMismatchException
  */
 public function testTotalOfDifferentCurrenciesThrowsException()
 {
     Money::total(Money::parse('EUR 1.00'), Money::parse('USD 1.00'));
 }
Example #6
0
 /**
  * @dataProvider providerCredit
  *
  * @param string $cardNumber
  * @param string $validity
  * @param string $cvv
  * @param string $amount
  * @param string $expectedStatus
  */
 public function testCredit($cardNumber, $validity, $cvv, $amount, $expectedStatus)
 {
     $card = new Card($cardNumber, $validity, $cvv);
     $amount = Money::parse($amount);
     $reference = __FUNCTION__ . '-' . time();
     $paybox = $this->getTestPayboxDirectInstance();
     $request = new Credit($card, $amount, $reference);
     $response = $paybox->execute($request);
     $this->assertResponseStatus($response, $expectedStatus);
 }