class WorkspaceTrackerTest
Tests workspace tracker.
Attributes
#[CoversClass(WorkspaceTracker::class)]
#[Group('workspaces')]
#[RunTestsInSeparateProcesses]
Hierarchy
- class \Drupal\KernelTests\KernelTestBase implements \Drupal\Core\DependencyInjection\ServiceProviderInterface uses \Drupal\KernelTests\AssertContentTrait, \Drupal\Tests\RandomGeneratorTrait, \Drupal\Tests\ConfigTestTrait, \Drupal\Tests\ExtensionListTestTrait, \Drupal\Tests\TestRequirementsTrait, \Drupal\Tests\PhpUnitCompatibilityTrait, \Prophecy\PhpUnit\ProphecyTrait, \Drupal\TestTools\Extension\DeprecationBridge\ExpectDeprecationTrait extends \PHPUnit\Framework\TestCase
- class \Drupal\Tests\workspaces\Kernel\WorkspaceTrackerTest uses \Drupal\Tests\user\Traits\UserCreationTrait, \Drupal\Tests\workspaces\Kernel\WorkspaceTestTrait extends \Drupal\KernelTests\KernelTestBase
Expanded class hierarchy of WorkspaceTrackerTest
File
-
core/
modules/ workspaces/ tests/ src/ Kernel/ WorkspaceTrackerTest.php, line 20
Namespace
Drupal\Tests\workspaces\KernelView source
class WorkspaceTrackerTest extends KernelTestBase {
use UserCreationTrait;
use WorkspaceTestTrait;
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* {@inheritdoc}
*/
protected static $modules = [
'entity_test',
'user',
'system',
'workspaces',
'workspaces_test',
];
/**
* {@inheritdoc}
*/
protected function setUp() : void {
parent::setUp();
$this->entityTypeManager = \Drupal::entityTypeManager();
$this->installEntitySchema('entity_test_mulrevpub');
$this->installEntitySchema('entity_test_mulrevpub_string_id');
$this->installEntitySchema('user');
$this->installEntitySchema('workspace');
$this->installConfig([
'system',
]);
$this->installSchema('workspaces', [
'workspace_association',
'workspace_association_revision',
]);
$permissions = array_intersect([
'administer nodes',
'create workspace',
'edit any workspace',
'view any workspace',
], array_keys($this->container
->get('user.permissions')
->getPermissions()));
$this->setCurrentUser($this->createUser($permissions));
$this->workspaces['qa'] = Workspace::create([
'id' => 'qa',
'label' => 'QA',
]);
$this->workspaces['qa']
->save();
$this->workspaces['preview'] = Workspace::create([
'id' => 'preview',
'label' => 'Preview',
]);
$this->workspaces['preview']
->save();
$this->workspaces['stage'] = Workspace::create([
'id' => 'stage',
'label' => 'Stage',
]);
$this->workspaces['stage']
->save();
$this->workspaces['dev'] = Workspace::create([
'id' => 'dev',
'parent' => 'stage',
'label' => 'Dev',
]);
$this->workspaces['dev']
->save();
}
/**
* Tests the revisions tracked by a workspace.
*
* @param string $entity_type_id
* The ID of the entity type to test.
* @param array $entity_values
* An array of values for the entities created in this test.
*
* @legacy-covers ::getTrackedEntities
* @legacy-covers ::getAssociatedRevisions
*/
public function testWorkspaceAssociation(string $entity_type_id, array $entity_values) : void {
$entity_1 = $this->createEntity($entity_type_id, $entity_values[1]);
$this->createEntity($entity_type_id, $entity_values[2]);
// Edit one of the existing nodes in 'stage'.
$this->switchToWorkspace('stage');
$entity_1->set('name', 'Test entity 1 - stage - published');
$entity_1->setPublished();
// This creates rev. 3.
$entity_1->save();
// Generate content with the following structure:
// Stage:
// - Test entity 3 - stage - unpublished (rev. 4)
// - Test entity 4 - stage - published (rev. 5 and 6)
$this->createEntity($entity_type_id, $entity_values[3]);
$this->createEntity($entity_type_id, $entity_values[4]);
$expected_latest_revisions = [
'stage' => [
3,
4,
6,
],
];
$expected_all_revisions = [
'stage' => [
3,
4,
5,
6,
],
];
$expected_initial_revisions = [
'stage' => [
4,
5,
],
];
$this->assertWorkspaceAssociations($entity_type_id, $expected_latest_revisions, $expected_all_revisions, $expected_initial_revisions);
// Dev:
// - Test entity 1 - stage - published (rev. 3)
// - Test entity 3 - stage - unpublished (rev. 4)
// - Test entity 4 - stage - published (rev. 5 and 6)
// - Test entity 5 - dev - unpublished (rev. 7)
// - Test entity 6 - dev - published (rev. 8 and 9)
$this->switchToWorkspace('dev');
$this->createEntity($entity_type_id, $entity_values[5]);
$this->createEntity($entity_type_id, $entity_values[6]);
$expected_latest_revisions += [
'dev' => [
3,
4,
6,
7,
9,
],
];
// Revisions 3, 4, 5 and 6 that were created in the parent 'stage' workspace
// are also considered as being part of the child 'dev' workspace.
$expected_all_revisions += [
'dev' => [
3,
4,
5,
6,
7,
8,
9,
],
];
$expected_initial_revisions += [
'dev' => [
7,
8,
],
];
$this->assertWorkspaceAssociations($entity_type_id, $expected_latest_revisions, $expected_all_revisions, $expected_initial_revisions);
// Merge 'dev' into 'stage' and check the workspace associations.
/** @var \Drupal\workspaces\WorkspaceMergerInterface $workspace_merger */
$workspace_merger = \Drupal::service('workspaces.operation_factory')->getMerger($this->workspaces['dev'], $this->workspaces['stage']);
$workspace_merger->merge();
// The latest revisions from 'dev' are now tracked in 'stage'.
$expected_latest_revisions['stage'] = $expected_latest_revisions['dev'];
// Two revisions (8 and 9) were created for 'Test article 6', but only the
// latest one (9) is being merged into 'stage'.
$expected_all_revisions['stage'] = [
3,
4,
5,
6,
7,
9,
];
// Revision 7 was both an initial and latest revision in 'dev', so it is now
// considered an initial revision in 'stage'.
$expected_initial_revisions['stage'] = [
4,
5,
7,
];
// Which leaves revision 8 as the only remaining initial revision in 'dev'.
$expected_initial_revisions['dev'] = [
8,
];
$this->assertWorkspaceAssociations($entity_type_id, $expected_latest_revisions, $expected_all_revisions, $expected_initial_revisions);
// Publish 'stage' and check the workspace associations.
/** @var \Drupal\workspaces\WorkspacePublisherInterface $workspace_publisher */
$workspace_publisher = \Drupal::service('workspaces.operation_factory')->getPublisher($this->workspaces['stage']);
$workspace_publisher->publish();
$expected_revisions['stage'] = $expected_revisions['dev'] = [];
$this->assertWorkspaceAssociations($entity_type_id, $expected_revisions, $expected_revisions, $expected_revisions);
}
/**
* The data provider for ::testWorkspaceAssociation().
*/
public static function getEntityTypeIds() : array {
return [
[
'entity_type_id' => 'entity_test_mulrevpub',
'entity_values' => [
1 => [
'name' => 'Test entity 1 - live - unpublished',
'status' => FALSE,
],
2 => [
'name' => 'Test entity 2 - live - published',
'status' => TRUE,
],
3 => [
'name' => 'Test entity 3 - stage - unpublished',
'status' => FALSE,
],
4 => [
'name' => 'Test entity 4 - stage - published',
'status' => TRUE,
],
5 => [
'name' => 'Test entity 5 - dev - unpublished',
'status' => FALSE,
],
6 => [
'name' => 'Test entity 6 - dev - published',
'status' => TRUE,
],
],
],
[
'entity_type_id' => 'entity_test_mulrevpub_string_id',
'entity_values' => [
1 => [
'id' => 'test_1',
'name' => 'Test entity 1 - live - unpublished',
'status' => FALSE,
],
2 => [
'id' => 'test_2',
'name' => 'Test entity 2 - live - published',
'status' => TRUE,
],
3 => [
'id' => 'test_3',
'name' => 'Test entity 3 - stage - unpublished',
'status' => FALSE,
],
4 => [
'id' => 'test_4',
'name' => 'Test entity 4 - stage - published',
'status' => TRUE,
],
5 => [
'id' => 'test_5',
'name' => 'Test entity 5 - dev - unpublished',
'status' => FALSE,
],
6 => [
'id' => 'test_6',
'name' => 'Test entity 6 - dev - published',
'status' => TRUE,
],
],
],
];
}
/**
* Tests the count of revisions returned for tracked entities listing.
*
* @legacy-covers ::getTrackedEntitiesForListing
*/
public function testWorkspaceAssociationForListing() : void {
$this->switchToWorkspace($this->workspaces['stage']
->id());
$entity_type_id = 'entity_test_mulrevpub';
for ($i = 1; $i <= 51; ++$i) {
$this->createEntity($entity_type_id, [
'name' => "Test entity {$i}",
]);
}
/** @var \Drupal\workspaces\WorkspaceTrackerInterface $workspace_association */
$workspace_tracker = \Drupal::service('workspaces.tracker');
// The default behavior uses a pager with 50 items per page.
$tracked_items = $workspace_tracker->getTrackedEntitiesForListing($this->workspaces['stage']
->id());
$this->assertEquals(50, count($tracked_items[$entity_type_id]));
// Verifies that all items are returned, not broken into pages.
$tracked_items_no_pager = $workspace_tracker->getTrackedEntitiesForListing($this->workspaces['stage']
->id(), NULL, FALSE);
$this->assertEquals(51, count($tracked_items_no_pager[$entity_type_id]));
}
/**
* Checks the workspace associations for a test scenario.
*
* @param string $entity_type_id
* The ID of the entity type that is being tested.
* @param array $expected_latest_revisions
* An array of expected values for the latest tracked revisions.
* @param array $expected_all_revisions
* An array of expected values for all the tracked revisions.
* @param array $expected_initial_revisions
* An array of expected values for the initial revisions, i.e. for the
* entities that were created in the specified workspace.
*/
protected function assertWorkspaceAssociations($entity_type_id, array $expected_latest_revisions, array $expected_all_revisions, array $expected_initial_revisions) : void {
/** @var \Drupal\workspaces\WorkspaceTrackerInterface $workspace_tracker */
$workspace_tracker = \Drupal::service('workspaces.tracker');
foreach ($expected_latest_revisions as $workspace_id => $expected_tracked_revision_ids) {
$tracked_entities = $workspace_tracker->getTrackedEntities($workspace_id, $entity_type_id);
$tracked_revision_ids = $tracked_entities[$entity_type_id] ?? [];
$this->assertEquals($expected_tracked_revision_ids, array_keys($tracked_revision_ids));
}
foreach ($expected_all_revisions as $workspace_id => $expected_all_revision_ids) {
$all_associated_revisions = $workspace_tracker->getAllTrackedRevisions($workspace_id, $entity_type_id);
$this->assertEquals($expected_all_revision_ids, array_keys($all_associated_revisions));
}
foreach ($expected_initial_revisions as $workspace_id => $expected_initial_revision_ids) {
$initial_revisions = $workspace_tracker->getTrackedInitialRevisions($workspace_id, $entity_type_id);
$this->assertEquals($expected_initial_revision_ids, array_keys($initial_revisions));
}
}
/**
* Tests moving an entity with multiple revisions between workspaces.
*
* @legacy-covers ::moveTrackedEntities
*/
public function testMoveTrackedEntitiesWithMultipleRevisions() : void {
$entity_type_id = 'entity_test_mulrevpub';
/** @var \Drupal\workspaces\WorkspaceTrackerInterface $workspace_tracker */
$workspace_tracker = \Drupal::service('workspaces.tracker');
// Get the workspace field name for later assertions.
$entity_type = $this->entityTypeManager
->getDefinition($entity_type_id);
assert($entity_type instanceof ContentEntityTypeInterface);
$workspace_field = $entity_type->getRevisionMetadataKey('workspace');
$storage = $this->entityTypeManager
->getStorage($entity_type_id);
// Create an entity with multiple revisions in 'preview'.
$this->switchToWorkspace('preview');
$entity = $this->createEntity($entity_type_id, [
'name' => 'Entity with revisions',
]);
$entity->setName('Updated name 1');
$entity->save();
$entity->setName('Updated name 2');
$entity->save();
$preview_revisions = $workspace_tracker->getAllTrackedRevisions('preview', $entity_type_id);
// Move the entity to 'qa'.
$workspace_tracker->moveTrackedEntities('preview', 'qa', $entity_type_id, [
$entity->id(),
]);
// Verify all revisions have been moved.
$this->assertEmpty($workspace_tracker->getAllTrackedRevisions('preview', $entity_type_id));
$qa_revisions = $workspace_tracker->getAllTrackedRevisions('qa', $entity_type_id);
$this->assertEquals($preview_revisions, $qa_revisions);
// Verify the workspace field was updated on all revisions.
foreach ($storage->loadMultipleRevisions(array_keys($qa_revisions)) as $revision) {
$this->assertEquals('qa', $revision->{$workspace_field}->target_id);
}
}
/**
* Tests moving all entities of a specific type while leaving others.
*
* @legacy-covers ::moveTrackedEntities
*/
public function testMoveTrackedEntitiesOfSpecificType() : void {
$entity_type_id = 'entity_test_mulrevpub';
$entity_type_id_string = 'entity_test_mulrevpub_string_id';
/** @var \Drupal\workspaces\WorkspaceTrackerInterface $workspace_tracker */
$workspace_tracker = \Drupal::service('workspaces.tracker');
// Get the workspace field name for later assertions.
$entity_type_string_id = $this->entityTypeManager
->getDefinition($entity_type_id_string);
$workspace_field_string_id = $entity_type_string_id->getRevisionMetadataKey('workspace');
$storage_string_id = $this->entityTypeManager
->getStorage($entity_type_id_string);
// Create entities of different types in 'preview'.
$this->switchToWorkspace('preview');
$this->createEntity($entity_type_id, [
'name' => 'Integer entity 1',
]);
$this->createEntity($entity_type_id, [
'name' => 'Integer entity 2',
]);
$entity_string_1 = $this->createEntity($entity_type_id_string, [
'id' => 'str_1',
'name' => 'String entity 1',
]);
$entity_string_2 = $this->createEntity($entity_type_id_string, [
'id' => 'str_2',
'name' => 'String entity 2',
]);
// Move only the integer ID entities to 'qa'.
$workspace_tracker->moveTrackedEntities('preview', 'qa', $entity_type_id);
// Verify integer ID entities were moved.
$this->assertEmpty($workspace_tracker->getTrackedEntities('preview', $entity_type_id)[$entity_type_id] ?? []);
$this->assertCount(2, $workspace_tracker->getTrackedEntities('qa', $entity_type_id)[$entity_type_id]);
// Verify string ID entities remain in 'preview'.
$this->assertCount(2, $workspace_tracker->getTrackedEntities('preview', $entity_type_id_string)[$entity_type_id_string]);
$this->assertEmpty($workspace_tracker->getTrackedEntities('qa', $entity_type_id_string)[$entity_type_id_string] ?? []);
$preview_string_entities = $workspace_tracker->getTrackedEntities('preview', $entity_type_id_string);
$this->assertContains($entity_string_1->id(), $preview_string_entities[$entity_type_id_string] ?? []);
$this->assertContains($entity_string_2->id(), $preview_string_entities[$entity_type_id_string] ?? []);
// Verify string entities workspace field is still 'preview'.
$string_revision = $storage_string_id->loadRevision($entity_string_1->getRevisionId());
$this->assertEquals('preview', $string_revision->{$workspace_field_string_id}->target_id);
}
/**
* Tests moving all tracked entities of all types between workspaces.
*
* @legacy-covers ::moveTrackedEntities
*/
public function testMoveAllTrackedEntities() : void {
$entity_type_id = 'entity_test_mulrevpub';
$entity_type_id_string = 'entity_test_mulrevpub_string_id';
/** @var \Drupal\workspaces\WorkspaceTrackerInterface $workspace_tracker */
$workspace_tracker = \Drupal::service('workspaces.tracker');
// Create entities of different types in 'preview'.
$this->switchToWorkspace('preview');
$this->createEntity($entity_type_id, [
'name' => 'Integer entity',
]);
$this->createEntity($entity_type_id_string, [
'id' => 'str_test',
'name' => 'String entity',
]);
// Move all entities from 'preview' to 'qa'.
$workspace_tracker->moveTrackedEntities('preview', 'qa');
$this->assertEmpty($workspace_tracker->getTrackedEntities('preview', $entity_type_id)[$entity_type_id] ?? []);
$this->assertEmpty($workspace_tracker->getTrackedEntities('preview', $entity_type_id_string)[$entity_type_id_string] ?? []);
$this->assertCount(1, $workspace_tracker->getTrackedEntities('qa', $entity_type_id)[$entity_type_id]);
$this->assertCount(1, $workspace_tracker->getTrackedEntities('qa', $entity_type_id_string)[$entity_type_id_string]);
}
/**
* Tests validation for moveTrackedEntities().
*
* @legacy-covers ::moveTrackedEntities
*/
public function testMoveTrackedEntitiesValidation(string $source_workspace_id, string $target_workspace_id, ?string $entity_type_id, ?array $entity_ids, string $exception_class, string $exception_message) : void {
/** @var \Drupal\workspaces\WorkspaceTrackerInterface $workspace_tracker */
$workspace_tracker = \Drupal::service('workspaces.tracker');
$this->expectException($exception_class);
$this->expectExceptionMessage($exception_message);
$workspace_tracker->moveTrackedEntities($source_workspace_id, $target_workspace_id, $entity_type_id, $entity_ids);
}
/**
* Data provider for testMoveTrackedEntitiesValidation().
*
* @return array
* Test cases with workspace IDs, entity type, entity IDs, and expected
* exceptions.
*/
public static function providerMoveTrackedEntitiesValidation() : array {
return [
'same source and target workspace' => [
'source_workspace_id' => 'qa',
'target_workspace_id' => 'qa',
'entity_type_id' => 'entity_test_mulrevpub',
'entity_ids' => NULL,
'exception_class' => \InvalidArgumentException::class,
'exception_message' => 'Source and target workspace IDs cannot be the same.',
],
'entity IDs without entity type' => [
'source_workspace_id' => 'stage',
'target_workspace_id' => 'qa',
'entity_type_id' => NULL,
'entity_ids' => [
1,
2,
3,
],
'exception_class' => \InvalidArgumentException::class,
'exception_message' => 'Entity type ID must be provided when entity IDs are specified.',
],
'source workspace is not top-level' => [
'source_workspace_id' => 'dev',
'target_workspace_id' => 'qa',
'entity_type_id' => 'entity_test_mulrevpub',
'entity_ids' => NULL,
'exception_class' => \DomainException::class,
'exception_message' => 'Both the source and target must be valid top-level workspaces.',
],
'target workspace is not top-level' => [
'source_workspace_id' => 'qa',
'target_workspace_id' => 'dev',
'entity_type_id' => 'entity_test_mulrevpub',
'entity_ids' => NULL,
'exception_class' => \DomainException::class,
'exception_message' => 'Both the source and target must be valid top-level workspaces.',
],
'source workspace has children' => [
'source_workspace_id' => 'stage',
'target_workspace_id' => 'qa',
'entity_type_id' => 'entity_test_mulrevpub',
'entity_ids' => NULL,
'exception_class' => \DomainException::class,
'exception_message' => 'Both the source and target must be valid top-level workspaces.',
],
];
}
}
Members
| Title Sort descending | Deprecated | Modifiers | Object type | Summary | Overriden Title | Overrides |
|---|---|---|---|---|---|---|
| AssertContentTrait::$content | protected | property | The current raw content. | |||
| AssertContentTrait::$drupalSettings | protected | property | The drupalSettings value from the current raw $content. | |||
| AssertContentTrait::$elements | protected | property | The XML structure parsed from the current raw $content. | 1 | ||
| AssertContentTrait::$plainTextContent | protected | property | The plain-text content of raw $content (text nodes). | |||
| AssertContentTrait::assertEscaped | protected | function | Passes if the raw text IS found escaped on the loaded page, fail otherwise. | |||
| AssertContentTrait::assertField | protected | function | Asserts that a field exists with the given name or ID. | |||
| AssertContentTrait::assertFieldById | Deprecated | protected | function | Asserts that a field exists with the given ID and value. | ||
| AssertContentTrait::assertFieldByName | protected | function | Asserts that a field exists with the given name and value. | |||
| AssertContentTrait::assertFieldByXPath | protected | function | Asserts that a field exists in the current page by the given XPath. | |||
| AssertContentTrait::assertFieldChecked | Deprecated | protected | function | Asserts that a checkbox field in the current page is checked. | ||
| AssertContentTrait::assertFieldsByValue | protected | function | Asserts that a field exists in the current page with a given Xpath result. | |||
| AssertContentTrait::assertLink | protected | function | Passes if a link with the specified label is found. | |||
| AssertContentTrait::assertLinkByHref | protected | function | Passes if a link containing a given href (part) is found. | |||
| AssertContentTrait::assertNoDuplicateIds | Deprecated | protected | function | Asserts that each HTML ID is used for just a single element. | ||
| AssertContentTrait::assertNoEscaped | protected | function | Passes if raw text IS NOT found escaped on loaded page, fail otherwise. | |||
| AssertContentTrait::assertNoField | Deprecated | protected | function | Asserts that a field does not exist with the given name or ID. | ||
| AssertContentTrait::assertNoFieldById | Deprecated | protected | function | Asserts that a field does not exist with the given ID and value. | ||
| AssertContentTrait::assertNoFieldByName | Deprecated | protected | function | Asserts that a field does not exist with the given name and value. | ||
| AssertContentTrait::assertNoFieldByXPath | Deprecated | protected | function | Asserts that a field does not exist or its value does not match, by XPath. | ||
| AssertContentTrait::assertNoFieldChecked | Deprecated | protected | function | Asserts that a checkbox field in the current page is not checked. | ||
| AssertContentTrait::assertNoLink | protected | function | Passes if a link with the specified label is not found. | |||
| AssertContentTrait::assertNoLinkByHref | Deprecated | protected | function | Passes if a link containing a given href (part) is not found. | ||
| AssertContentTrait::assertNoLinkByHrefInMainRegion | Deprecated | protected | function | Passes if a link containing a given href is not found in the main region. | ||
| AssertContentTrait::assertNoOption | Deprecated | protected | function | Asserts that a select option in the current page does not exist. | ||
| AssertContentTrait::assertNoOptionSelected | Deprecated | protected | function | Asserts that a select option in the current page is not checked. | ||
| AssertContentTrait::assertNoPattern | protected | function | Triggers a pass if the perl regex pattern is not found in raw content. | |||
| AssertContentTrait::assertNoRaw | protected | function | Passes if the raw text is NOT found on the loaded page, fail otherwise. | |||
| AssertContentTrait::assertNoText | protected | function | Passes if the page (with HTML stripped) does not contains the text. | |||
| AssertContentTrait::assertNoTitle | protected | function | Pass if the page title is not the given string. | |||
| AssertContentTrait::assertNoUniqueText | Deprecated | protected | function | Passes if the text is found MORE THAN ONCE on the text version of the page. | ||
| AssertContentTrait::assertOption | protected | function | Asserts that a select option in the current page exists. | |||
| AssertContentTrait::assertOptionByText | Deprecated | protected | function | Asserts that a select option with the visible text exists. | ||
| AssertContentTrait::assertOptionSelected | Deprecated | protected | function | Asserts that a select option in the current page is checked. | ||
| AssertContentTrait::assertOptionSelectedWithDrupalSelector | Deprecated | protected | function | Asserts that a select option in the current page is checked. | ||
| AssertContentTrait::assertOptionWithDrupalSelector | protected | function | Asserts that a select option in the current page exists. | |||
| AssertContentTrait::assertPattern | protected | function | Triggers a pass if the Perl regex pattern is found in the raw content. | |||
| AssertContentTrait::assertRaw | protected | function | Passes if the raw text IS found on the loaded page, fail otherwise. | |||
| AssertContentTrait::assertText | protected | function | Passes if the page (with HTML stripped) contains the text. | |||
| AssertContentTrait::assertTextHelper | protected | function | Helper for assertText and assertNoText. | |||
| AssertContentTrait::assertTextPattern | Deprecated | protected | function | Asserts that a Perl regex pattern is found in the plain-text content. | ||
| AssertContentTrait::assertThemeOutput | protected | function | Asserts themed output. | |||
| AssertContentTrait::assertTitle | protected | function | Pass if the page title is the given string. | |||
| AssertContentTrait::assertUniqueText | Deprecated | protected | function | Passes if the text is found ONLY ONCE on the text version of the page. | ||
| AssertContentTrait::assertUniqueTextHelper | Deprecated | protected | function | Helper for assertUniqueText and assertNoUniqueText. | ||
| AssertContentTrait::buildXPathQuery | protected | function | Builds an XPath query. | |||
| AssertContentTrait::constructFieldXpath | protected | function | Helper: Constructs an XPath for the given set of attributes and value. | |||
| AssertContentTrait::cssSelect | protected | function | Searches elements using a CSS selector in the raw content. | |||
| AssertContentTrait::getAllOptions | protected | function | Get all option elements, including nested options, in a select. | |||
| AssertContentTrait::getDrupalSettings | protected | function | Gets the value of drupalSettings for the currently-loaded page. | |||
| AssertContentTrait::getRawContent | protected | function | Gets the current raw content. | |||
| AssertContentTrait::getSelectedItem | protected | function | Get the selected value from a select field. | |||
| AssertContentTrait::getTextContent | protected | function | Retrieves the plain-text content from the current raw content. | |||
| AssertContentTrait::parse | protected | function | Parse content returned from curlExec using DOM and SimpleXML. | |||
| AssertContentTrait::removeWhiteSpace | protected | function | Removes all white-space between HTML tags from the raw content. | |||
| AssertContentTrait::setDrupalSettings | protected | function | Sets the value of drupalSettings for the currently-loaded page. | |||
| AssertContentTrait::setRawContent | protected | function | Sets the raw content (e.g. HTML). | |||
| AssertContentTrait::xpath | protected | function | Performs an xpath search on the contents of the internal browser. | |||
| ConfigTestTrait::configImporter | protected | function | Returns a ConfigImporter object to import test configuration. | |||
| ConfigTestTrait::copyConfig | protected | function | Copies configuration objects from source storage to target storage. | |||
| ExpectDeprecationTrait::expectDeprecation | public | function | Adds an expected deprecation. | |||
| ExpectDeprecationTrait::setUpErrorHandler | public | function | Sets up the test error handler. | |||
| ExpectDeprecationTrait::tearDownErrorHandler | public | function | Tears down the test error handler. | |||
| ExtensionListTestTrait::getModulePath | protected | function | Gets the path for the specified module. | |||
| ExtensionListTestTrait::getThemePath | protected | function | Gets the path for the specified theme. | |||
| KernelTestBase::$classLoader | protected | property | ||||
| KernelTestBase::$configImporter | protected | property | @todo Move into Config test base class. | 6 | ||
| KernelTestBase::$configSchemaCheckerExclusions | protected static | property | An array of config object names that are excluded from schema checking. | 4 | ||
| KernelTestBase::$container | protected | property | ||||
| KernelTestBase::$databasePrefix | protected | property | ||||
| KernelTestBase::$keyValue | protected | property | The key_value service that must persist between container rebuilds. | |||
| KernelTestBase::$root | protected | property | The app root. | |||
| KernelTestBase::$siteDirectory | protected | property | ||||
| KernelTestBase::$strictConfigSchema | protected | property | Set to TRUE to strict check all configuration saved. | 10 | ||
| KernelTestBase::$usesSuperUserAccessPolicy | protected | property | Set to TRUE to make user 1 a super user. | 1 | ||
| KernelTestBase::$vfsRoot | protected | property | The virtual filesystem root directory. | |||
| KernelTestBase::assertPostConditions | protected | function | 1 | |||
| KernelTestBase::bootEnvironment | protected | function | Bootstraps a basic test environment. | |||
| KernelTestBase::bootKernel | protected | function | Bootstraps a kernel for a test. | 1 | ||
| KernelTestBase::config | protected | function | Configuration accessor for tests. Returns non-overridden configuration. | |||
| KernelTestBase::disableModules | protected | function | Disables modules for this test. | |||
| KernelTestBase::enableModules | protected | function | Enables modules for this test. | 2 | ||
| KernelTestBase::getConfigSchemaExclusions | protected | function | Gets the config schema exclusions for this test. | |||
| KernelTestBase::getDatabaseConnectionInfo | protected | function | Returns the Database connection info to be used for this test. | 3 | ||
| KernelTestBase::getDatabasePrefix | public | function | ||||
| KernelTestBase::getExtensionsForModules | private | function | Returns Extension objects for $modules to install. | |||
| KernelTestBase::getModulesToEnable | protected static | function | Returns the modules to install for this test. | |||
| KernelTestBase::initFileCache | protected | function | Initializes the FileCache component. | |||
| KernelTestBase::installConfig | protected | function | Installs default configuration for a given list of modules. | |||
| KernelTestBase::installEntitySchema | protected | function | Installs the storage schema for a specific entity type. | |||
| KernelTestBase::installSchema | protected | function | Installs database tables from a module schema definition. | |||
| KernelTestBase::register | public | function | Registers test-specific services. | Overrides ServiceProviderInterface::register | 35 | |
| KernelTestBase::render | protected | function | Renders a render array. | 1 | ||
| KernelTestBase::setDebugDumpHandler | public static | function | Registers the dumper CLI handler when the DebugDump extension is enabled. | |||
| KernelTestBase::setInstallProfile | protected | function | Sets the install profile and rebuilds the container to update it. | |||
| KernelTestBase::setSetting | protected | function | Sets an in-memory Settings variable. | |||
| KernelTestBase::setUpFilesystem | protected | function | Sets up the filesystem, so things like the file directory. | 3 | ||
| KernelTestBase::tearDown | protected | function | 9 | |||
| KernelTestBase::tearDownCloseDatabaseConnection | public | function | Additional tear down method to close the connection at the end. | |||
| KernelTestBase::vfsDump | protected | function | Dumps the current state of the virtual filesystem to STDOUT. | |||
| KernelTestBase::__construct | public | function | ||||
| KernelTestBase::__sleep | public | function | Prevents serializing any properties. | |||
| RandomGeneratorTrait::getRandomGenerator | protected | function | Gets the random generator for the utility methods. | |||
| RandomGeneratorTrait::randomMachineName | protected | function | Generates a unique random string containing letters and numbers. | |||
| RandomGeneratorTrait::randomObject | public | function | Generates a random PHP object. | |||
| RandomGeneratorTrait::randomString | public | function | Generates a pseudo-random string of ASCII characters of codes 32 to 126. | |||
| StorageCopyTrait::replaceStorageContents | protected static | function | Copy the configuration from one storage to another and remove stale items. | |||
| TestRequirementsTrait::getDrupalRoot | protected static | function | Returns the Drupal root directory. | |||
| UserCreationTrait::checkPermissions | protected | function | Checks whether a given list of permission names is valid. | |||
| UserCreationTrait::createAdminRole | protected | function | Creates an administrative role. | |||
| UserCreationTrait::createRole | protected | function | Creates a role with specified permissions. | |||
| UserCreationTrait::createUser | protected | function | Create a user with a given set of permissions. | 1 | ||
| UserCreationTrait::grantPermissions | protected | function | Grant permissions to a user role. | |||
| UserCreationTrait::setCurrentUser | protected | function | Switch the current logged in user. | |||
| UserCreationTrait::setUpCurrentUser | protected | function | Creates a random user account and sets it as current user. | |||
| WorkspaceTestTrait::$workspaceManager | protected | property | The workspaces manager. | 1 | ||
| WorkspaceTestTrait::$workspaces | protected | property | An array of test workspaces, keyed by workspace ID. | |||
| WorkspaceTestTrait::assertWorkspaceAssociation | protected | function | Checks the workspace_association records for a test scenario. | |||
| WorkspaceTestTrait::createEntity | protected | function | Creates an entity. | 1 | ||
| WorkspaceTestTrait::createWorkspaceHierarchy | protected | function | Creates a test workspace hierarchy. | |||
| WorkspaceTestTrait::getUnassociatedRevisions | protected | function | Returns all the revisions which are not associated with any workspace. | |||
| WorkspaceTestTrait::ignoreEntityType | protected | function | Marks an entity type as ignored in a workspace. | |||
| WorkspaceTestTrait::initializeWorkspacesModule | protected | function | Enables the Workspaces module and creates two workspaces. | |||
| WorkspaceTestTrait::switchToLive | protected | function | Switches the test runner's context to Live. | |||
| WorkspaceTestTrait::switchToWorkspace | protected | function | Sets a given workspace as active. | |||
| WorkspaceTrackerTest::$entityTypeManager | protected | property | The entity type manager. | |||
| WorkspaceTrackerTest::$modules | protected static | property | Modules to install. | Overrides KernelTestBase::$modules | ||
| WorkspaceTrackerTest::assertWorkspaceAssociations | protected | function | Checks the workspace associations for a test scenario. | |||
| WorkspaceTrackerTest::getEntityTypeIds | public static | function | The data provider for ::testWorkspaceAssociation(). | |||
| WorkspaceTrackerTest::providerMoveTrackedEntitiesValidation | public static | function | Data provider for testMoveTrackedEntitiesValidation(). | |||
| WorkspaceTrackerTest::setUp | protected | function | Overrides KernelTestBase::setUp | |||
| WorkspaceTrackerTest::testMoveAllTrackedEntities | public | function | Tests moving all tracked entities of all types between workspaces. | |||
| WorkspaceTrackerTest::testMoveTrackedEntitiesOfSpecificType | public | function | Tests moving all entities of a specific type while leaving others. | |||
| WorkspaceTrackerTest::testMoveTrackedEntitiesValidation | public | function | Tests validation for moveTrackedEntities(). | |||
| WorkspaceTrackerTest::testMoveTrackedEntitiesWithMultipleRevisions | public | function | Tests moving an entity with multiple revisions between workspaces. | |||
| WorkspaceTrackerTest::testWorkspaceAssociation | public | function | Tests the revisions tracked by a workspace. | |||
| WorkspaceTrackerTest::testWorkspaceAssociationForListing | public | function | Tests the count of revisions returned for tracked entities listing. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.