You are here

public function PathautoPatternTest::testMediaPattern in Lightning Media 8.3

Same name and namespace in other branches
  1. 8.4 tests/src/Functional/PathautoPatternTest.php \Drupal\Tests\lightning_media\Functional\PathautoPatternTest::testMediaPattern()
  2. 8.2 tests/src/Functional/PathautoPatternTest.php \Drupal\Tests\lightning_media\Functional\PathautoPatternTest::testMediaPattern()

Tests media types that ship with Lightning.

File

tests/src/Functional/PathautoPatternTest.php, line 57

Class

PathautoPatternTest
Tests that all media items have a /media/BUNDLE/ID Pathauto pattern.

Namespace

Drupal\Tests\lightning_media\Functional

Code

public function testMediaPattern() {
  $assert_session = $this
    ->assertSession();

  // This could be done with the data provider pattern, but there's no real
  // benefit to that in this case, and this is significantly faster.
  $media = [
    'document' => NULL,
    'image' => NULL,
    'video' => NULL,
    'tweet' => 'https://twitter.com/50NerdsofGrey/status/757319527151636480',
    'instagram' => 'https://www.instagram.com/p/BmIh_AFDBzX',
  ];
  foreach ($media as $type => $source_value) {

    /** @var \Drupal\media\MediaInterface $media */
    $media_item = Media::create([
      'bundle' => $type,
      'name' => $this
        ->randomString(),
    ]);
    if ($source_value) {
      $source_field = $media_item
        ->getSource()
        ->getSourceFieldDefinition($media_item->bundle->entity)
        ->getName();
      $media_item
        ->set($source_field, $source_value);
    }
    $media_item
      ->setPublished()
      ->save();
    $this
      ->drupalGet($media_item
      ->toUrl());
    $assert_session
      ->statusCodeEquals(200);
    $assert_session
      ->pageTextContains($media_item
      ->label());
    $assert_session
      ->addressEquals('/media/' . strtolower($media_item
      ->bundle()) . '/' . $media_item
      ->id());
  }
}