class BasicTrackerTest in Search API 8
Tests the "default" tracker plugin.
@group search_api
@coversDefaultClass \Drupal\search_api\Plugin\search_api\tracker\Basic
Hierarchy
- class \Drupal\KernelTests\KernelTestBase extends \PHPUnit\Framework\TestCase implements ServiceProviderInterface uses AssertContentTrait, AssertLegacyTrait, AssertHelperTrait, ConfigTestTrait, PhpunitCompatibilityTrait, RandomGeneratorTrait, TestRequirementsTrait
- class \Drupal\Tests\search_api\Kernel\BasicTrackerTest
Expanded class hierarchy of BasicTrackerTest
File
- tests/
src/ Kernel/ BasicTrackerTest.php, line 19
Namespace
Drupal\Tests\search_api\KernelView source
class BasicTrackerTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
public static $modules = [
'user',
'search_api',
'system',
];
/**
* The tracker plugin used for this test.
*
* @var \Drupal\search_api\Plugin\search_api\tracker\Basic
*/
protected $tracker;
/**
* The search index used for this test.
*
* @var \Drupal\search_api\IndexInterface
*/
protected $index;
/**
* The test time service used for this test.
*
* @var \Drupal\Tests\search_api\Kernel\TestTimeService
*/
protected $timeService;
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp();
$this
->installSchema('search_api', [
'search_api_item',
]);
$this
->installConfig('search_api');
// Do not use a batch for tracking the initial items after creating an
// index when running the tests via the GUI. Otherwise, it seems Drupal's
// Batch API gets confused and the test fails.
if (!Utility::isRunningInCli()) {
\Drupal::state()
->set('search_api_use_tracking_batch', FALSE);
}
$this->index = Index::create([
'id' => 'index',
'tracker_settings' => [
'default' => [],
],
]);
$this->tracker = $this->index
->getTrackerInstance();
$this->timeService = new TestTimeService();
$this->tracker
->setTimeService($this->timeService);
}
/**
* Tests tracking.
*
* @param string $indexing_order
* The indexing order setting to use – "fifo" or "lifo".
*
* @dataProvider trackingDataProvider
*/
public function testTracking($indexing_order) {
// Add a logger that throws an exception when used, so a caught exception
// within any of the tracker methods will still cause a test fail.
/** @var \PHPUnit\Framework\MockObject\MockObject|\Psr\Log\LoggerInterface $logger */
$logger = $this
->createMock(LoggerInterface::class);
$logger
->method('log')
->willReturnCallback(function ($level, $message, array $variables) {
$error = 'Tracking operation threw ';
$error .= strtr($message, $variables);
throw new \Exception($error);
});
$this->tracker
->setLogger($logger);
$this->tracker
->setConfiguration([
'indexing_order' => $indexing_order,
]);
$datasource_1 = 'test1';
$datasource_2 = 'test2';
$ids = [];
foreach ([
$datasource_1,
$datasource_2,
] as $num => $datasource_id) {
foreach ([
1,
2,
3,
] as $raw_id) {
$ids[$num][] = Utility::createCombinedId($datasource_id, $raw_id);
}
}
// Make sure we start from a "clean slate".
$this
->assertIndexingStatus(0, 0);
$this
->assertIndexingStatus(0, 0, $datasource_1);
$this
->assertIndexingStatus(0, 0, $datasource_2);
// Make sure tracking items as deleted, updated or indexed has no effect if
// none were inserted before.
$this->tracker
->trackItemsDeleted([
$ids[0][0],
]);
$this
->assertIndexingStatus(0, 0);
$this->tracker
->trackItemsUpdated([
$ids[0][0],
]);
$this
->assertIndexingStatus(0, 0);
$this->tracker
->trackItemsIndexed([
$ids[0][0],
]);
$this
->assertIndexingStatus(0, 0);
// Now, finally, actually do something sensible and insert some items.
$this->tracker
->trackItemsInserted([
$ids[0][0],
]);
$this->tracker
->trackItemsInserted([
$ids[1][1],
]);
$this->timeService
->advanceTime();
$this->tracker
->trackItemsInserted([
$ids[0][2],
$ids[1][0],
]);
$this->timeService
->advanceTime();
// Make sure re-inserting an item doesn't cause problems.
$this->tracker
->trackItemsInserted([
$ids[0][1],
$ids[1][2],
$ids[0][0],
]);
$this->timeService
->advanceTime();
$this
->assertIndexingStatus(0, 6);
$this
->assertIndexingStatus(0, 3, $datasource_1);
$this
->assertIndexingStatus(0, 3, $datasource_2);
// Make sure the remaining items are returned as expected.
$fifo = $indexing_order === 'fifo';
$to_index = $this->tracker
->getRemainingItems(4);
sort($to_index);
if ($fifo) {
$expected = [
$ids[0][0],
$ids[0][2],
$ids[1][0],
$ids[1][1],
];
}
else {
$expected = [
$ids[0][1],
$ids[0][2],
$ids[1][0],
$ids[1][2],
];
}
$this
->assertEquals($expected, $to_index);
$to_index = $this->tracker
->getRemainingItems(1, $datasource_1);
if ($fifo) {
$expected = [
$ids[0][0],
];
}
else {
$expected = [
$ids[0][1],
];
}
$this
->assertEquals($expected, $to_index);
$to_index = $this->tracker
->getRemainingItems(-1);
sort($to_index);
$expected = array_merge($ids[0], $ids[1]);
$this
->assertEquals($expected, $to_index);
$to_index = $this->tracker
->getRemainingItems(-1, $datasource_2);
sort($to_index);
$this
->assertEquals($ids[1], $to_index);
// Make sure that tracking an unindexed item as updated will not affect its
// position for FIFO, but will get it to the front for LIFO. (If we do this
// with the item that's in front for FIFO anyways, we can use the same code
// in both cases.)
$this->tracker
->trackItemsUpdated([
$ids[0][0],
]);
$this->timeService
->advanceTime();
$to_index = $this->tracker
->getRemainingItems(1, $datasource_1);
$this
->assertEquals([
$ids[0][0],
], $to_index);
// Make sure calling methods with an empty $ids array doesn't blow anything
// up.
$this->tracker
->trackItemsInserted([]);
$this->tracker
->trackItemsUpdated([]);
$this->tracker
->trackItemsIndexed([]);
$this->tracker
->trackItemsDeleted([]);
// None of this should have changed the indexing status of any items.
$this
->assertIndexingStatus(0, 6);
$this
->assertIndexingStatus(0, 3, $datasource_1);
$this
->assertIndexingStatus(0, 3, $datasource_2);
// Now, change the status of some of the items.
$this->tracker
->trackItemsIndexed([
$ids[0][0],
$ids[0][1],
$ids[1][0],
]);
$this
->assertIndexingStatus(3, 6);
$this
->assertIndexingStatus(2, 3, $datasource_1);
$this
->assertIndexingStatus(1, 3, $datasource_2);
$to_index = $this->tracker
->getRemainingItems(-1);
sort($to_index);
$expected = [
$ids[0][2],
$ids[1][1],
$ids[1][2],
];
$this
->assertEquals($expected, $to_index);
$this->tracker
->trackItemsUpdated([
$ids[0][0],
$ids[0][2],
]);
$this->timeService
->advanceTime();
$this
->assertIndexingStatus(2, 6);
$this
->assertIndexingStatus(1, 3, $datasource_1);
$this
->assertIndexingStatus(1, 3, $datasource_2);
$to_index = $this->tracker
->getRemainingItems(-1);
sort($to_index);
array_unshift($expected, $ids[0][0]);
$this
->assertEquals($expected, $to_index);
$this->tracker
->trackItemsDeleted([
$ids[1][0],
$ids[1][2],
]);
$this
->assertIndexingStatus(1, 4);
$this
->assertIndexingStatus(1, 3, $datasource_1);
$this
->assertIndexingStatus(0, 1, $datasource_2);
$to_index = $this->tracker
->getRemainingItems(-1);
sort($to_index);
// The last element of $expected is $ids[1][2], which we just deleted.
unset($expected[3]);
$this
->assertEquals($expected, $to_index);
// Make sure the right items are "at the front" of the queue in each case.
if ($fifo) {
// These are the only two (remaining) items that were never indexed, so
// they still have their original insert time stamp and thus go first.
$expected = [
$ids[0][2],
$ids[1][1],
];
}
else {
// We just tracked an update for both of these, so they go first.
$expected = [
$ids[0][0],
$ids[0][2],
];
}
$to_index = $this->tracker
->getRemainingItems(2);
sort($to_index);
$this
->assertEquals($expected, $to_index);
// Some more status changes.
$this->tracker
->trackItemsInserted([
$ids[1][2],
]);
$this->timeService
->advanceTime();
$this
->assertIndexingStatus(1, 5);
$this
->assertIndexingStatus(1, 3, $datasource_1);
$this
->assertIndexingStatus(0, 2, $datasource_2);
$this->tracker
->trackItemsIndexed(array_merge($ids[0], $ids[1]));
$this
->assertIndexingStatus(5, 5);
$this
->assertIndexingStatus(3, 3, $datasource_1);
$this
->assertIndexingStatus(2, 2, $datasource_2);
$this->tracker
->trackAllItemsUpdated($datasource_1);
$this->timeService
->advanceTime();
$this
->assertIndexingStatus(2, 5);
$this
->assertIndexingStatus(0, 3, $datasource_1);
$this
->assertIndexingStatus(2, 2, $datasource_2);
$this->tracker
->trackItemsIndexed([
$ids[0][0],
]);
$this
->assertIndexingStatus(3, 5);
$this
->assertIndexingStatus(1, 3, $datasource_1);
$this
->assertIndexingStatus(2, 2, $datasource_2);
$this->tracker
->trackAllItemsUpdated();
$this->timeService
->advanceTime();
$this
->assertIndexingStatus(0, 5);
$this
->assertIndexingStatus(0, 3, $datasource_1);
$this
->assertIndexingStatus(0, 2, $datasource_2);
$this->tracker
->trackAllItemsDeleted($datasource_2);
$this
->assertIndexingStatus(0, 3);
$this
->assertIndexingStatus(0, 3, $datasource_1);
$this
->assertIndexingStatus(0, 0, $datasource_2);
$this->tracker
->trackAllItemsDeleted();
$this
->assertIndexingStatus(0, 0);
$this
->assertIndexingStatus(0, 0, $datasource_1);
$this
->assertIndexingStatus(0, 0, $datasource_2);
}
/**
* Provides test data for testTracking().
*
* @return array[]
* An array of argument arrays for testTracking().
*
* @see \Drupal\Tests\search_api\Kernel\BasicTrackerTest::testTracking()
*/
public function trackingDataProvider() {
return [
'FIFO' => [
'fifo',
],
'LIFO' => [
'lifo',
],
];
}
/**
* Tests whether a method properly handles exceptions.
*
* @param string $tracker_method
* The method to test.
* @param array $args
* (optional) The arguments to pass to the method.
*
* @dataProvider exceptionHandlingDataProvider
*/
public function testExceptionHandling($tracker_method, array $args = []) {
/** @var \PHPUnit\Framework\MockObject\MockObject|\Drupal\Core\Database\Connection $connection */
$connection = $this
->getMockBuilder(Connection::class)
->disableOriginalConstructor()
->getMock();
foreach ([
'select',
'insert',
'update',
'delete',
] as $method) {
$connection
->method($method)
->willThrowException(new \Exception());
}
$transaction = $this
->getMockBuilder(Transaction::class)
->disableOriginalConstructor()
->getMock();
$rolled_back = FALSE;
$rollback = function () use (&$rolled_back) {
$rolled_back = TRUE;
};
$transaction
->method('rollback')
->willReturnCallback($rollback);
$connection
->method('startTransaction')
->willReturn($transaction);
$this->tracker
->setDatabaseConnection($connection);
/** @var \PHPUnit\Framework\MockObject\MockObject|\Psr\Log\LoggerInterface $logger */
$logger = $this
->createMock(LoggerInterface::class);
$log = [];
$logger
->method('log')
->willReturnCallback(function () use (&$log) {
$log[] = func_get_args();
});
$this->tracker
->setLogger($logger);
call_user_func_array([
$this->tracker,
$tracker_method,
], $args);
$this
->assertCount(1, $log);
$this
->assertStringStartsWith('%type', $log[0][1]);
$this
->assertFalse($rolled_back);
}
/**
* Provides test data for testExceptionHandling().
*
* @return array[]
* An array of argument arrays for testExceptionHandling().
*
* @see \Drupal\Tests\search_api\Kernel\BasicTrackerTest::testExceptionHandling()
*/
public function exceptionHandlingDataProvider() {
return [
'trackItemsInserted()' => [
'trackItemsInserted',
[
[
'',
],
],
],
'trackItemsUpdated()' => [
'trackItemsUpdated',
[
[
'',
],
],
],
'trackAllItemsUpdated()' => [
'trackAllItemsUpdated',
],
'trackItemsIndexed()' => [
'trackItemsIndexed',
[
[
'',
],
],
],
'trackItemsDeleted()' => [
'trackItemsDeleted',
],
'trackAllItemsDeleted()' => [
'trackAllItemsDeleted',
],
'getRemainingItems()' => [
'getRemainingItems',
],
'getTotalItemsCount()' => [
'getTotalItemsCount',
],
'getIndexedItemsCount()' => [
'getIndexedItemsCount',
],
'getRemainingItemsCount()' => [
'getRemainingItemsCount',
],
];
}
/**
* Asserts that the current tracking status is as expected.
*
* @param int $indexed
* The expected number of indexed items.
* @param int $total
* The expected total number of items.
* @param string|null $datasource_id
* (optional) The datasource for which to check indexing status, or NULL to
* check for the whole index.
*/
protected function assertIndexingStatus($indexed, $total, $datasource_id = NULL) {
$datasource = $datasource_id ? " for datasource {$datasource_id}" : '';
$actual_indexed = $this->tracker
->getIndexedItemsCount($datasource_id);
$this
->assertEquals($indexed, $actual_indexed, "{$actual_indexed} items indexed{$datasource}, {$indexed} expected.");
$actual_total = $this->tracker
->getTotalItemsCount($datasource_id);
$this
->assertEquals($total, $actual_total, "{$actual_total} items tracked in total{$datasource}, {$total} expected.");
$remaining = $total - $indexed;
$actual_remaining = $this->tracker
->getRemainingItemsCount($datasource_id);
$this
->assertEquals($remaining, $actual_remaining, "{$actual_remaining} items remaining to be indexed{$datasource}, {$remaining} expected.");
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AssertContentTrait:: |
protected | property | The current raw content. | |
AssertContentTrait:: |
protected | property | The drupalSettings value from the current raw $content. | |
AssertContentTrait:: |
protected | property | The XML structure parsed from the current raw $content. | 1 |
AssertContentTrait:: |
protected | property | The plain-text content of raw $content (text nodes). | |
AssertContentTrait:: |
protected | function | Passes if the raw text IS found escaped on the loaded page, fail otherwise. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists with the given name or ID. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists with the given ID and value. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists with the given name and value. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists in the current page by the given XPath. | |
AssertContentTrait:: |
protected | function | Asserts that a checkbox field in the current page is checked. | |
AssertContentTrait:: |
protected | function | Asserts that a field exists in the current page with a given Xpath result. | |
AssertContentTrait:: |
protected | function | Passes if a link with the specified label is found. | |
AssertContentTrait:: |
protected | function | Passes if a link containing a given href (part) is found. | |
AssertContentTrait:: |
protected | function | Asserts that each HTML ID is used for just a single element. | |
AssertContentTrait:: |
protected | function | Passes if the raw text IS NOT found escaped on the loaded page, fail otherwise. | |
AssertContentTrait:: |
protected | function | Asserts that a field does not exist with the given name or ID. | |
AssertContentTrait:: |
protected | function | Asserts that a field does not exist with the given ID and value. | |
AssertContentTrait:: |
protected | function | Asserts that a field does not exist with the given name and value. | |
AssertContentTrait:: |
protected | function | Asserts that a field does not exist or its value does not match, by XPath. | |
AssertContentTrait:: |
protected | function | Asserts that a checkbox field in the current page is not checked. | |
AssertContentTrait:: |
protected | function | Passes if a link with the specified label is not found. | |
AssertContentTrait:: |
protected | function | Passes if a link containing a given href (part) is not found. | |
AssertContentTrait:: |
protected | function | Passes if a link containing a given href is not found in the main region. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page does not exist. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page is not checked. | |
AssertContentTrait:: |
protected | function | Triggers a pass if the perl regex pattern is not found in raw content. | |
AssertContentTrait:: |
protected | function | Passes if the raw text is NOT found on the loaded page, fail otherwise. | |
AssertContentTrait:: |
protected | function | Passes if the page (with HTML stripped) does not contains the text. | |
AssertContentTrait:: |
protected | function | Pass if the page title is not the given string. | |
AssertContentTrait:: |
protected | function | Passes if the text is found MORE THAN ONCE on the text version of the page. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page exists. | |
AssertContentTrait:: |
protected | function | Asserts that a select option with the visible text exists. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page is checked. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page is checked. | |
AssertContentTrait:: |
protected | function | Asserts that a select option in the current page exists. | |
AssertContentTrait:: |
protected | function | Triggers a pass if the Perl regex pattern is found in the raw content. | |
AssertContentTrait:: |
protected | function | Passes if the raw text IS found on the loaded page, fail otherwise. | |
AssertContentTrait:: |
protected | function | Passes if the page (with HTML stripped) contains the text. | |
AssertContentTrait:: |
protected | function | Helper for assertText and assertNoText. | |
AssertContentTrait:: |
protected | function | Asserts that a Perl regex pattern is found in the plain-text content. | |
AssertContentTrait:: |
protected | function | Asserts themed output. | |
AssertContentTrait:: |
protected | function | Pass if the page title is the given string. | |
AssertContentTrait:: |
protected | function | Passes if the text is found ONLY ONCE on the text version of the page. | |
AssertContentTrait:: |
protected | function | Helper for assertUniqueText and assertNoUniqueText. | |
AssertContentTrait:: |
protected | function | Builds an XPath query. | |
AssertContentTrait:: |
protected | function | Helper: Constructs an XPath for the given set of attributes and value. | |
AssertContentTrait:: |
protected | function | Searches elements using a CSS selector in the raw content. | |
AssertContentTrait:: |
protected | function | Get all option elements, including nested options, in a select. | |
AssertContentTrait:: |
protected | function | Gets the value of drupalSettings for the currently-loaded page. | |
AssertContentTrait:: |
protected | function | Gets the current raw content. | |
AssertContentTrait:: |
protected | function | Get the selected value from a select field. | |
AssertContentTrait:: |
protected | function | Retrieves the plain-text content from the current raw content. | |
AssertContentTrait:: |
protected | function | Get the current URL from the cURL handler. | 1 |
AssertContentTrait:: |
protected | function | Parse content returned from curlExec using DOM and SimpleXML. | |
AssertContentTrait:: |
protected | function | Removes all white-space between HTML tags from the raw content. | |
AssertContentTrait:: |
protected | function | Sets the value of drupalSettings for the currently-loaded page. | |
AssertContentTrait:: |
protected | function | Sets the raw content (e.g. HTML). | |
AssertContentTrait:: |
protected | function | Performs an xpath search on the contents of the internal browser. | |
AssertHelperTrait:: |
protected static | function | Casts MarkupInterface objects into strings. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertTrue() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertSame() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertNotEquals() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertNotSame() instead. | |
AssertLegacyTrait:: |
protected | function | Deprecated Scheduled for removal in Drupal 10.0.0. Use self::assertTrue() instead. | |
AssertLegacyTrait:: |
protected | function | ||
BasicTrackerTest:: |
protected | property | The search index used for this test. | |
BasicTrackerTest:: |
public static | property |
Modules to enable. Overrides KernelTestBase:: |
|
BasicTrackerTest:: |
protected | property | The test time service used for this test. | |
BasicTrackerTest:: |
protected | property | The tracker plugin used for this test. | |
BasicTrackerTest:: |
protected | function | Asserts that the current tracking status is as expected. | |
BasicTrackerTest:: |
public | function | Provides test data for testExceptionHandling(). | |
BasicTrackerTest:: |
public | function |
Overrides KernelTestBase:: |
|
BasicTrackerTest:: |
public | function | Tests whether a method properly handles exceptions. | |
BasicTrackerTest:: |
public | function | Tests tracking. | |
BasicTrackerTest:: |
public | function | Provides test data for testTracking(). | |
ConfigTestTrait:: |
protected | function | Returns a ConfigImporter object to import test configuration. | |
ConfigTestTrait:: |
protected | function | Copies configuration objects from source storage to target storage. | |
KernelTestBase:: |
protected | property | Back up and restore any global variables that may be changed by tests. | |
KernelTestBase:: |
protected | property | Back up and restore static class properties that may be changed by tests. | |
KernelTestBase:: |
protected | property | Contains a few static class properties for performance. | |
KernelTestBase:: |
protected | property | ||
KernelTestBase:: |
protected | property | @todo Move into Config test base class. | 7 |
KernelTestBase:: |
protected static | property | An array of config object names that are excluded from schema checking. | |
KernelTestBase:: |
protected | property | ||
KernelTestBase:: |
protected | property | ||
KernelTestBase:: |
protected | property | Do not forward any global state from the parent process to the processes that run the actual tests. | |
KernelTestBase:: |
protected | property | The app root. | |
KernelTestBase:: |
protected | property | Kernel tests are run in separate processes because they allow autoloading of code from extensions. Running the test in a separate process isolates this behavior from other tests. Subclasses should not override this property. | |
KernelTestBase:: |
protected | property | ||
KernelTestBase:: |
protected | property | Set to TRUE to strict check all configuration saved. | 6 |
KernelTestBase:: |
protected | property | The virtual filesystem root directory. | |
KernelTestBase:: |
protected | function | 1 | |
KernelTestBase:: |
protected | function | Bootstraps a basic test environment. | |
KernelTestBase:: |
private | function | Bootstraps a kernel for a test. | |
KernelTestBase:: |
protected | function | Configuration accessor for tests. Returns non-overridden configuration. | |
KernelTestBase:: |
protected | function | Disables modules for this test. | |
KernelTestBase:: |
protected | function | Enables modules for this test. | |
KernelTestBase:: |
protected | function | Gets the config schema exclusions for this test. | |
KernelTestBase:: |
protected | function | Returns the Database connection info to be used for this test. | 1 |
KernelTestBase:: |
public | function | ||
KernelTestBase:: |
private | function | Returns Extension objects for $modules to enable. | |
KernelTestBase:: |
private static | function | Returns the modules to enable for this test. | |
KernelTestBase:: |
protected | function | Initializes the FileCache component. | |
KernelTestBase:: |
protected | function | Installs default configuration for a given list of modules. | |
KernelTestBase:: |
protected | function | Installs the storage schema for a specific entity type. | |
KernelTestBase:: |
protected | function | Installs database tables from a module schema definition. | |
KernelTestBase:: |
protected | function | Returns whether the current test method is running in a separate process. | |
KernelTestBase:: |
protected | function | ||
KernelTestBase:: |
public | function |
Registers test-specific services. Overrides ServiceProviderInterface:: |
26 |
KernelTestBase:: |
protected | function | Renders a render array. | 1 |
KernelTestBase:: |
protected | function | Sets the install profile and rebuilds the container to update it. | |
KernelTestBase:: |
protected | function | Sets an in-memory Settings variable. | |
KernelTestBase:: |
public static | function | 1 | |
KernelTestBase:: |
protected | function | Sets up the filesystem, so things like the file directory. | 2 |
KernelTestBase:: |
protected | function | Stops test execution. | |
KernelTestBase:: |
protected | function | 6 | |
KernelTestBase:: |
public | function | @after | |
KernelTestBase:: |
protected | function | Dumps the current state of the virtual filesystem to STDOUT. | |
KernelTestBase:: |
public | function | BC: Automatically resolve former KernelTestBase class properties. | |
KernelTestBase:: |
public | function | Prevents serializing any properties. | |
PhpunitCompatibilityTrait:: |
public | function | Returns a mock object for the specified class using the available method. | |
PhpunitCompatibilityTrait:: |
public | function | Compatibility layer for PHPUnit 6 to support PHPUnit 4 code. | |
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. | |
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. |