You are here

LibrariesAdminWebTest.test in Libraries API 7.2

Contains LibrariesAdminWebTest.

Simpletest automatically discovers test files using PSR-4. We cannot, however, declare a namespace for this class, as that would require PHP 5.3. To prepare the PHP 5.3 requirement and the usage of PSR-4 in 7.x-3.x, we split each test class into its own file and use the correct base name, but for now use the 'test' extension and register them explicitly in libraries.info.

File

tests/LibrariesAdminWebTest.test
View source
<?php

/**
 * @file
 * Contains LibrariesAdminWebTest.
 *
 * Simpletest automatically discovers test files using PSR-4. We cannot,
 * however, declare a namespace for this class, as that would require PHP 5.3.
 * To prepare the PHP 5.3 requirement and the usage of PSR-4 in 7.x-3.x, we
 * split each test class into its own file and use the correct base name, but
 * for now use the 'test' extension and register them explicitly in
 * libraries.info.
 *
 * @see simpletest_test_get_all()
 */

/**
 * Tests the administrative interface for libraries.
 */
class LibrariesAdminWebTest extends LibrariesWebTestBase {

  /**
   * Provides metadata about this test.
   *
   * @return array
   *   An array of test metadata with the following keys:
   *   - name: The name of the test.
   *   - description: The description of the test.
   *   - group: The group of the test.
   */
  public static function getInfo() {
    return array(
      'name' => 'Libraries administration',
      'description' => 'Tests the administrative interface for libraries.',
      'group' => 'Libraries API',
    );
  }

  /**
   * Tests the libraries report at /admin/reports/libraries.
   */
  public function testLibrariesReportOverview() {
    $this
      ->getWithPermissions(array(
      'access library reports',
    ), 'admin/reports/libraries');

    // Assert the page title and table titles show up.
    $this
      ->assertText('Libraries');
    $this
      ->assertRaw('<h2>Installed</h2>');
    $this
      ->assertRaw('<h2>Uninstalled</h2>');

    // Make sure the table headings show up.
    $this
      ->assertText('Name');
    $this
      ->assertText('Status');
    $this
      ->assertText('Version');
    $this
      ->assertText('Variants');
    $this
      ->assertText('Dependencies');
    $this
      ->assertText('Provider');
    $this
      ->assertText('Links');

    // Make sure that all the libraries are listed.
    $libraries = libraries_info();
    $this
      ->assertTrue($libraries);
    foreach ($libraries as $library) {
      $this
        ->assertText($library['name']);
      $this
        ->assertLinkByHref('admin/reports/libraries/' . $library['machine name']);
    }

    // Make sure that all possible error statuses are displayed.
    $this
      ->assertText('Not found');
    $this
      ->assertText('Not detected');
    $this
      ->assertText('Not supported');
    $this
      ->assertText('Missing dependency');
    $this
      ->assertText('Incompatible dependency');

    // Make sure that the providers are displayed.
    $this
      ->assertRaw('<em class="placeholder">Libraries test module</em> module');
    $this
      ->assertRaw('<em class="placeholder">Libraries test theme</em> theme');
    $this
      ->assertRaw('<em class="placeholder">example_info_file.libraries.info</em> info file');

    // Make sure that homepage and download links are displayed.
    $this
      ->assertLinkByHref('http://example.com');
    $this
      ->assertLinkByHref('http://example.com/download');
  }

  /**
   * Tests the libraries report for an installed library.
   */
  public function testLibrariesReportInstalled() {
    $this
      ->getWithPermissions(array(
      'access library reports',
    ), 'admin/reports/libraries/example_files');
    $this
      ->assertRaw('Status report for library <em class="placeholder">Example files</em>');
    $this
      ->assertRaw('The <em class="placeholder">Example files</em> library is installed correctly.');

    // Check that the information in the status report is displayed.
    $this
      ->assertText('Example files');
    $this
      ->assertText('example_files');
    $this
      ->assertRaw('<em class="placeholder">Libraries test module</em> module');
    $this
      ->assertText(drupal_get_path('module', 'libraries') . '/tests/libraries/example');
    $this
      ->assertText('1');
  }

  /**
   * Tests the libraries report for a missing library.
   */
  public function testLibrariesReportMissing() {
    $this
      ->getWithPermissions(array(
      'access library reports',
    ), 'admin/reports/libraries/example_missing');
    $this
      ->assertRaw('Status report for library <em class="placeholder">Example missing</em>');
    $this
      ->assertRaw('The <em class="placeholder">Example missing</em> library could not be found.');

    // Check that the download link is being displayed.
    $this
      ->assertLinkByHref('http://example.com/download');
  }

  /**
   * Tests the libraries report for a missing library.
   */
  public function testLibrariesReportNotDetected() {
    $this
      ->getWithPermissions(array(
      'access library reports',
    ), 'admin/reports/libraries/example_undetected_version');
    $this
      ->assertRaw('Status report for library <em class="placeholder">Example undetected version</em>');
    $this
      ->assertRaw('The version of the <em class="placeholder">Example undetected version</em> library could not be detected.');
  }

  /**
   * Tests the libraries report for a missing library.
   */
  public function testLibrariesReportNotSupported() {
    $this
      ->getWithPermissions(array(
      'access library reports',
    ), 'admin/reports/libraries/example_unsupported_version');
    $this
      ->assertRaw('Status report for library <em class="placeholder">Example unsupported version</em>');
    $this
      ->assertRaw('The installed version <em class="placeholder">1</em> of the <em class="placeholder">Example unsupported version</em> library is not supported.');

    // Check that the download link is being displayed.
    $this
      ->assertLinkByHref('http://example.com/download');
  }

}

Classes

Namesort descending Description
LibrariesAdminWebTest Tests the administrative interface for libraries.