gatsby_endpoints-8.x-1.0-alpha1/tests/src/Functional/EndpointsNodeTest.php

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

namespace Drupal\Tests\gatsby_endpoints\Functional;

use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\Tests\BrowserTestBase;
use Drupal\gatsby_endpoints\Entity\GatsbyEndpoint;
use Drupal\Tests\node\Traits\ContentTypeCreationTrait;

/**
 * Defines a test for the creation of nodes with endpoints enabled.
 *
 * @group gatsby_endpoints
 *
 * @requires module jsonapi_extras
 */
class EndpointsNodeTest extends BrowserTestBase {

  use ContentTypeCreationTrait;

  /**
   * {@inheritdoc}
   *
   * @todo Remove this in https://www.drupal.org/project/gatsby/issues/3198673
   */
  protected $strictConfigSchema = FALSE;

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

  /**
   * A user with permission to bypass content access checks.
   *
   * @var \Drupal\user\UserInterface
   */
  protected $adminUser;

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'gatsby_endpoints',
    'jsonapi_extras',
    'path_alias',
    'node',
    'field',
  ];

  /**
   * Tests the Endpoint creation.
   */
  public function testEndpointsNodeCreation() {
    $node_type = $this->drupalCreateContentType([
      'type' => 'article',
    ]);
    $node_type->setThirdPartySetting('gatsby', 'iframe', TRUE);
    $node_type->setThirdPartySetting('gatsby', 'preview', TRUE);
    $node_type->setThirdPartySetting('gatsby', 'target', 'window');
    $node_type->save();

    $this->drupalLogin($this->drupalCreateUser([
      'access content',
      'edit any article content',
    ]));
    FieldStorageConfig::create([
      'field_name' => 'endpoint',
      'entity_type' => 'node',
      'type' => 'gatsby_endpoint_reference',
    ])->save();

    FieldConfig::create([
      'field_name' => 'endpoint',
      'entity_type' => 'node',
      'type' => 'gatsby_endpoint_reference',
      'bundle' => 'article',
    ])->save();

    $endpoint_id = $this->randomMachineName();
    $endpoint = GatsbyEndpoint::create([
      'id' => $endpoint_id,
      'plugin' => 'jsonapi',
      'preview_urls' => [
        'preview_url' => ['http://example.com'],
      ],
      'build_urls' => [
        'build_url' => ['http://example.com'],
      ],
      'settings' => [],
      'build_entity_types' => [
        [
          'entity_type' => 'node',
          'entity_bundles' => ['article' => 'article'],
          'include_entities' => ['node' => 'node'],
        ],
      ],
      'included_entity_types' => [],
    ]);
    $endpoint->save();

    $article = $this->drupalCreateNode([
      'type' => 'article',
      'title' => $this->randomMachineName(),
      'status' => 1,
      'endpoint' => ['target_id' => $endpoint_id],
    ]);
    $assert = $this->assertSession();
    $this->drupalGet($article->toUrl('edit-form'));
    $assert->statusCodeEquals(200);
    $assert->buttonExists('Open Gatsby Preview');

    $this->drupalGet($article->toUrl());
    $assert->statusCodeEquals(200);
    $assert->elementExists('css', '.gatsby-iframe-container');
  }

}

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

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