You are here

PhpFileLibraryTest.php in Libraries API 8.3

File

tests/src/Kernel/ExternalLibrary/PhpFile/PhpFileLibraryTest.php
View source
<?php

namespace Drupal\Tests\libraries\Kernel\ExternalLibrary\PhpFile;

use Drupal\Tests\libraries\Kernel\ExternalLibrary\TestLibraryFilesStream;
use Drupal\Tests\libraries\Kernel\LibraryTypeKernelTestBase;

/**
 * Tests that the external library manager properly loads PHP file libraries.
 *
 * @group libraries
 */
class PhpFileLibraryTest extends LibraryTypeKernelTestBase {

  /**
   * {@inheritdoc}
   */
  protected function setUp() {
    parent::setUp();
    $this->container
      ->set('stream_wrapper.php_file_libraries', new TestLibraryFilesStream($this->container
      ->get('module_handler'), $this->container
      ->get('string_translation'), 'libraries'));
  }

  /**
   * {@inheritdoc}
   */
  protected function getLibraryTypeId() {
    return 'php_file';
  }

  /**
   * Tests that the list of PHP files is correctly gathered.
   */
  public function testPhpFileInfo() {

    /** @var \Drupal\libraries\ExternalLibrary\PhpFile\PhpFileLibrary $library */
    $library = $this
      ->getLibrary();
    $this
      ->assertTrue($library
      ->isInstalled());
    $library_path = $this->modulePath . '/tests/libraries/test_php_file_library';
    $this
      ->assertEquals($library_path, $library
      ->getLocalPath());
    $this
      ->assertEquals([
      "{$library_path}/test_php_file_library.php",
    ], $library
      ->getPhpFiles());
  }

  /**
   * Tests that the external library manager properly loads PHP files.
   *
   * @see \Drupal\libraries\ExternalLibrary\ExternalLibraryManager
   * @see \Drupal\libraries\ExternalLibrary\ExternalLibraryTrait
   * @see \Drupal\libraries\ExternalLibrary\PhpFile\PhpRequireLoader
   */
  public function testFileLoading() {
    $function_name = '_libraries_test_php_function';
    if (function_exists($function_name)) {
      $this
        ->markTestSkipped('Cannot test file inclusion if the file to be included has already been included prior.');
      return;
    }
    $this
      ->assertFalse(function_exists($function_name));
    $this->libraryManager
      ->load('test_php_file_library');
    $this
      ->assertTrue(function_exists($function_name));
  }

}

Classes

Namesort descending Description
PhpFileLibraryTest Tests that the external library manager properly loads PHP file libraries.