You are here

public function PaymentFormTest::testViewElements in Payment 8.2

@covers ::viewElements

File

modules/payment_form/tests/src/Unit/Plugin/Field/FieldFormatter/PaymentFormTest.php, line 152

Class

PaymentFormTest
@coversDefaultClass \Drupal\payment_form\Plugin\Field\FieldFormatter\PaymentForm

Namespace

Drupal\Tests\payment_form\Unit\Plugin\Field\FieldFormatter

Code

public function testViewElements() {
  $entity_type_id = $this
    ->randomMachineName();
  $bundle = $this
    ->randomMachineName();
  $field_name = $this
    ->randomMachineName();
  $destination_url = $this
    ->randomMachineName();
  $currency_code = $this
    ->randomMachineName();
  $plugin_id = $this
    ->randomMachineName();
  $plugin_configuration = [
    $this
      ->randomMachineName() => $this
      ->randomMachineName(),
  ];
  $plugin_id_property = $this
    ->createMock(TypedDataInterface::class);
  $plugin_id_property
    ->expects($this
    ->once())
    ->method('getValue')
    ->willReturn($plugin_id);
  $plugin_configuration_property = $this
    ->createMock(TypedDataInterface::class);
  $plugin_configuration_property
    ->expects($this
    ->once())
    ->method('getValue')
    ->willReturn($plugin_configuration);
  $map = [
    [
      'plugin_id',
      $plugin_id_property,
    ],
    [
      'plugin_configuration',
      $plugin_configuration_property,
    ],
  ];
  $item = $this
    ->getMockBuilder(PaymentFormFieldType::class)
    ->disableOriginalConstructor()
    ->getMock();
  $item
    ->expects($this
    ->exactly(2))
    ->method('get')
    ->willReturnMap($map);
  $entity = $this
    ->createMock(EntityInterface::class);
  $entity
    ->expects($this
    ->atLeastOnce())
    ->method('bundle')
    ->willReturn($bundle);
  $entity
    ->expects($this
    ->atLeastOnce())
    ->method('getEntityTypeId')
    ->willReturn($entity_type_id);
  $iterator = new \ArrayIterator([
    $item,
  ]);
  $items = $this
    ->getMockBuilder(FieldItemList::class)
    ->disableOriginalConstructor()
    ->setMethods([
    'getEntity',
    'getIterator',
  ])
    ->getMock();
  $items
    ->expects($this
    ->atLeastOnce())
    ->method('getEntity')
    ->willReturn($entity);
  $items
    ->expects($this
    ->atLeastOnce())
    ->method('getIterator')
    ->willReturn($iterator);
  $this->fieldDefinition
    ->expects($this
    ->once())
    ->method('getName')
    ->willReturn($field_name);
  $this->fieldDefinition
    ->expects($this
    ->atLeastOnce())
    ->method('getSetting')
    ->with('currency_code')
    ->willReturn($currency_code);
  $payment_type = $this
    ->getMockBuilder(PaymentFormPaymentType::class)
    ->disableOriginalConstructor()
    ->getMock();
  $payment_type
    ->expects($this
    ->once())
    ->method('setEntityTypeId')
    ->with($entity_type_id);
  $payment_type
    ->expects($this
    ->once())
    ->method('setBundle')
    ->with($bundle);
  $payment_type
    ->expects($this
    ->once())
    ->method('setFieldName')
    ->with($field_name);
  $payment_type
    ->expects($this
    ->once())
    ->method('setDestinationUrl')
    ->with($destination_url);
  $payment = $this
    ->createMock(PaymentInterface::class);
  $payment
    ->expects($this
    ->once())
    ->method('setCurrencyCode')
    ->with($currency_code);
  $payment
    ->expects($this
    ->once())
    ->method('getPaymentType')
    ->willReturn($payment_type);
  $payment_line_item = $this
    ->createMock(PaymentLineItemInterface::class);
  $this->paymentLineItemManager
    ->expects($this
    ->once())
    ->method('createInstance')
    ->with($plugin_id, $plugin_configuration)
    ->willReturn($payment_line_item);
  $this->paymentStorage
    ->expects($this
    ->once())
    ->method('create')
    ->with([
    'bundle' => 'payment_form',
  ])
    ->willReturn($payment);
  $this->request
    ->expects($this
    ->atLeastOnce())
    ->method('getUri')
    ->willReturn($destination_url);
  $form = [
    '#foo' => $this
      ->randomMachineName(),
  ];
  $this->entityFormBuilder
    ->expects($this
    ->once())
    ->method('getForm')
    ->with($payment, 'payment_form')
    ->willReturn($form);
  $this
    ->assertSame($form, $this->sut
    ->viewElements($items, 'en'));
}