mirror of
https://github.com/SuiteCRM/SuiteCRM-Core.git
synced 2025-09-12 23:23:49 +08:00
Add currency detail field component
- Add Component for detail mode - Add currencyFormatPipe that extends currency pipe - Register components in dynamic components manifest - Expose currency user preference -- Add mapper to retrieve the need currency info - Expose currency system config -- Add mapper to retrieve the needed currency info - Add sample usage to list view - Add karma/jasmine tests - Add codeception unit tests
This commit is contained in:
parent
b7058db8cd
commit
b2dbb79cdd
26 changed files with 713 additions and 135 deletions
81
tests/unit/core/legacy/CurrencyHandlerTest.php
Normal file
81
tests/unit/core/legacy/CurrencyHandlerTest.php
Normal file
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
namespace App\Tests;
|
||||
|
||||
use Codeception\Test\Unit;
|
||||
use Exception;
|
||||
use SuiteCRM\Core\Legacy\CurrencyHandler;
|
||||
|
||||
class CurrencyHandlerTest extends Unit
|
||||
{
|
||||
/**
|
||||
* @var UnitTester
|
||||
*/
|
||||
protected $tester;
|
||||
|
||||
/**
|
||||
* @var CurrencyHandler
|
||||
*/
|
||||
protected $handler;
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function _before(): void
|
||||
{
|
||||
$projectDir = $this->tester->getProjectDir();
|
||||
$legacyDir = $this->tester->getLegacyDir();
|
||||
$legacySessionName = $this->tester->getLegacySessionName();
|
||||
$defaultSessionName = $this->tester->getDefaultSessionName();
|
||||
$legacyScope = $this->tester->getLegacyScope();
|
||||
|
||||
$this->handler = new CurrencyHandler(
|
||||
$projectDir,
|
||||
$legacyDir,
|
||||
$legacySessionName,
|
||||
$defaultSessionName,
|
||||
$legacyScope
|
||||
);
|
||||
}
|
||||
|
||||
// tests
|
||||
|
||||
/**
|
||||
* Test retrieval of default currency
|
||||
*/
|
||||
public function testDefaultCurrencyRetrieval(): void
|
||||
{
|
||||
$currency = $this->handler->getCurrency(null);
|
||||
static::assertNotNull($currency);
|
||||
static::assertNotEmpty($currency);
|
||||
|
||||
static::assertArrayHasKey('id', $currency);
|
||||
static::assertNotEmpty($currency['id']);
|
||||
static::assertArrayHasKey('name', $currency);
|
||||
static::assertNotEmpty($currency['name']);
|
||||
static::assertArrayHasKey('symbol', $currency);
|
||||
static::assertNotEmpty($currency['symbol']);
|
||||
static::assertArrayHasKey('iso4217', $currency);
|
||||
static::assertNotEmpty($currency['iso4217']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test retrieval of currency by id
|
||||
*/
|
||||
public function testCurrencyRetrieval(): void
|
||||
{
|
||||
$currency = $this->handler->getCurrency(-99);
|
||||
static::assertNotNull($currency);
|
||||
static::assertNotEmpty($currency);
|
||||
|
||||
static::assertArrayHasKey('id', $currency);
|
||||
static::assertNotEmpty($currency['id']);
|
||||
static::assertEquals($currency['id'], -99);
|
||||
static::assertArrayHasKey('name', $currency);
|
||||
static::assertNotEmpty($currency['name']);
|
||||
static::assertArrayHasKey('symbol', $currency);
|
||||
static::assertNotEmpty($currency['symbol']);
|
||||
static::assertArrayHasKey('iso4217', $currency);
|
||||
static::assertNotEmpty($currency['iso4217']);
|
||||
}
|
||||
}
|
|
@ -7,9 +7,11 @@ use Codeception\Test\Unit;
|
|||
use Exception;
|
||||
use SuiteCRM\Core\Legacy\ActionNameMapperHandler;
|
||||
use SuiteCRM\Core\Legacy\ClassicViewRoutingExclusionsHandler;
|
||||
use SuiteCRM\Core\Legacy\CurrencyHandler;
|
||||
use SuiteCRM\Core\Legacy\DateTimeHandler;
|
||||
use SuiteCRM\Core\Legacy\ModuleNameMapperHandler;
|
||||
use SuiteCRM\Core\Legacy\SystemConfig\DateFormatConfigMapper;
|
||||
use SuiteCRM\Core\Legacy\SystemConfig\DefaultCurrencyConfigMapper;
|
||||
use SuiteCRM\Core\Legacy\SystemConfig\SystemConfigMappers;
|
||||
use SuiteCRM\Core\Legacy\SystemConfig\TimeFormatConfigMapper;
|
||||
use SuiteCRM\Core\Legacy\SystemConfigHandler;
|
||||
|
@ -52,7 +54,8 @@ class SystemConfigHandlerTest extends Unit
|
|||
'module_name_map' => true,
|
||||
'action_name_map' => true,
|
||||
'datef' => true,
|
||||
'timef' => true
|
||||
'timef' => true,
|
||||
'currency' => true,
|
||||
];
|
||||
|
||||
$moduleMapper = new ModuleNameMapperHandler(
|
||||
|
@ -88,9 +91,18 @@ class SystemConfigHandlerTest extends Unit
|
|||
$this->tester->getDatetimeFormatMap()
|
||||
);
|
||||
|
||||
$currencyHandler = new CurrencyHandler(
|
||||
$projectDir,
|
||||
$legacyDir,
|
||||
$legacySessionName,
|
||||
$defaultSessionName,
|
||||
$legacyScope
|
||||
);
|
||||
|
||||
$mappersArray = [
|
||||
'datef' => new DateFormatConfigMapper($dateTimeHandler),
|
||||
'timef' => new TimeFormatConfigMapper($dateTimeHandler)
|
||||
'timef' => new TimeFormatConfigMapper($dateTimeHandler),
|
||||
'currency' => new DefaultCurrencyConfigMapper($currencyHandler)
|
||||
];
|
||||
|
||||
/** @var SystemConfigMappers $mappers */
|
||||
|
@ -255,4 +267,30 @@ class SystemConfigHandlerTest extends Unit
|
|||
static::assertEquals('HH:mm', $format->getValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test default currency mapping
|
||||
*/
|
||||
public function testDefaultCurrencyMapping(): void
|
||||
{
|
||||
$currencyConfig = $this->handler->getSystemConfig('currency');
|
||||
static::assertNotNull($currencyConfig);
|
||||
static::assertEquals('currency', $currencyConfig->getId());
|
||||
static::assertNull($currencyConfig->getValue());
|
||||
static::assertIsArray($currencyConfig->getItems());
|
||||
static::assertNotEmpty($currencyConfig->getItems());
|
||||
|
||||
$currency = $currencyConfig->getItems();
|
||||
static::assertNotNull($currency);
|
||||
static::assertNotEmpty($currency);
|
||||
|
||||
static::assertArrayHasKey('id', $currency);
|
||||
static::assertNotEmpty($currency['id']);
|
||||
static::assertEquals($currency['id'], -99);
|
||||
static::assertArrayHasKey('name', $currency);
|
||||
static::assertNotEmpty($currency['name']);
|
||||
static::assertArrayHasKey('symbol', $currency);
|
||||
static::assertNotEmpty($currency['symbol']);
|
||||
static::assertArrayHasKey('iso4217', $currency);
|
||||
static::assertNotEmpty($currency['iso4217']);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,8 +6,10 @@ use ApiPlatform\Core\Exception\ItemNotFoundException;
|
|||
use AspectMock\Test;
|
||||
use Codeception\Test\Unit;
|
||||
use Exception;
|
||||
use SuiteCRM\Core\Legacy\CurrencyHandler;
|
||||
use SuiteCRM\Core\Legacy\DateTimeHandler;
|
||||
use SuiteCRM\Core\Legacy\UserPreferenceHandler;
|
||||
use SuiteCRM\Core\Legacy\UserPreferences\CurrencyPreferenceMapper;
|
||||
use SuiteCRM\Core\Legacy\UserPreferences\DateFormatPreferenceMapper;
|
||||
use SuiteCRM\Core\Legacy\UserPreferences\TimeFormatPreferenceMapper;
|
||||
use SuiteCRM\Core\Legacy\UserPreferences\UserPreferencesMappers;
|
||||
|
@ -41,7 +43,8 @@ class UserPreferencesHandlerTest extends Unit
|
|||
'global' => [
|
||||
'timezone' => true,
|
||||
'datef' => true,
|
||||
'timef' => true
|
||||
'timef' => true,
|
||||
'currency' => true
|
||||
]
|
||||
];
|
||||
|
||||
|
@ -49,7 +52,8 @@ class UserPreferencesHandlerTest extends Unit
|
|||
'global' => [
|
||||
'timezone' => 'UTC',
|
||||
'datef' => 'm/d/Y',
|
||||
'timef' => 'H:i'
|
||||
'timef' => 'H:i',
|
||||
'currency' => -99
|
||||
]
|
||||
];
|
||||
|
||||
|
@ -85,9 +89,18 @@ class UserPreferencesHandlerTest extends Unit
|
|||
$this->tester->getDatetimeFormatMap()
|
||||
);
|
||||
|
||||
$currencyHandler = new CurrencyHandler(
|
||||
$projectDir,
|
||||
$legacyDir,
|
||||
$legacySessionName,
|
||||
$defaultSessionName,
|
||||
$legacyScope
|
||||
);
|
||||
|
||||
$mappersArray = [
|
||||
'datef' => new DateFormatPreferenceMapper($dateTimeHandler),
|
||||
'timef' => new TimeFormatPreferenceMapper($dateTimeHandler)
|
||||
'timef' => new TimeFormatPreferenceMapper($dateTimeHandler),
|
||||
'currency' => new CurrencyPreferenceMapper($currencyHandler)
|
||||
];
|
||||
|
||||
/** @var UserPreferencesMappers $mappers */
|
||||
|
@ -195,4 +208,33 @@ class UserPreferencesHandlerTest extends Unit
|
|||
static::assertNotNull($format);
|
||||
static::assertEquals('HH:mm', $format);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test currency preference mapping
|
||||
*/
|
||||
public function testCurrencyMapping(): void
|
||||
{
|
||||
$userPref = $this->handler->getUserPreference('global');
|
||||
|
||||
static::assertNotNull($userPref);
|
||||
static::assertEquals('global', $userPref->getId());
|
||||
|
||||
$userPreferences = $userPref->getItems();
|
||||
|
||||
static::assertArrayHasKey('currency', $userPreferences);
|
||||
$currencyPref = $userPreferences['currency'];
|
||||
|
||||
static::assertNotNull($currencyPref);
|
||||
static::assertNotEmpty($currencyPref);
|
||||
|
||||
static::assertArrayHasKey('id', $currencyPref);
|
||||
static::assertNotEmpty($currencyPref['id']);
|
||||
static::assertEquals($currencyPref['id'], -99);
|
||||
static::assertArrayHasKey('name', $currencyPref);
|
||||
static::assertNotEmpty($currencyPref['name']);
|
||||
static::assertArrayHasKey('symbol', $currencyPref);
|
||||
static::assertNotEmpty($currencyPref['symbol']);
|
||||
static::assertArrayHasKey('iso4217', $currencyPref);
|
||||
static::assertNotEmpty($currencyPref['iso4217']);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue