public function CurrencyAmountTest::testProcess in Currency 8.3
@covers ::process
@depends testGetInfo
@dataProvider providerTestProcess
File
- tests/
src/ Unit/ Element/ CurrencyAmountTest.php, line 247
Class
- CurrencyAmountTest
- @coversDefaultClass \Drupal\currency\Element\CurrencyAmount
Namespace
Drupal\Tests\currency\Unit\ElementCode
public function testProcess($default_currency_loadable) {
$currency_code_a = $this
->randomMachineName();
$currency_code_b = $this
->randomMachineName();
$currency_code_c = $this
->randomMachineName();
$currency = $this
->createMock(CurrencyInterface::class);
$currency_options = [
$currency_code_a => $this
->randomMachineName(),
$currency_code_b => $this
->randomMachineName(),
$currency_code_c => $this
->randomMachineName(),
];
$this->formHelper
->expects($this
->atLeastOnce())
->method('getCurrencyOptions')
->willReturn($currency_options);
$map = [
[
$currency_code_b,
$default_currency_loadable ? $currency : NULL,
],
[
'XXX',
$default_currency_loadable ? NULL : $currency,
],
];
$this->currencyStorage
->expects($this
->atLeastOnce())
->method('load')
->willReturnMap($map);
$limit_currency_codes = [
$currency_code_a,
$currency_code_b,
];
$element = [
'#default_value' => [
'amount' => mt_rand(),
'currency_code' => $currency_code_b,
],
'#required' => TRUE,
'#limit_currency_codes' => $limit_currency_codes,
] + $this->sut
->getInfo();
$form_state = new FormState();
$form = [];
$element = $this->sut
->process($element, $form_state, $form);
$this
->assertEmpty(array_diff($limit_currency_codes, array_keys($element['currency_code']['#options'])));
$this
->assertEmpty(array_diff(array_keys($element['currency_code']['#options']), $limit_currency_codes));
}