You are here

public function PaymentMethodConfigurationListBuilderTest::testGetDefaultOperationsWithAccess in Payment 8.2

@covers ::getDefaultOperations

File

tests/src/Unit/Entity/PaymentMethodConfiguration/PaymentMethodConfigurationListBuilderTest.php, line 225

Class

PaymentMethodConfigurationListBuilderTest
@coversDefaultClass \Drupal\payment\Entity\PaymentMethodConfiguration\PaymentMethodConfigurationListBuilder

Namespace

Drupal\Tests\payment\Unit\Entity\PaymentMethodConfiguration

Code

public function testGetDefaultOperationsWithAccess() {
  $method = new \ReflectionMethod($this->sut, 'getDefaultOperations');
  $method
    ->setAccessible(TRUE);
  $url_duplicate_form = new Url($this
    ->randomMachineName());
  $payment = $this
    ->createMock(PaymentInterface::class);
  $map = array(
    array(
      'duplicate',
      NULL,
      FALSE,
      TRUE,
    ),
  );
  $payment
    ->expects($this
    ->any())
    ->method('access')
    ->willReturnMap($map);
  $map = array(
    array(
      'duplicate-form',
      [],
      $url_duplicate_form,
    ),
  );
  $payment
    ->expects($this
    ->any())
    ->method('toUrl')
    ->willReturnMap($map);
  $operations = $method
    ->invoke($this->sut, $payment);
  $expected_operations = [
    'duplicate',
  ];
  $this
    ->assertSame($expected_operations, array_keys($operations));
  foreach ($operations as $name => $operation) {
    $this
      ->assertInstanceof(TranslatableMarkup::class, $operation['title']);
    $this
      ->assertInstanceof(Url::class, $operation['url']);
    if (array_key_exists('weight', $operation)) {
      $this
        ->assertIsInt($operation['weight']);
    }
  }
}