You are here

public function WidgetTest::testVideoEmbedFieldDefaultWidget in Video Embed Field 8

Same name and namespace in other branches
  1. 8.2 tests/src/Functional/WidgetTest.php \Drupal\Tests\video_embed_field\Functional\WidgetTest::testVideoEmbedFieldDefaultWidget()

Test the input widget.

File

tests/src/Functional/WidgetTest.php, line 30

Class

WidgetTest
Test the video embed field widget.

Namespace

Drupal\Tests\video_embed_field\Functional

Code

public function testVideoEmbedFieldDefaultWidget() {
  $this
    ->setupEntityDisplays();
  $this
    ->setFormComponentSettings('video_embed_field_textfield');
  $this
    ->drupalLogin($this
    ->createAdminUser());
  $node_title = $this
    ->randomMachineName();

  // Test an invalid input.
  $this
    ->drupalGet(Url::fromRoute('node.add', [
    'node_type' => $this->contentTypeName,
  ])
    ->toString());
  $this
    ->submitForm([
    'title[0][value]' => $node_title,
    $this->fieldName . '[0][value]' => 'Some useless value.',
  ], t('Save'));
  $this
    ->assertSession()
    ->pageTextContains('Could not find a video provider to handle the given URL.');

  // Test a valid input.
  $valid_input = 'https://vimeo.com/80896303';
  $this
    ->submitForm([
    $this->fieldName . '[0][value]' => $valid_input,
  ], t('Save'));
  $this
    ->assertSession()
    ->pageTextContains(sprintf('%s %s has been created.', $this->contentTypeName, $node_title));

  // Load the saved node and assert the valid value was saved into the field.
  $nodes = \Drupal::entityTypeManager()
    ->getStorage('node')
    ->loadByProperties([
    'title' => $node_title,
  ]);
  $node = array_shift($nodes);
  $this
    ->assertEquals($node->{$this->fieldName}[0]->value, $valid_input);
}