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));
}