TestDeprecatedTestHooks.php
Namespace
Drupal\Tests\simpletest\KernelFile
-
core/
modules/ simpletest/ tests/ src/ Kernel/ TestDeprecatedTestHooks.php
View source
<?php
namespace Drupal\Tests\simpletest\Kernel;
use Drupal\Core\Database\Connection;
use Drupal\Core\Database\Query\Insert;
use Drupal\Core\Render\Renderer;
use Drupal\Core\StreamWrapper\PublicStream;
use Drupal\KernelTests\KernelTestBase;
use Drupal\simpletest\TestDiscovery;
use Drupal\simpletest\WebTestBase;
/**
* Test the deprecation messages for Simpletest test hooks.
*
* @group simpletest
* @group legacy
*/
class TestDeprecatedTestHooks extends KernelTestBase {
/**
* {@inheritdoc}
*/
public static $modules = [
'simpletest',
'simpletest_deprecation_test',
];
/**
* @expectedDeprecation The deprecated hook hook_test_group_finished() is implemented in these functions: simpletest_deprecation_test_test_group_finished(). Convert your test to a PHPUnit-based one and implement test listeners. See https://www.drupal.org/node/2934242
*/
public function testHookTestGroupFinished() {
// @todo Mock the messenger service and add expectations when
// \Drupal::messenger() actually uses the service.
// @see https://www.drupal.org/node/2928994
$this->assertNull(_simpletest_batch_finished(TRUE, [], [], 10));
}
/**
* @expectedDeprecation The deprecated hook hook_test_group_started() is implemented in these functions: simpletest_deprecation_test_test_group_started(). Convert your test to a PHPUnit-based one and implement test listeners. See https://www.drupal.org/node/2934242
*/
public function testHookTestGroupStarted() {
// Mock a database connection enough for simpletest_run_tests().
$insert = $this->getMockBuilder(Insert::class)
->disableOriginalConstructor()
->setMethods([
'execute',
'useDefaults',
])
->getMock();
$insert->expects($this->any())
->method('useDefaults')
->willReturn($insert);
$insert->expects($this->any())
->method('execute')
->willReturn(__METHOD__);
$connection = $this->getMockBuilder(Connection::class)
->disableOriginalConstructor()
->setMethods([
'insert',
])
->getMockForAbstractClass();
$connection->expects($this->once())
->method('insert')
->willReturn($insert);
// Mock public stream wrapper enough for simpletest_run_tests().
$public = $this->getMockBuilder(PublicStream::class)
->disableOriginalConstructor()
->setMethods([])
->getMock();
// Set up the container.
$this->container
->set('database', $connection);
$this->container
->set('stream_wrapper.public', $public);
// Make sure our mocked database is in use by expecting a test ID that is
// __METHOD__.
$this->assertEquals(__METHOD__, simpletest_run_tests([
static::class,
]));
}
/**
* @expectedDeprecation The deprecated hook hook_test_finished() is implemented in these functions: simpletest_deprecation_test_test_finished(). Convert your test to a PHPUnit-based one and implement test listeners. See https://www.drupal.org/node/2934242
*/
public function testHookTestFinished() {
// Mock test_discovery.
$discovery = $this->getMockBuilder(TestDiscovery::class)
->disableOriginalConstructor()
->setMethods([
'registerTestNamespaces',
])
->getMock();
$discovery->expects($this->once())
->method('registerTestNamespaces')
->willReturn([]);
// Mock renderer.
$renderer = $this->getMockBuilder(Renderer::class)
->disableOriginalConstructor()
->setMethods([
'render',
])
->getMock();
// We don't care what the rendered batch elements look like.
$renderer->expects($this->any())
->method('render')
->willReturn('');
// Set up the container.
$this->container
->set('test_discovery', $discovery);
$this->container
->set('renderer', $renderer);
// A mock batch.
$context = [];
// InnocuousTest is a WebTestBase test class which passes and never touches
// the database.
_simpletest_batch_operation([
InnocuousTest::class,
], __METHOD__, $context);
}
}
/**
* A very simple WebTestBase test that never touches the database.
*
* @group WebTestBase
* @group legacy
*/
class InnocuousTest extends WebTestBase {
/**
* Override to prevent any environmental side-effects.
*/
protected function prepareEnvironment() {
}
/**
* Override run() since it uses TestBase.
*/
public function run(array $methods = []) {
}
/**
* Override to prevent any assertions from being stored.
*/
protected function storeAssertion(array $assertion) {
}
/**
* Override to prevent any assertions from being stored.
*/
public static function insertAssert($test_id, $test_class, $status, $message = '', $group = 'Other', array $caller = []) {
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
InnocuousTest | A very simple WebTestBase test that never touches the database. | |
TestDeprecatedTestHooks | Test the deprecation messages for Simpletest test hooks. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.