public function SchedulerMetaInformationTest::testMetaInformation in Scheduler 2.x
Same name and namespace in other branches
- 8 tests/src/Functional/SchedulerMetaInformationTest.php \Drupal\Tests\scheduler\Functional\SchedulerMetaInformationTest::testMetaInformation()
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()
File
- tests/
src/ Functional/ SchedulerMetaInformationTest.php, line 21
Class
- SchedulerMetaInformationTest
- Tests meta information output by scheduler.
Namespace
Drupal\Tests\scheduler\FunctionalCode
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:');
}
}