class SchedulerHooksLegacyTest in Scheduler 2.x
Tests the legacy API hook functions of the Scheduler module.
This class covers the eight original hook functions for node entity types only. These are maintained for backwards-compatibility.
@group scheduler
Hierarchy
- class \Drupal\Tests\BrowserTestBase extends \PHPUnit\Framework\TestCase uses \Symfony\Bridge\PhpUnit\ExpectDeprecationTrait, FunctionalTestSetupTrait, TestSetupTrait, AssertLegacyTrait, BlockCreationTrait, ConfigTestTrait, ExtensionListTestTrait, ContentTypeCreationTrait, NodeCreationTrait, PhpUnitCompatibilityTrait, RandomGeneratorTrait, TestRequirementsTrait, PhpUnitWarnings, UiHelperTrait, UserCreationTrait, XdebugRequestTrait
- class \Drupal\Tests\scheduler\Functional\SchedulerBrowserTestBase uses SchedulerCommerceProductSetupTrait, SchedulerMediaSetupTrait, SchedulerSetupTrait
- class \Drupal\Tests\scheduler\Functional\SchedulerHooksLegacyTest
- class \Drupal\Tests\scheduler\Functional\SchedulerBrowserTestBase uses SchedulerCommerceProductSetupTrait, SchedulerMediaSetupTrait, SchedulerSetupTrait
Expanded class hierarchy of SchedulerHooksLegacyTest
File
- tests/
src/ Functional/ SchedulerHooksLegacyTest.php, line 15
Namespace
Drupal\Tests\scheduler\FunctionalView source
class SchedulerHooksLegacyTest extends SchedulerBrowserTestBase {
/**
* Additional modules required.
*
* @var array
*/
protected static $modules = [
'scheduler_api_test',
'scheduler_api_legacy_test',
'menu_ui',
'path',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
// Load the custom node type. It will be enabled for Scheduler automatically
// as that is pre-configured in node.type.scheduler_api_test.yml.
$this->customName = 'scheduler_api_node_test';
$this->customNodetype = NodeType::load($this->customName);
// Check that the custom node type has loaded OK.
$this
->assertNotNull($this->customNodetype, 'Custom node type "' . $this->customName . '" was created during install');
// Create a web user that has permission to create and edit and schedule
// the custom entity type.
$this->webUser = $this
->drupalCreateUser([
'create ' . $this->customName . ' content',
'edit any ' . $this->customName . ' content',
'schedule publishing of nodes',
]);
$this->webUser
->set('name', 'Wenlock the Web user')
->save();
}
/**
* Covers hook_scheduler_nid_list($action)
*
* Hook_scheduler_nid_list() allows other modules to add more node ids into
* the list to be processed. In real scenarios, the third-party module would
* likely have more complex data structures and/or tables from which to
* identify nodes to add. In this test, to keep it simple, we identify nodes
* by the text of the title.
*/
public function testNidList() {
$this
->drupalLogin($this->schedulerUser);
// Create test nodes. Use the ordinary page type for this test, as having
// the 'approved' fields here would unnecessarily complicate the processing.
// Node 1 is not published and has no publishing date set. The test API
// module will add node 1 into the list to be published.
$node1 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => FALSE,
'title' => 'API TEST nid_list publish me',
]);
// Node 2 is published and has no unpublishing date set. The test API module
// will add node 2 into the list to be unpublished.
$node2 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => TRUE,
'title' => 'API TEST nid_list unpublish me',
]);
// Before cron, check node 1 is unpublished and node 2 is published.
$this
->assertFalse($node1
->isPublished(), 'Before cron, node 1 "' . $node1->title->value . '" is unpublished.');
$this
->assertTrue($node2
->isPublished(), 'Before cron, node 2 "' . $node2->title->value . '" is published.');
// Run cron and refresh the nodes.
scheduler_cron();
$this->nodeStorage
->resetCache();
$node1 = $this->nodeStorage
->load($node1
->id());
$node2 = $this->nodeStorage
->load($node2
->id());
// Check node 1 is published and node 2 is unpublished.
$this
->assertTrue($node1
->isPublished(), 'After cron, node 1 "' . $node1->title->value . '" is published.');
$this
->assertFalse($node2
->isPublished(), 'After cron, node 2 "' . $node2->title->value . '" is unpublished.');
}
/**
* Covers hook_scheduler_nid_list_alter($action)
*
* This hook allows other modules to add or remove node ids from the list to
* be processed. As in testNidList() we make it simple by using the title text
* to identify which nodes to act on.
*/
public function testNidListAlter() {
$this
->drupalLogin($this->schedulerUser);
// Create test nodes. Use the ordinary page type for this test, as having
// the 'approved' fields here would unnecessarily complicate the processing.
// Node 1 is set for scheduled publishing, but will be removed by the test
// API hook_nid_list_alter().
$node1 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => FALSE,
'title' => 'API TEST nid_list_alter do not publish me',
'publish_on' => strtotime('-1 day'),
]);
// Node 2 is not published and has no publishing date set. The test API
// module will add node 2 into the list to be published.
$node2 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => FALSE,
'title' => 'API TEST nid_list_alter publish me',
]);
// Node 3 is set for scheduled unpublishing, but will be removed by the test
// API hook_nid_list_alter().
$node3 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => TRUE,
'title' => 'API TEST nid_list_alter do not unpublish me',
'unpublish_on' => strtotime('-1 day'),
]);
// Node 4 is published and has no unpublishing date set. The test API module
// will add node 4 into the list to be unpublished.
$node4 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => TRUE,
'title' => 'API TEST nid_list_alter unpublish me',
]);
// Check node 1 and 2 are unpublished and node 3 and 4 are published.
$this
->assertFalse($node1
->isPublished(), 'Before cron, node 1 "' . $node1->title->value . '" is unpublished.');
$this
->assertFalse($node2
->isPublished(), 'Before cron, node 2 "' . $node2->title->value . '" is unpublished.');
$this
->assertTrue($node3
->isPublished(), 'Before cron, node 3 "' . $node3->title->value . '" is published.');
$this
->assertTrue($node4
->isPublished(), 'Before cron, node 4 "' . $node4->title->value . '" is published.');
// Run cron and refresh the nodes.
scheduler_cron();
$this->nodeStorage
->resetCache();
$node1 = $this->nodeStorage
->load($node1
->id());
$node2 = $this->nodeStorage
->load($node2
->id());
$node3 = $this->nodeStorage
->load($node3
->id());
$node4 = $this->nodeStorage
->load($node4
->id());
// Check node 2 and 3 are published and node 1 and 4 are unpublished.
$this
->assertFalse($node1
->isPublished(), 'After cron, node 1 "' . $node1->title->value . '" is still unpublished.');
$this
->assertTrue($node2
->isPublished(), 'After cron, node 2 "' . $node2->title->value . '" is published.');
$this
->assertTrue($node3
->isPublished(), 'After cron, node 3 "' . $node3->title->value . '" is still published.');
$this
->assertFalse($node4
->isPublished(), 'After cron, node 4 "' . $node4->title->value . '" is unpublished.');
}
/**
* Covers hook_scheduler_allow_publishing()
*
* This hook can allow or deny the publishing of individual nodes. This test
* uses the customised content type which has checkboxes 'Approved for
* publication' and 'Approved for unpublication'.
*/
public function testAllowedPublishing() {
$this
->drupalLogin($this->webUser);
// Check the 'approved for publishing' field is shown on the node form.
$this
->drupalGet('node/add/' . $this->customName);
$this
->assertSession()
->fieldExists('edit-field-approved-publishing-value');
// Check that the message is shown when scheduling a node for publishing
// which is not yet allowed to be published.
$edit = [
'title[0][value]' => 'Set publish-on date without approval',
'publish_on[0][value][date]' => date('Y-m-d', time() + 3),
'publish_on[0][value][time]' => date('H:i:s', time() + 3),
];
$this
->drupalGet("node/add/{$this->customName}");
$this
->submitForm($edit, 'Save');
$this
->assertSession()
->pageTextMatches('/is scheduled for publishing.* but will not be published until approved/');
// Create a node that is scheduled but not approved for publication. Then
// simulate a cron run, and check that the node is still not published.
$node = $this
->createUnapprovedNode('publish_on');
scheduler_cron();
$this->nodeStorage
->resetCache([
$node
->id(),
]);
$node = $this->nodeStorage
->load($node
->id());
$this
->assertFalse($node
->isPublished(), "Unapproved '{$node->label()}' should not be published during cron processing.");
// Create a node and approve it for publication, simulate a cron run and
// check that the node is published. This is a stronger test than simply
// approving the previously used node above, as we do not know what publish
// state that may be in after the cron run above.
$node = $this
->createUnapprovedNode('publish_on');
$this
->approveNode($node
->id(), 'field_approved_publishing');
$this
->assertFalse($node
->isPublished(), "New approved '{$node->label()}' should not be initially published.");
scheduler_cron();
$this->nodeStorage
->resetCache([
$node
->id(),
]);
$node = $this->nodeStorage
->load($node
->id());
$this
->assertTrue($node
->isPublished(), "Approved '{$node->label()}' should be published during cron processing.");
// Turn on immediate publication of nodes with publication dates in the past
// and repeat the tests. It is not needed to simulate cron runs here.
$this->customNodetype
->setThirdPartySetting('scheduler', 'publish_past_date', 'publish')
->save();
$node = $this
->createUnapprovedNode('publish_on');
$this
->assertFalse($node
->isPublished(), "New unapproved '{$node->label()}' with a date in the past should not be published immediately after saving.");
// Check that the node can be approved and published programatically.
$this
->approveNode($node
->id(), 'field_approved_publishing');
$this->nodeStorage
->resetCache([
$node
->id(),
]);
$node = $this->nodeStorage
->load($node
->id());
$this
->assertTrue($node
->isPublished(), "New approved '{$node->label()}' with a date in the past should be published immediately when created programatically.");
// Check that a node can be approved and published via edit form.
$node = $this
->createUnapprovedNode('publish_on');
$this
->drupalGet("node/{$node->id()}/edit");
$this
->submitForm([
'field_approved_publishing[value]' => '1',
], 'Save');
$this->nodeStorage
->resetCache([
$node
->id(),
]);
$node = $this->nodeStorage
->load($node
->id());
$this
->assertTrue($node
->isPublished(), "Approved '{$node->label()}' with a date in the past should be published immediately after saving via edit form.");
// Show the dblog messages.
$this
->drupalLogin($this->adminUser);
$this
->drupalGet('admin/reports/dblog');
}
/**
* Covers hook_scheduler_allow_unpublishing()
*
* This hook can allow or deny the unpublishing of individual nodes. This test
* is simpler than the test sequence for allowed publishing, because the past
* date 'publish' option is not applicable.
*/
public function testAllowedUnpublishing() {
$this
->drupalLogin($this->webUser);
// Check the 'approved for unpublishing' field is shown on the node form.
$this
->drupalGet('node/add/' . $this->customName);
$this
->assertSession()
->fieldExists('edit-field-approved-unpublishing-value');
// Check that the message is shown when scheduling a node for unpublishing
// which is not yet allowed to be unpublished.
$edit = [
'title[0][value]' => 'Set unpublish-on date without approval',
'unpublish_on[0][value][date]' => date('Y-m-d', time() + 3),
'unpublish_on[0][value][time]' => date('H:i:s', time() + 3),
];
$this
->drupalGet("node/add/{$this->customName}");
$this
->submitForm($edit, 'Save');
$this
->assertSession()
->pageTextMatches('/is scheduled for unpublishing.* but will not be unpublished until approved/');
// Create a node that is scheduled but not approved for unpublication. Then
// simulate a cron run, and check that the node is still published.
$node = $this
->createUnapprovedNode('unpublish_on');
scheduler_cron();
$this->nodeStorage
->resetCache([
$node
->id(),
]);
$node = $this->nodeStorage
->load($node
->id());
$this
->assertTrue($node
->isPublished(), "Unapproved '{$node->label()}' should not be unpublished during cron processing.");
// Create a node, then approve it for unpublishing, simulate a cron run and
// check that the node is now unpublished.
$node = $this
->createUnapprovedNode('unpublish_on');
$this
->approveNode($node
->id(), 'field_approved_unpublishing');
$this
->assertTrue($node
->isPublished(), "New approved '{$node->label()}' should initially remain published.");
scheduler_cron();
$this->nodeStorage
->resetCache([
$node
->id(),
]);
$node = $this->nodeStorage
->load($node
->id());
$this
->assertFalse($node
->isPublished(), "Approved '{$node->label()}' should be unpublished during cron processing.");
// Show the dblog messages.
$this
->drupalLogin($this->adminUser);
$this
->drupalGet('admin/reports/dblog');
}
/**
* Creates a new node that is not approved.
*
* The node has a publish/unpublish date in the past to make sure it will be
* included in the next cron run.
*
* @param string $date_field
* The Scheduler date field to set, either 'publish_on' or 'unpublish_on'.
*
* @return \Drupal\node\NodeInterface
* A node object.
*/
protected function createUnapprovedNode($date_field) {
$settings = [
'title' => ($date_field == 'publish_on' ? 'Blue' : 'Red') . " legacy node {$this->randomMachineName(10)}",
'status' => $date_field == 'unpublish_on',
$date_field => strtotime('-1 day'),
'field_approved_publishing' => 0,
'field_approved_unpublishing' => 0,
'type' => $this->customName,
];
return $this
->drupalCreateNode($settings);
}
/**
* Approves a node for publication or unpublication.
*
* @param int $nid
* The id of the node to approve.
* @param string $field_name
* The name of the field to set, either 'field_approved_publishing' or
* 'field_approved_unpublishing'.
*/
protected function approveNode($nid, $field_name) {
$this->nodeStorage
->resetCache([
$nid,
]);
$node = $this->nodeStorage
->load($nid);
$node
->set($field_name, TRUE);
$node
->set('title', $node
->label() . " - approved for publishing: {$node->field_approved_publishing->value}, for unpublishing: {$node->field_approved_unpublishing->value}")
->save();
}
/**
* Test the hooks which allow hiding of scheduler input fields.
*
* This covers hook_scheduler_hide_publish_on_field and
* hook_scheduler_hide_unpublish_on_field.
*/
public function testHideField() {
$this
->drupalLogin($this->schedulerUser);
// Create test nodes.
$node1 = $this
->drupalCreateNode([
'type' => $this->type,
'title' => 'Red Legacy will not have either field hidden',
]);
$node2 = $this
->drupalCreateNode([
'type' => $this->type,
'title' => 'Orange Legacy will have the publish-on field hidden',
]);
$node3 = $this
->drupalCreateNode([
'type' => $this->type,
'title' => 'Yellow Legacy will have the unpublish-on field hidden',
]);
$node4 = $this
->drupalCreateNode([
'type' => $this->type,
'title' => 'Green Legacy will have both Scheduler fields hidden',
]);
// Set the scheduler fieldset to always expand, for ease during development.
$this->nodetype
->setThirdPartySetting('scheduler', 'expand_fieldset', 'always')
->save();
/** @var \Drupal\Tests\WebAssert $assert */
$assert = $this
->assertSession();
// Node 1 'red' should have both fields displayed.
$this
->drupalGet('node/' . $node1
->id() . '/edit');
$assert
->ElementExists('xpath', '//input[@id = "edit-publish-on-0-value-date"]');
$assert
->ElementExists('xpath', '//input[@id = "edit-unpublish-on-0-value-date"]');
// Node 2 'orange' should have only the publish-on field hidden.
$this
->drupalGet('node/' . $node2
->id() . '/edit');
$assert
->ElementNotExists('xpath', '//input[@id = "edit-publish-on-0-value-date"]');
$assert
->ElementExists('xpath', '//input[@id = "edit-unpublish-on-0-value-date"]');
// Node 3 'yellow' should have only the unpublish-on field hidden.
$this
->drupalGet('node/' . $node3
->id() . '/edit');
$assert
->ElementExists('xpath', '//input[@id = "edit-publish-on-0-value-date"]');
$assert
->ElementNotExists('xpath', '//input[@id = "edit-unpublish-on-0-value-date"]');
// Node 4 'green' should have both publish-on and unpublish-on hidden.
$this
->drupalGet('node/' . $node4
->id() . '/edit');
$assert
->ElementNotExists('xpath', '//input[@id = "edit-publish-on-0-value-date"]');
$assert
->ElementNotExists('xpath', '//input[@id = "edit-unpublish-on-0-value-date"]');
}
/**
* Test when other modules process the publish and unpublish actions.
*
* This covers hook_scheduler_publish_action and
* hook_scheduler_unpublish_action.
*/
public function testPublishUnpublishAction() {
$this
->drupalLogin($this->schedulerUser);
// Create test nodes.
$node1 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => FALSE,
'title' => 'Red Legacy will cause a failure on publishing',
'publish_on' => strtotime('-1 day'),
]);
$node2 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => TRUE,
'title' => 'Orange Legacy will be unpublished by the API test module not Scheduler',
'unpublish_on' => strtotime('-1 day'),
]);
$node3 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => FALSE,
'title' => 'Yellow Legacy will be published by the API test module not Scheduler',
'publish_on' => strtotime('-1 day'),
]);
// 'green' nodes will have both fields hidden so is harder to test manually.
// Therefore introduce a different colour.
$node4 = $this
->drupalCreateNode([
'type' => $this->type,
'status' => TRUE,
'title' => 'Blue Legacy will cause a failure on unpublishing',
'unpublish_on' => strtotime('-1 day'),
]);
// Simulate a cron run.
scheduler_cron();
// Check the red node.
$this->nodeStorage
->resetCache([
$node1
->id(),
]);
$node1 = $this->nodeStorage
->load($node1
->id());
$this
->assertFalse($node1
->isPublished(), 'The red node is still unpublished.');
$this
->assertNotEmpty($node1->publish_on->value, 'The red node still has a publish-on date.');
// Check the orange node.
$this->nodeStorage
->resetCache([
$node2
->id(),
]);
$node2 = $this->nodeStorage
->load($node2
->id());
$this
->assertFalse($node2
->isPublished(), 'The orange node was unpublished by the API test module.');
$this
->assertNotEmpty(stristr($node2->title->value, 'unpublishing processed by API test module'), 'The orange node was processed by the API test module.');
$this
->assertEmpty($node2->unpublish_on->value, 'The orange node no longer has an unpublish-on date.');
// Check the yellow node.
$this->nodeStorage
->resetCache([
$node3
->id(),
]);
$node3 = $this->nodeStorage
->load($node3
->id());
$this
->assertTrue($node3
->isPublished(), 'The yellow node was published by the API test module.');
$this
->assertNotEmpty(stristr($node3->title->value, 'publishing processed by API test module'), 'The yellow node was processed by the API test module.');
$this
->assertEmpty($node3->publish_on->value, 'The yellow node no longer has a publish-on date.');
// Check the blue node.
$this->nodeStorage
->resetCache([
$node4
->id(),
]);
$node4 = $this->nodeStorage
->load($node4
->id());
$this
->assertTrue($node4
->isPublished(), 'The green node is still published.');
$this
->assertNotEmpty($node4->unpublish_on->value, 'The green node still has an unpublish-on date.');
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AssertLegacyTrait:: |
protected | function | ||
AssertLegacyTrait:: |
protected | function | Asserts whether an expected cache tag was present in the last response. | |
AssertLegacyTrait:: |
protected | function | Asserts that the element with the given CSS selector is not present. | |
AssertLegacyTrait:: |
protected | function | Asserts that the element with the given CSS selector is present. | |
AssertLegacyTrait:: |
protected | function | ||
AssertLegacyTrait:: |
protected | function | Passes if the raw text IS found escaped on the loaded page, fail otherwise. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists with the given name or ID. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists with the given ID and value. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists with the given name and value. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists in the current page by the given XPath. | |
AssertLegacyTrait:: |
protected | function | Asserts that a checkbox field in the current page is checked. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field exists in the current page with a given Xpath result. | |
AssertLegacyTrait:: |
protected | function | Checks that current response header equals value. | |
AssertLegacyTrait:: |
protected | function | ||
AssertLegacyTrait:: |
protected | function | ||
AssertLegacyTrait:: |
protected | function | Passes if a link with the specified label is found. | |
AssertLegacyTrait:: |
protected | function | Passes if a link containing a given href (part) is found. | |
AssertLegacyTrait:: |
protected | function | Asserts whether an expected cache tag was absent in the last response. | |
AssertLegacyTrait:: |
protected | function | Passes if the raw text is not found escaped on the loaded page. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field does NOT exist with the given name or ID. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field does not exist with the given ID and value. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field does not exist with the given name and value. | |
AssertLegacyTrait:: |
protected | function | Asserts that a field does not exist or its value does not match, by XPath. | |
AssertLegacyTrait:: |
protected | function | Asserts that a checkbox field in the current page is not checked. | |
AssertLegacyTrait:: |
protected | function | Passes if a link with the specified label is not found. | |
AssertLegacyTrait:: |
protected | function | Passes if a link containing a given href (part) is not found. | |
AssertLegacyTrait:: |
protected | function | Asserts that a select option does NOT exist in the current page. | |
AssertLegacyTrait:: |
protected | function | Triggers a pass if the Perl regex pattern is not found in the raw content. | |
AssertLegacyTrait:: |
protected | function | Passes if the raw text IS not found on the loaded page, fail otherwise. | |
AssertLegacyTrait:: |
protected | function | ||
AssertLegacyTrait:: |
protected | function | Passes if the page (with HTML stripped) does not contains the text. | |
AssertLegacyTrait:: |
protected | function | ||
AssertLegacyTrait:: |
protected | function | Passes if the text is found MORE THAN ONCE on the text version of the page. | |
AssertLegacyTrait:: |
protected | function | Asserts that a select option in the current page exists. | |
AssertLegacyTrait:: |
protected | function | Asserts that a select option with the visible text exists. | |
AssertLegacyTrait:: |
protected | function | Asserts that a select option in the current page is checked. | |
AssertLegacyTrait:: |
protected | function | Triggers a pass if the Perl regex pattern is found in the raw content. | |
AssertLegacyTrait:: |
protected | function | Passes if the raw text IS found on the loaded page, fail otherwise. | |
AssertLegacyTrait:: |
protected | function | Asserts the page responds with the specified response code. | |
AssertLegacyTrait:: |
protected | function | Passes if the page (with HTML stripped) contains the text. | |
AssertLegacyTrait:: |
protected | function | Helper for assertText and assertNoText. | |
AssertLegacyTrait:: |
protected | function | Pass if the page title is the given string. | |
AssertLegacyTrait:: |
protected | function | Passes if the text is found ONLY ONCE on the text version of the page. | |
AssertLegacyTrait:: |
protected | function | Passes if the internal browser's URL matches the given path. | |
AssertLegacyTrait:: |
protected | function | Builds an XPath query. | |
AssertLegacyTrait:: |
protected | function | Helper: Constructs an XPath for the given set of attributes and value. | |
AssertLegacyTrait:: |
protected | function | Get all option elements, including nested options, in a select. | |
AssertLegacyTrait:: |
protected | function | Gets the current raw content. | |
AssertLegacyTrait:: |
protected | function | ||
AssertLegacyTrait:: |
protected | function | ||
BlockCreationTrait:: |
protected | function | Creates a block instance based on default settings. Aliased as: drupalPlaceBlock | |
BrowserHtmlDebugTrait:: |
protected | property | The Base URI to use for links to the output files. | |
BrowserHtmlDebugTrait:: |
protected | property | Class name for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | property | Counter for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | property | Counter storage for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | property | Directory name for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | property | HTML output output enabled. | |
BrowserHtmlDebugTrait:: |
protected | property | The file name to write the list of URLs to. | |
BrowserHtmlDebugTrait:: |
protected | property | HTML output test ID. | |
BrowserHtmlDebugTrait:: |
protected | function | Formats HTTP headers as string for HTML output logging. | |
BrowserHtmlDebugTrait:: |
protected | function | Returns headers in HTML output format. | 1 |
BrowserHtmlDebugTrait:: |
protected | function | Provides a Guzzle middleware handler to log every response received. | |
BrowserHtmlDebugTrait:: |
protected | function | Logs a HTML output message in a text file. | |
BrowserHtmlDebugTrait:: |
protected | function | Creates the directory to store browser output. | |
BrowserTestBase:: |
protected | property | The base URL. | |
BrowserTestBase:: |
protected | property | The config importer that can be used in a test. | |
BrowserTestBase:: |
protected | property | An array of custom translations suitable for drupal_rewrite_settings(). | |
BrowserTestBase:: |
protected | property | The database prefix of this test run. | |
BrowserTestBase:: |
protected | property | Mink session manager. | |
BrowserTestBase:: |
protected | property | Mink default driver params. | |
BrowserTestBase:: |
protected | property | Mink class for the default driver to use. | 1 |
BrowserTestBase:: |
protected | property | The original container. | |
BrowserTestBase:: |
protected | property | The original array of shutdown function callbacks. | |
BrowserTestBase:: |
protected | property | ||
BrowserTestBase:: |
protected | property | The app root. | |
BrowserTestBase:: |
protected | property | Browser tests are run in separate processes to prevent collisions between code that may be loaded by tests. | |
BrowserTestBase:: |
protected | property | Time limit in seconds for the test. | |
BrowserTestBase:: |
protected | property | The translation file directory for the test environment. | |
BrowserTestBase:: |
protected | function | Clean up the Simpletest environment. | |
BrowserTestBase:: |
protected | function | Configuration accessor for tests. Returns non-overridden configuration. | |
BrowserTestBase:: |
protected | function | Gets the value of an HTTP response header. | |
BrowserTestBase:: |
public static | function | Ensures test files are deletable. | |
BrowserTestBase:: |
protected | function | Gets an instance of the default Mink driver. | |
BrowserTestBase:: |
protected | function | Gets the JavaScript drupalSettings variable for the currently-loaded page. | 1 |
BrowserTestBase:: |
protected | function | Obtain the HTTP client for the system under test. | |
BrowserTestBase:: |
protected | function | Get the Mink driver args from an environment variable, if it is set. Can be overridden in a derived class so it is possible to use a different value for a subset of tests, e.g. the JavaScript tests. | 1 |
BrowserTestBase:: |
protected | function | Helper function to get the options of select field. | |
BrowserTestBase:: |
public | function | Returns Mink session. | |
BrowserTestBase:: |
protected | function | Get session cookies from current session. | |
BrowserTestBase:: |
protected | function |
Retrieves the current calling line in the class under test. Overrides BrowserHtmlDebugTrait:: |
|
BrowserTestBase:: |
protected | function | Visits the front page when initializing Mink. | 3 |
BrowserTestBase:: |
protected | function | Initializes Mink sessions. | 1 |
BrowserTestBase:: |
public | function | Installs Drupal into the Simpletest site. | 1 |
BrowserTestBase:: |
protected | function | Registers additional Mink sessions. | |
BrowserTestBase:: |
protected | function | Sets up the root application path. | |
BrowserTestBase:: |
public static | function | 1 | |
BrowserTestBase:: |
protected | function | 3 | |
BrowserTestBase:: |
protected | function | Transforms a nested array into a flat array suitable for submitForm(). | |
BrowserTestBase:: |
protected | function | Performs an xpath search on the contents of the internal browser. | |
BrowserTestBase:: |
public | function | Prevents serializing any properties. | |
ConfigTestTrait:: |
protected | function | Returns a ConfigImporter object to import test configuration. | |
ConfigTestTrait:: |
protected | function | Copies configuration objects from source storage to target storage. | |
ContentTypeCreationTrait:: |
protected | function | Creates a custom content type based on default settings. Aliased as: drupalCreateContentType | 1 |
CronRunTrait:: |
protected | function | Runs cron on the test site. | |
ExtensionListTestTrait:: |
protected | function | Gets the path for the specified module. | |
ExtensionListTestTrait:: |
protected | function | Gets the path for the specified theme. | |
FunctionalTestSetupTrait:: |
protected | property | The flag to set 'apcu_ensure_unique_prefix' setting. | 1 |
FunctionalTestSetupTrait:: |
protected | property | The class loader to use for installation and initialization of setup. | |
FunctionalTestSetupTrait:: |
protected | property | The "#1" admin user. | |
FunctionalTestSetupTrait:: |
protected | function | Execute the non-interactive installer. | 1 |
FunctionalTestSetupTrait:: |
protected | function | Returns all supported database driver installer objects. | |
FunctionalTestSetupTrait:: |
protected | function | Initialize various configurations post-installation. | 1 |
FunctionalTestSetupTrait:: |
protected | function | Initializes the kernel after installation. | |
FunctionalTestSetupTrait:: |
protected | function | Initialize settings created during install. | |
FunctionalTestSetupTrait:: |
protected | function | Initializes user 1 for the site to be installed. | |
FunctionalTestSetupTrait:: |
protected | function | Installs the default theme defined by `static::$defaultTheme` when needed. | |
FunctionalTestSetupTrait:: |
protected | function | Install modules defined by `static::$modules`. | 1 |
FunctionalTestSetupTrait:: |
protected | function | Returns the parameters that will be used when Simpletest installs Drupal. | 9 |
FunctionalTestSetupTrait:: |
protected | function | Prepares the current environment for running the test. | 20 |
FunctionalTestSetupTrait:: |
protected | function | Creates a mock request and sets it on the generator. | |
FunctionalTestSetupTrait:: |
protected | function | Prepares site settings and services before installation. | 2 |
FunctionalTestSetupTrait:: |
protected | function | Resets and rebuilds the environment after setup. | |
FunctionalTestSetupTrait:: |
protected | function | Rebuilds \Drupal::getContainer(). | |
FunctionalTestSetupTrait:: |
protected | function | Resets all data structures after having enabled new modules. | |
FunctionalTestSetupTrait:: |
protected | function | Changes parameters in the services.yml file. | |
FunctionalTestSetupTrait:: |
protected | function | Sets up the base URL based upon the environment variable. | |
FunctionalTestSetupTrait:: |
protected | function | Rewrites the settings.php file of the test site. | 1 |
MediaTypeCreationTrait:: |
protected | function | Create a media type for a source plugin. | |
NodeCreationTrait:: |
protected | function | Creates a node based on default settings. Aliased as: drupalCreateNode | |
NodeCreationTrait:: |
public | function | Get a node from the database based on its title. Aliased as: drupalGetNodeByTitle | |
PhpUnitWarnings:: |
private static | property | Deprecation warnings from PHPUnit to raise with @trigger_error(). | |
PhpUnitWarnings:: |
public | function | Converts PHPUnit deprecation warnings to E_USER_DEPRECATED. | |
RandomGeneratorTrait:: |
protected | property | The random generator. | |
RandomGeneratorTrait:: |
protected | function | Gets the random generator for the utility methods. | |
RandomGeneratorTrait:: |
protected | function | Generates a unique random string containing letters and numbers. | 1 |
RandomGeneratorTrait:: |
public | function | Generates a random PHP object. | |
RandomGeneratorTrait:: |
public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |
RandomGeneratorTrait:: |
public | function | Callback for random string validation. | |
RefreshVariablesTrait:: |
protected | function | Refreshes in-memory configuration and state information. | 1 |
SchedulerBrowserTestBase:: |
protected | property |
The theme to install as the default for testing. Overrides BrowserTestBase:: |
|
SchedulerBrowserTestBase:: |
protected | property |
The profile to install as a basis for testing. Overrides BrowserTestBase:: |
|
SchedulerCommerceProductSetupTrait:: |
protected | property | The product type object which is not enabled for scheduling. | |
SchedulerCommerceProductSetupTrait:: |
protected | property | The readable label of the product type not enabled for scheduling. | |
SchedulerCommerceProductSetupTrait:: |
protected | property | The internal name of the product type not enabled for scheduling. | |
SchedulerCommerceProductSetupTrait:: |
protected | property | The product entity storage. | |
SchedulerCommerceProductSetupTrait:: |
protected | property | The product type object which is enabled for scheduling. | |
SchedulerCommerceProductSetupTrait:: |
protected | property | The readable label of the standard product type for testing. | |
SchedulerCommerceProductSetupTrait:: |
protected | property | The internal name of the standard product type for testing. | |
SchedulerCommerceProductSetupTrait:: |
protected | property | The default commerce store to which all products are added. | |
SchedulerCommerceProductSetupTrait:: |
public | function | Creates a product entity. | |
SchedulerCommerceProductSetupTrait:: |
public | function | Gets a product from storage. | |
SchedulerCommerceProductSetupTrait:: |
public | function | Set common properties, define content types and create users. | |
SchedulerHooksLegacyTest:: |
protected static | property |
Additional modules required. Overrides SchedulerBrowserTestBase:: |
|
SchedulerHooksLegacyTest:: |
protected | function | Approves a node for publication or unpublication. | |
SchedulerHooksLegacyTest:: |
protected | function | Creates a new node that is not approved. | |
SchedulerHooksLegacyTest:: |
protected | function |
Overrides SchedulerBrowserTestBase:: |
|
SchedulerHooksLegacyTest:: |
public | function | Covers hook_scheduler_allow_publishing() | |
SchedulerHooksLegacyTest:: |
public | function | Covers hook_scheduler_allow_unpublishing() | |
SchedulerHooksLegacyTest:: |
public | function | Test the hooks which allow hiding of scheduler input fields. | |
SchedulerHooksLegacyTest:: |
public | function | Covers hook_scheduler_nid_list($action) | |
SchedulerHooksLegacyTest:: |
public | function | Covers hook_scheduler_nid_list_alter($action) | |
SchedulerHooksLegacyTest:: |
public | function | Test when other modules process the publish and unpublish actions. | |
SchedulerMediaSetupTrait:: |
protected | property | The media entity storage. | |
SchedulerMediaSetupTrait:: |
protected | property | The media type object which is enabled for scheduling. | |
SchedulerMediaSetupTrait:: |
protected | property | The readable label of the standard media type created for testing. | |
SchedulerMediaSetupTrait:: |
protected | property | The internal name of the standard media type created for testing. | |
SchedulerMediaSetupTrait:: |
protected | property | The media type object which is not enabled for scheduling. | |
SchedulerMediaSetupTrait:: |
protected | property | The readable label of the media type not enabled for scheduling. | |
SchedulerMediaSetupTrait:: |
protected | property | The internal name of the media type not enabled for scheduling. | |
SchedulerMediaSetupTrait:: |
public | function | Creates a media entity. | |
SchedulerMediaSetupTrait:: |
public | function | Gets a media item from storage. | |
SchedulerMediaSetupTrait:: |
public | function | Set common properties, define content types and create users. | |
SchedulerSetupTrait:: |
protected | property | A user with administration rights. | |
SchedulerSetupTrait:: |
protected | property | The Database Connection. | |
SchedulerSetupTrait:: |
protected | property | The date formatter service. | |
SchedulerSetupTrait:: |
protected | property | The node storage object. | |
SchedulerSetupTrait:: |
protected | property | The node type object. | |
SchedulerSetupTrait:: |
protected | property | The node type object which is not enabled for scheduling. | |
SchedulerSetupTrait:: |
protected | property | The machine name of the content type which is not enabled for scheduling. | |
SchedulerSetupTrait:: |
protected | property | The readable name of content type which is not enabled for scheduling. | |
SchedulerSetupTrait:: |
protected | property | The request time stored as interger for direct re-use in many tests. | |
SchedulerSetupTrait:: |
protected | property | A user with permission to schedule content. | |
SchedulerSetupTrait:: |
protected | property | The internal name of the standard content type created for testing. | |
SchedulerSetupTrait:: |
protected | property | The readable name of the standard content type created for testing. | |
SchedulerSetupTrait:: |
public | function | Adds a set of permissions to an existing user. | |
SchedulerSetupTrait:: |
public | function | Creates a test entity. | |
SchedulerSetupTrait:: |
public | function | Provides test data containing the standard entity types. | |
SchedulerSetupTrait:: |
public | function | Returns the url for adding an entity, for use in drupalGet(). | |
SchedulerSetupTrait:: |
public | function | Returns the storage object of the entity type passed by string. | |
SchedulerSetupTrait:: |
public | function | Returns the stored entity type object from a type id and bundle id. | |
SchedulerSetupTrait:: |
public | function | Gets an entity by title, a direct replacement of drupalGetNodeByTitle(). | |
SchedulerSetupTrait:: |
public | function | Set common properties, define content types and create users. | |
SessionTestTrait:: |
protected | property | The name of the session cookie. | |
SessionTestTrait:: |
protected | function | Generates a session cookie name. | |
SessionTestTrait:: |
protected | function | Returns the session name in use on the child site. | |
StorageCopyTrait:: |
protected static | function | Copy the configuration from one storage to another and remove stale items. | |
TestRequirementsTrait:: |
private | function | Checks missing module requirements. | |
TestRequirementsTrait:: |
protected | function | Check module requirements for the Drupal use case. | 1 |
TestRequirementsTrait:: |
protected static | function | Returns the Drupal root directory. | |
TestSetupTrait:: |
protected static | property | An array of config object names that are excluded from schema checking. | |
TestSetupTrait:: |
protected | property | The dependency injection container used in the test. | |
TestSetupTrait:: |
protected | property | The DrupalKernel instance used in the test. | |
TestSetupTrait:: |
protected | property | The site directory of the original parent site. | |
TestSetupTrait:: |
protected | property | The private file directory for the test environment. | |
TestSetupTrait:: |
protected | property | The public file directory for the test environment. | |
TestSetupTrait:: |
protected | property | The site directory of this test run. | |
TestSetupTrait:: |
protected | property | Set to TRUE to strict check all configuration saved. | 1 |
TestSetupTrait:: |
protected | property | The temporary file directory for the test environment. | |
TestSetupTrait:: |
protected | property | The test run ID. | |
TestSetupTrait:: |
protected | function | Changes the database connection to the prefixed one. | |
TestSetupTrait:: |
protected | function | Gets the config schema exclusions for this test. | |
TestSetupTrait:: |
public static | function | Returns the database connection to the site running Simpletest. | |
TestSetupTrait:: |
protected | function | Generates a database prefix for running tests. | 1 |
UiHelperTrait:: |
protected | property | The current user logged in using the Mink controlled browser. | |
UiHelperTrait:: |
protected | property | The number of meta refresh redirects to follow, or NULL if unlimited. | |
UiHelperTrait:: |
protected | property | The number of meta refresh redirects followed during ::drupalGet(). | |
UiHelperTrait:: |
public | function | Returns WebAssert object. | 1 |
UiHelperTrait:: |
protected | function | Builds an absolute URL from a system path or a URL object. | |
UiHelperTrait:: |
protected | function | Checks for meta refresh tag and if found call drupalGet() recursively. | |
UiHelperTrait:: |
protected | function | Clicks the element with the given CSS selector. | |
UiHelperTrait:: |
protected | function | Follows a link by complete name. | |
UiHelperTrait:: |
protected | function | Searches elements using a CSS selector in the raw content. | |
UiHelperTrait:: |
protected | function | Translates a CSS expression to its XPath equivalent. | |
UiHelperTrait:: |
protected | function | Retrieves a Drupal path or an absolute path. | 2 |
UiHelperTrait:: |
protected | function | Logs in a user using the Mink controlled browser. | |
UiHelperTrait:: |
protected | function | Logs a user out of the Mink controlled browser and confirms. | |
UiHelperTrait:: |
protected | function | Executes a form submission. | |
UiHelperTrait:: |
protected | function | Returns whether a given user account is logged in. | |
UiHelperTrait:: |
protected | function | Takes a path and returns an absolute path. | |
UiHelperTrait:: |
protected | function | Retrieves the plain-text content from the current page. | |
UiHelperTrait:: |
protected | function | Get the current URL from the browser. | |
UiHelperTrait:: |
protected | function | Determines if test is using DrupalTestBrowser. | |
UiHelperTrait:: |
protected | function | Prepare for a request to testing site. | 1 |
UiHelperTrait:: |
protected | function | Fills and submits a form. | |
UserCreationTrait:: |
protected | function | Checks whether a given list of permission names is valid. | |
UserCreationTrait:: |
protected | function | Creates an administrative role. | |
UserCreationTrait:: |
protected | function | Creates a role with specified permissions. Aliased as: drupalCreateRole | |
UserCreationTrait:: |
protected | function | Create a user with a given set of permissions. Aliased as: drupalCreateUser | |
UserCreationTrait:: |
protected | function | Grant permissions to a user role. | |
UserCreationTrait:: |
protected | function | Switch the current logged in user. | |
UserCreationTrait:: |
protected | function | Creates a random user account and sets it as current user. | |
XdebugRequestTrait:: |
protected | function | Adds xdebug cookies, from request setup. |