You are here

public function PaymentLineItemsDisplayTest::testPreRender in Payment 8.2

@covers ::preRender

File

tests/src/Unit/Element/PaymentLineItemsDisplayTest.php, line 99

Class

PaymentLineItemsDisplayTest
@coversDefaultClass \Drupal\payment\Element\PaymentLineItemsDisplay

Namespace

Drupal\Tests\payment\Unit\Element

Code

public function testPreRender() {
  $payment_line_item_amount = mt_rand();
  $payment_line_item_total_amount = mt_rand();
  $payment_line_item_currency_code = $this
    ->randomMachineName();
  $payment_line_item = $this
    ->createMock(PaymentLineItemInterface::class);
  $payment_line_item
    ->expects($this
    ->atLeastOnce())
    ->method('getAmount')
    ->willReturn($payment_line_item_amount);
  $payment_line_item
    ->expects($this
    ->atLeastOnce())
    ->method('getCurrencyCode')
    ->willReturn($payment_line_item_currency_code);
  $payment_line_item
    ->expects($this
    ->atLeastOnce())
    ->method('getTotalAmount')
    ->willReturn($payment_line_item_total_amount);
  $payment_line_items_currency_code = $this
    ->randomMachineName();
  $payment_line_items = $this
    ->createMock(LineItemCollectionInterface::class);
  $payment_line_items
    ->expects($this
    ->atLeastOnce())
    ->method('getCurrencyCode')
    ->willReturn($payment_line_items_currency_code);
  $payment_line_items
    ->expects($this
    ->atLeastOnce())
    ->method('getLineItems')
    ->willReturn([
    $payment_line_item,
  ]);
  $payment_line_item_currency = $this
    ->createMock(CurrencyInterface::class);
  $payment_line_item_currency
    ->expects($this
    ->exactly(2))
    ->method('formatAmount');
  $payment_line_items_currency = $this
    ->createMock(CurrencyInterface::class);
  $payment_line_items_currency
    ->expects($this
    ->once())
    ->method('formatAmount');
  $map = array(
    array(
      $payment_line_item_currency_code,
      $payment_line_item_currency,
    ),
    array(
      $payment_line_items_currency_code,
      $payment_line_items_currency,
    ),
  );
  $this->currencyStorage
    ->expects($this
    ->atLeast(count($map)))
    ->method('load')
    ->willReturnMap($map);
  $element = array(
    '#payment_line_items' => $payment_line_items,
  );
  $build = $this->sut
    ->preRender($element);
  $this
    ->assertSame('table', $build['table']['#type']);
}