fb_instant_articles-8.x-2.2/tests/src/Functional/ViewModeToggleTest.php

tests/src/Functional/ViewModeToggleTest.php
<?php

namespace Drupal\Tests\fb_instant_articles\Functional;

use Drupal\Component\Utility\Unicode;
use Drupal\Core\Url;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\Tests\BrowserTestBase;

/**
 * Tests the view mode toggle functionality.
 *
 * @group fb_instant_articles
 */
class ViewModeToggleTest extends BrowserTestBase {

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'fb_instant_articles',
    'node',
    'field_ui',
  ];

  /**
   * Permissions to grant admin user.
   *
   * @var array
   */
  protected $permissions = [
    'access administration pages',
    'administer content types',
    'administer display modes',
    'administer node display',
    'administer site configuration',
    'administer fb_instant_articles',
  ];

  /**
   * An user with administration permissions.
   *
   * @var \Drupal\user\UserInterface
   */
  protected $adminUser;

  /**
   * Name of a test field.
   *
   * @var string
   */
  protected $testField;

  /**
   * Default theme used in tests.
   *
   * @var string
   */
  protected $defaultTheme = 'stark';

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    // Create Article node type.
    $this->createContentType([
      'type' => 'article',
      'name' => 'Article',
    ]);

    // Create a field storage with settings to validate.
    $this->testField = mb_strtolower($this->randomMachineName());
    $field_storage = FieldStorageConfig::create([
      'field_name' => $this->testField,
      'entity_type' => 'node',
      'type' => 'string',
    ]);
    $field_storage->save();

    $field = FieldConfig::create([
      'field_storage' => $field_storage,
      'bundle' => 'article',
    ]);
    $field->save();
  }

  /**
   * Test the FBIA view mode toggle.
   */
  public function testFbiaViewModeToggle() {

    // Login as an admin user.
    $this->adminUser = $this->drupalCreateUser($this->permissions);
    $this->drupalLogin($this->adminUser);

    // Check that the FBIA view mode is available.
    $view_modes_url = Url::fromRoute('entity.entity_view_mode.collection')->toString();
    $this->drupalGet($view_modes_url);
    $this->assertSession()->statusCodeEquals(200);
    $this->assertSession()->pageTextContains('Facebook Instant Articles');

    // Enable FBIA display on article content.
    $article_url = Url::fromRoute('entity.node_type.edit_form', ['node_type' => 'article'])->toString();
    $this->drupalGet($article_url);
    $this->assertSession()->statusCodeEquals(200);
    $edit = ['fb_instant_articles_enabled' => '1'];
    $this->submitForm($edit, t('Save content type'));

    // Check that the FBIA view mode has been turned on.
    $article_display_url = Url::fromRoute('entity.entity_view_display.node.default', ['node_type' => 'article'])->toString();
    $this->drupalGet($article_display_url);
    $this->assertSession()->statusCodeEquals(200);
    $this->assertSession()->checkboxChecked('edit-display-modes-custom-fb-instant-articles');

    // Check that the additional regions show up on the Manage Display UI.
    $article_display_url = Url::fromRoute('entity.entity_view_display.node.view_mode', [
      'node_type' => 'article',
      'view_mode_name' => 'fb_instant_articles',
    ])->toString();
    $this->drupalGet($article_display_url);
    $this->assertSession()->statusCodeEquals(200);
    $this->assertSession()->pageTextContains('Header');
    $this->assertSession()->pageTextContains('Body');
    $this->assertSession()->pageTextContains('Footer');
    $this->assertSession()->pageTextContains('No fields are displayed in this region.');
    $edit = ['fields[' . $this->testField . '][region]' => 'content'];
    $this->submitForm($edit, t('Save'));
    $this->assertSession()->fieldValueEquals('fields[' . $this->testField . '][region]', 'content');

    // Disable the FBIA view mode.
    $article_url = Url::fromRoute('entity.node_type.edit_form', ['node_type' => 'article'])->toString();
    $this->drupalGet($article_url);
    $this->assertSession()->statusCodeEquals(200);
    $edit = ['fb_instant_articles_enabled' => '0'];
    $this->submitForm($edit, t('Save content type'));

    // Check that the FBIA view mode has been turned off.
    $article_display_url = Url::fromRoute('entity.entity_view_display.node.default', ['node_type' => 'article'])->toString();
    $this->drupalGet($article_display_url);
    $this->assertSession()->statusCodeEquals(200);
    $this->assertSession()->checkboxNotChecked('edit-display-modes-custom-fb-instant-articles');
  }

}

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

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