public function VideoFormatterTest::testVideoFormatter in Facebook Instant Articles 8.2
Same name and namespace in other branches
- 3.x tests/src/Kernel/Plugin/Field/FieldFormatter/VideoFormatterTest.php \Drupal\Tests\fb_instant_articles\Kernel\Plugin\Field\FieldFormatter\VideoFormatterTest::testVideoFormatter()
Tests the instant article video formatter.
@covers ::viewInstantArticle
File
- tests/src/ Kernel/ Plugin/ Field/ FieldFormatter/ VideoFormatterTest.php, line 55 
Class
- VideoFormatterTest
- Tests for the VideoFormatter.
Namespace
Drupal\Tests\fb_instant_articles\Kernel\Plugin\Field\FieldFormatterCode
public function testVideoFormatter() {
  $entity = EntityTest::create([]);
  // Handy method to populate the field with a real value.
  // @see FileItem::generateSampleValue()
  $entity->{$this->fieldName}
    ->generateSampleItems(2);
  /** @var \Drupal\fb_instant_articles\Plugin\Field\InstantArticleFormatterInterface $formatter */
  $formatter = $this->display
    ->getRenderer($this->fieldName);
  $article = InstantArticle::create();
  $formatter
    ->viewInstantArticle($entity->{$this->fieldName}, $article, Regions::REGION_HEADER, $this->normalizerMock);
  // Assert that a cover video was added.
  $video = $article
    ->getHeader()
    ->getCover();
  $this
    ->assertTrue($video instanceof Video);
  // Assert default settings for the video field formatter.
  $this
    ->assertNull($video
    ->getPresentation());
  $this
    ->assertFalse($video
    ->isControlsShown());
  $this
    ->assertTrue($video
    ->isAutoplay());
  // Test config with everything inverted.
  $this->display
    ->setComponent($this->fieldName, [
    'type' => 'fbia_video',
    'settings' => [
      'presentation' => Video::ASPECT_FIT,
      'controls' => TRUE,
      'autoplay' => FALSE,
      'feed_cover' => TRUE,
    ],
  ]);
  $this->display
    ->save();
  /** @var \Drupal\fb_instant_articles\Plugin\Field\InstantArticleFormatterInterface $formatter */
  $formatter = $this->display
    ->getRenderer($this->fieldName);
  $article = InstantArticle::create();
  $formatter
    ->viewInstantArticle($entity->{$this->fieldName}, $article, Regions::REGION_HEADER, $this->normalizerMock);
  // Assert that a cover video was added.
  $video = $article
    ->getHeader()
    ->getCover();
  $this
    ->assertTrue($video instanceof Video);
  // Assert settings are reflected in the output.
  $this
    ->assertEquals(Video::ASPECT_FIT, $video
    ->getPresentation());
  $this
    ->assertTrue($video
    ->isControlsShown());
  $this
    ->assertFalse($video
    ->isAutoplay());
  // Test adding the video to the body.
  $article = InstantArticle::create();
  $formatter
    ->viewInstantArticle($entity->{$this->fieldName}, $article, Regions::REGION_CONTENT, $this->normalizerMock);
  $children = $article
    ->getChildren();
  $this
    ->assertEquals(2, count($children));
  $this
    ->assertTrue($children[0] instanceof Video);
}