This commit is contained in:
Yuri Kuznetsov
2025-12-14 13:16:52 +02:00
parent b4bd66c363
commit 3173150d19
@@ -30,12 +30,13 @@
namespace tests\integration\Espo\Currency; namespace tests\integration\Espo\Currency;
use Espo\Core\Exceptions\Error; use Espo\Core\Exceptions\Error;
use Espo\Core\Field\Date;
use Espo\Core\Formula\Manager as FormulaManager; use Espo\Core\Formula\Manager as FormulaManager;
use Espo\Modules\Crm\Entities\Lead; use Espo\Modules\Crm\Entities\Lead;
use Espo\Tools\Currency\RateEntryProvider;
use Espo\Tools\Currency\RateService; use Espo\Tools\Currency\RateService;
use Espo\Core\Currency\Rates; use Espo\Core\Currency\Rates;
use Espo\Core\Field\Currency; use Espo\Core\Field\Currency;
use Espo\Core\InjectableFactory;
use Espo\Core\Utils\Config\ConfigWriter; use Espo\Core\Utils\Config\ConfigWriter;
use Espo\Tools\Currency\SyncManager; use Espo\Tools\Currency\SyncManager;
use tests\integration\Core\BaseTestCase; use tests\integration\Core\BaseTestCase;
@@ -140,19 +141,34 @@ class CurrencyTest extends BaseTestCase
$this->assertEquals(null, $value); $this->assertEquals(null, $value);
} }
/**
* @noinspection PhpUnhandledExceptionInspection
*/
public function testFormulaConvert(): void public function testFormulaConvert(): void
{ {
$formulaManager = $this->getContainer()->getByClass(FormulaManager::class); $formulaManager = $this->getContainer()->getByClass(FormulaManager::class);
$em = $this->getEntityManager();
$configWriter = $this->getInjectableFactory()->create(ConfigWriter::class); $configWriter = $this->getInjectableFactory()->create(ConfigWriter::class);
$configWriter->set('currencyList', ['USD', 'EUR']); $configWriter->set('currencyList', ['USD', 'EUR']);
$configWriter->set('defaultCurrency', 'USD'); $configWriter->set('defaultCurrency', 'USD');
$configWriter->set('baseCurrency', 'USD'); $configWriter->set('baseCurrency', 'USD');
$configWriter->set('currencyRates', [ $configWriter->save();;
'EUR' => 2.0,
]); $syncManager = $this->getInjectableFactory()->create(SyncManager::class);
$configWriter->save();
$syncManager->sync();
$rate = $this->getInjectableFactory()->create(RateEntryProvider::class)
->prepareNew('EUR', Date::createToday()->addDays(-2));
$rate->setRate('2.0');
$em->saveEntity($rate);
$syncManager->refreshCache();
$script = "ext\\currency\\convert('0.5', 'EUR')"; $script = "ext\\currency\\convert('0.5', 'EUR')";
$value = $formulaManager->run($script); $value = $formulaManager->run($script);