You are here

public function PaymentReferenceBaseTest::testBuildRefreshButton in Payment 8.2

@covers ::buildRefreshButton

File

tests/src/Unit/Element/PaymentReferenceBaseTest.php, line 772

Class

PaymentReferenceBaseTest
@coversDefaultClass \Drupal\payment\Element\PaymentReferenceBase

Namespace

Drupal\Tests\payment\Unit\Element

Code

public function testBuildRefreshButton() {
  $limit_allowed_plugin_ids = [
    $this
      ->randomMachineName(),
  ];
  $plugin_selector_id = $this
    ->randomMachineName();
  $plugin_selector = $this
    ->createMock(PluginSelectorInterface::class);
  $this->pluginSelectorManager
    ->expects($this
    ->atLeastOnce())
    ->method('createInstance')
    ->with($plugin_selector_id)
    ->willReturn($plugin_selector);
  $payment = $this
    ->createMock(PaymentInterface::class);
  $payment
    ->expects($this
    ->atLeastOnce())
    ->method('createDuplicate')
    ->willReturnSelf();
  $element = array(
    '#default_value' => mt_rand(),
    'container' => array(
      '#id' => $this
        ->randomMachineName(),
    ),
    '#limit_allowed_plugin_ids' => $limit_allowed_plugin_ids,
    '#name' => $this
      ->randomMachineName(),
    '#plugin_selector_id' => $plugin_selector_id,
    '#prototype_payment' => $payment,
    '#required' => (bool) mt_rand(0, 1),
  );
  $form_state = new FormState();
  $method = new \ReflectionMethod($this->sut, 'buildRefreshButton');
  $method
    ->setAccessible(TRUE);
  $build = $method
    ->invoke($this->sut, $element, $form_state);
  $this
    ->assertIsArray($build);
  $this
    ->assertTrue(is_callable($build['#ajax']['callback']));
  $this
    ->assertSame($build['#submit'][0][0], $this->pluginDefinition['class']);
}