media_mpx-8.x-1.x-dev/tests/src/FunctionalJavascript/FieldMapTest.php

tests/src/FunctionalJavascript/FieldMapTest.php
<?php

namespace Drupal\Tests\media_mpx\FunctionalJavascript;

use Drupal\FunctionalJavascriptTests\DrupalSelenium2Driver;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
use Drupal\media\Entity\MediaType;
use Drupal\media_mpx\Entity\Account;
use Drupal\media_mpx\Entity\User;
use Drupal\media_mpx_test\JsonResponse;

/**
 * Tests mapping a custom mpx field to a Drupal field.
 *
 * @group media_mpx
 */
class FieldMapTest extends WebDriverTestBase {

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';

  /**
   * {@inheritdoc}
   */
  protected $minkDefaultDriverClass = DrupalSelenium2Driver::class;

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'media_mpx',
    'media_mpx_test',
    'field_ui',
  ];

  /**
   * Tests mapping a custom field.
   *
   * This test:
   *   - Relies on a custom field defined in media_mpx_test.
   *   - Validates the UI for mapping a custom field.
   *   - Validates saving an mpx media entity and that the field is visible.
   */
  public function testMapCustomField() {
    $this->container->get('config.factory')
      ->getEditable('media.settings')
      ->set('standalone_url', TRUE)
      ->save(TRUE);
    $this->container->get('router.builder')->rebuild();

    /** @var \Drupal\media_mpx_test\MockClientFactory $factory */
    $factory = $this->container->get('media_mpx.client_factory');
    $factory->getMockHandler()->append([
      new JsonResponse(200, [], 'signin-success.json'),
      new JsonResponse(200, [], 'media-object.json'),
    ]);

    $user = User::create([
      'label' => 'JavaScript test user',
      'id' => 'mpx_testing_example_com',
      'username' => 'mpx/testing@example.com',
      'password' => 'SECRET',
    ]);
    $user->save();
    $account = Account::create([
      'label' => 'JavaScript test account',
      'id' => 'mpx_account',
      'user' => $user->id(),
      'account' => 'http://example.com/account/1',
      'public_id' => 'public-id',
    ]);
    $account->save();

    /** @var \Drupal\media\MediaTypeInterface $media_type */
    $media_type = MediaType::create([
      'id' => 'mpx',
      'label' => 'mpx media type',
      'source' => 'media_mpx_media',
    ]);
    $media_type->save();
    $source_field = $media_type->getSource()->createSourceField($media_type);
    $source_field->getFieldStorageDefinition()->save();
    $source_field->save();

    // This saves us having to mock thumbnail http requests.
    $media_type->setQueueThumbnailDownloadsStatus(TRUE);
    $media_type
      ->set('source_configuration', [
        'source_field' => $source_field->getName(),
        'account' => $account->id(),
      ])
      ->save();

    // Add the new field to the default form and view displays for this
    // media type.
    if ($source_field->isDisplayConfigurable('form')) {
      $display = $this->container->get('entity_display.repository')->getFormDisplay('media', $media_type->id(), 'default');
      $media_type->getSource()->prepareFormDisplay($media_type, $display);
      $display->save();
    }
    if ($source_field->isDisplayConfigurable('view')) {
      $display = $this->container->get('entity_display.repository')->getViewDisplay('media', $media_type->id(), 'default');
      $media_type->getSource()->prepareViewDisplay($media_type, $display);
      $display->save();
    }

    $storage = $this->container->get('entity_type.manager')
      ->getStorage('field_storage_config')
      ->create([
        'entity_type' => 'media',
        'field_name' => 'field_description',
        'type' => 'string_long',
      ]);
    $storage->save();
    $series = $this->container->get('entity_type.manager')
      ->getStorage('field_config')
      ->create([
        'field_storage' => $storage,
        'bundle' => 'mpx',
        'label' => 'Description',
        'required' => FALSE,
      ]);
    $series->save();

    $display = $this->container->get('entity_display.repository')->getViewDisplay('media', $media_type->id(), 'default');
    $display->setComponent('field_description');
    $display->save();

    $this->drupalLogin($this->rootUser);

    $this->drupalGet('admin/structure/media/manage/mpx');
    $this->getSession()->getPage()->selectFieldOption('Media description: A description of this content.', 'field_description');
    $this->click('#edit-submit');
    $this->drupalGet('/media/add/mpx');
    $this->getSession()->getPage()->fillField('Name', $this->randomString());
    $this->getSession()->getPage()->fillField('mpx Media', 'http://data.media.theplatform.com/media/data/Media/2602559');
    $this->click('#edit-submit');
    $this->drupalGet('/media/1');

    $this->assertSession()->responseContains("Our CEO Ian Blaine discusses a bit of thePlatform's history");
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc