You are here

public function PaymentReferenceBaseTest::testGetPluginSelector in Payment 8.2

@covers ::getPluginSelector

@dataProvider providerGetPluginSelector

File

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

Class

PaymentReferenceBaseTest
@coversDefaultClass \Drupal\payment\Element\PaymentReferenceBase

Namespace

Drupal\Tests\payment\Unit\Element

Code

public function testGetPluginSelector($limit_allowed_plugin_ids) {
  $payment = $this
    ->createMock(PaymentInterface::class);
  $payment
    ->expects($this
    ->once())
    ->method('createDuplicate')
    ->willReturnSelf();
  $plugin_selector_plugin_id = $this
    ->randomMachineName();
  $required = $this
    ->randomMachineName();
  $element = array(
    '#limit_allowed_plugin_ids' => $limit_allowed_plugin_ids,
    '#name' => $this
      ->randomMachineName(),
    '#plugin_selector_id' => $plugin_selector_plugin_id,
    '#prototype_payment' => $payment,
    '#required' => $required,
  );
  $form_state = new FormState();
  $plugin_selector = $this
    ->createMock(PluginSelectorInterface::class);
  $plugin_selector
    ->expects($this
    ->once())
    ->method('setRequired')
    ->with($required);
  $this->pluginSelectorManager
    ->expects($this
    ->once())
    ->method('createInstance')
    ->with($plugin_selector_plugin_id)
    ->willReturn($plugin_selector);
  $method = new \ReflectionMethod($this->sut, 'getPluginSelector');
  $method
    ->setAccessible(TRUE);
  $retrieved_plugin_selector = $method
    ->invoke($this->sut, $element, $form_state);
  $this
    ->assertInstanceOf(PluginSelectorInterface::class, $retrieved_plugin_selector);
  $this
    ->assertSame($retrieved_plugin_selector, $method
    ->invoke($this->sut, $element, $form_state));
}