lazyloader-8.x-1.x-dev/src/tests/TestBase.php

src/tests/TestBase.php
<?php

namespace Drupal\lazyloader\Tests;

use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\file\Entity\File;
use Drupal\Tests\BrowserTestBase;

/**
 * Test case for typical lazyloader tests.
 */
abstract class TestBase extends BrowserTestBase {

  /**
   * The user.
   *
   * @var \Drupal\user\UserInterface
   */
  protected $user;

  /**
   * The node.
   *
   * @var \Drupal\node\Entity\Node
   */
  protected $node;

  /**
   * {@inheritdoc}
   */
  public static $modules = ['image', 'lazyloader', 'path', 'node', 'field'];

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

    $this->createContentType([
      'type' => 'page',
    ]);

    $user = $this->drupalCreateUser([
      'create page content',
      'edit own page content',
      'administer lazyloader',
      'administer url aliases',
      'create url aliases',
    ]);
    $this->drupalLogin($user);

    // Add unlimited image field.
    $field_storage = FieldStorageConfig::create([
      'type' => 'image',
      'field_name' => 'field_images',
      'cardinality' => -1,
      'entity_type' => 'node',
    ]);
    $field_storage->save();

    $field = FieldConfig::create([
      'field_name' => 'field_images',
      'entity_type' => 'node',
      'bundle' => 'page',
    ]);
    $field->save();

    /** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display */
    $display = \Drupal::service('entity_display.repository')->getViewDisplay('node', 'page', 'full');
    $display->setComponent('field_images', [
      'type' => 'image',
      'settings' => [
        'image_style' => 'medium',
      ],
    ]);
    $display->save();

    $images = $this->drupalGetTestFiles('image');
    foreach ($images as $key => $image) {
      $file = File::create((array) $image);
      $file->save();
      $images[$key] = $file->id();
    }

    $settings = [
      'type' => 'page',
      'field_images' => $images,
      'path' => [
        'alias' => '/' . $this->randomMachineName(),
      ],
    ];

    $this->node = $this->drupalCreateNode($settings);
  }

  /**
   * Asserts if Lazyloader is enabled on the page.
   *
   * @param bool $enabled
   *   Whether or not lazyloader should be enabled.
   * @param string $message
   *   The message.
   */
  protected function assertLazyloaderEnabled($enabled = TRUE, $message = '') {
    if ($message === '') {
      $message = $enabled ? 'Lazyloader is enabled' : 'Lazyloader is disabled';
    }
    $image_count = count($this->node->field_images[$this->node->language]);
    $images = $this->xpath('//img[@data-echo]');

    if ($enabled) {
      $this->assertEquals(count($images), $image_count, $message);
    }
    else {
      $this->assertFalse(count($images), $message);
    }
  }

}

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

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