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:
Clemente Raposo 2020-06-03 11:23:38 +01:00 committed by Dillon-Brown
parent b7058db8cd
commit b2dbb79cdd
26 changed files with 713 additions and 135 deletions

View 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']);
}
}

View file

@ -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']);
}
}

View file

@ -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']);
}
}