You are here

SchedulerMetaInformationTest.php in Scheduler 2.x

Same filename and directory in other branches
  1. 8 tests/src/Functional/SchedulerMetaInformationTest.php

File

tests/src/Functional/SchedulerMetaInformationTest.php
View source
<?php

namespace Drupal\Tests\scheduler\Functional;


/**
 * Tests meta information output by scheduler.
 *
 * @group scheduler
 */
class SchedulerMetaInformationTest extends SchedulerBrowserTestBase {

  /**
   * Tests meta-information on scheduled entities.
   *
   * When an entity is scheduled for unpublication, an X-Robots-Tag HTTP header
   * is included, telling crawlers about when an item will expire and should be
   * removed from search results.
   *
   * @dataProvider dataStandardEntityTypes()
   */
  public function testMetaInformation($entityTypeId, $bundle) {

    // Log in.
    $this
      ->drupalLogin($this->schedulerUser);

    // Create a published entity without scheduling dates.
    $entity = $this
      ->createEntity($entityTypeId, $bundle, [
      'status' => TRUE,
    ]);

    // Since we did not set an unpublish date, there should be no X-Robots-Tag
    // header on the response.
    $this
      ->drupalGet($entity
      ->toUrl());
    $this
      ->assertNull($this
      ->getSession()
      ->getResponseHeader('X-Robots-Tag'), 'X-Robots-Tag should not be present when no unpublish date is set.');

    // Also check that there is no meta tag.
    $this
      ->assertSession()
      ->responseNotContains('unavailable_after:');

    // Set an unpublish date on the entity.
    $unpublish_date = strtotime('+1 day');
    $entity
      ->set('unpublish_on', $unpublish_date)
      ->save();

    // The entity full page view should now have an X-Robots-Tag header with an
    // unavailable_after-directive and RFC850 date- and time-value.
    $this
      ->drupalGet($entity
      ->toUrl());
    $this
      ->assertSession()
      ->responseHeaderEquals('X-Robots-Tag', 'unavailable_after: ' . date(DATE_RFC850, $unpublish_date));

    // Check that the required meta tag is added to the html head section.
    $this
      ->assertSession()
      ->responseMatches('~meta name=[\'"]robots[\'"] content=[\'"]unavailable_after: ' . date(DATE_RFC850, $unpublish_date) . '[\'"]~');

    // If the entity type has a summary listing page, check that the entity is
    // shown but the two tags are not present.
    if ($this
      ->drupalGet("{$entityTypeId}") && $this
      ->getSession()
      ->getStatusCode() == '200') {
      $this
        ->assertSession()
        ->pageTextContains($entity
        ->label());
      $this
        ->assertNull($this
        ->getSession()
        ->getResponseHeader('X-Robots-Tag'), 'X-Robots-Tag should not be added when entity is not in "full" view mode.');
      $this
        ->assertSession()
        ->responseNotContains('unavailable_after:');
    }
  }

}

Classes

Namesort descending Description
SchedulerMetaInformationTest Tests meta information output by scheduler.