2020-04-19 12:29:58 +02:00
|
|
|
<?php
|
2020-09-14 13:11:46 +02:00
|
|
|
/**
|
|
|
|
* Invoice Ninja (https://invoiceninja.com).
|
|
|
|
*
|
|
|
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
|
|
|
*
|
2021-01-03 22:54:54 +01:00
|
|
|
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
2020-09-14 13:11:46 +02:00
|
|
|
*
|
2022-06-21 11:57:17 +02:00
|
|
|
* @license https://www.elastic.co/licensing/elastic-license
|
2020-09-14 13:11:46 +02:00
|
|
|
*/
|
2022-06-21 11:57:17 +02:00
|
|
|
|
2020-04-19 12:29:58 +02:00
|
|
|
namespace Tests\Unit;
|
|
|
|
|
|
|
|
use App\Libraries\Currency\Conversion\CurrencyApi;
|
2024-01-09 11:29:32 +01:00
|
|
|
use App\Models\Currency;
|
2020-04-19 12:29:58 +02:00
|
|
|
use Illuminate\Support\Carbon;
|
|
|
|
use Tests\TestCase;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @test
|
|
|
|
* @covers App\Libraries\Currency\Conversion\CurrencyApi
|
|
|
|
*/
|
|
|
|
class CurrencyApiTest extends TestCase
|
|
|
|
{
|
2022-06-21 12:00:57 +02:00
|
|
|
protected function setUp() :void
|
2020-04-19 12:29:58 +02:00
|
|
|
{
|
|
|
|
parent::setUp();
|
|
|
|
}
|
|
|
|
|
2024-01-09 11:29:32 +01:00
|
|
|
public function testConversionAudToEur()
|
|
|
|
{
|
|
|
|
$converter = new CurrencyApi();
|
|
|
|
|
|
|
|
$converted_amount = $converter->convert(100, 12, 3);
|
|
|
|
|
|
|
|
$aud_currency = Currency::find(12);
|
|
|
|
$eur_currency = Currency::find(3);
|
|
|
|
|
|
|
|
$converted_synthetic = 100 / ($aud_currency->exchange_rate / $eur_currency->exchange_rate);
|
|
|
|
|
|
|
|
$this->assertEquals(round($converted_synthetic, 2), round($converted_amount, 2));
|
2024-01-09 11:49:29 +01:00
|
|
|
|
2024-01-09 11:29:32 +01:00
|
|
|
}
|
|
|
|
|
2020-04-19 12:29:58 +02:00
|
|
|
public function testCurrencyConversionWorking()
|
|
|
|
{
|
2020-09-06 11:38:10 +02:00
|
|
|
$converter = new CurrencyApi();
|
2020-04-19 12:29:58 +02:00
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
$converted_amount = $converter->convert(100, 1, 2);
|
2020-04-19 12:29:58 +02:00
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
$this->assertIsFloat($converted_amount);
|
2020-04-19 12:29:58 +02:00
|
|
|
}
|
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
public function testExchangeRate()
|
|
|
|
{
|
|
|
|
$converter = new CurrencyApi();
|
2020-04-19 12:29:58 +02:00
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
$exchange_rate = $converter->exchangeRate(1, 2);
|
2020-04-19 12:29:58 +02:00
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
$this->assertIsNumeric($exchange_rate);
|
|
|
|
}
|
2020-04-19 12:29:58 +02:00
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
public function testExchangeRateWithDate()
|
|
|
|
{
|
|
|
|
$date = Carbon::parse('2020-03-08');
|
2020-04-19 12:29:58 +02:00
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
$converter = new CurrencyApi();
|
2020-04-19 12:29:58 +02:00
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
$exchange_rate = $converter->exchangeRate(1, 2, $date);
|
2020-04-19 12:29:58 +02:00
|
|
|
|
2020-09-06 11:38:10 +02:00
|
|
|
$this->assertIsNumeric($exchange_rate);
|
|
|
|
}
|
|
|
|
}
|