Skip to content
Snippets Groups Projects
Verified Commit e0644f92 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3433091 by mondrake: Method getMockForTrait() of class...

Issue #3433091 by mondrake: Method getMockForTrait() of class PHPUnit\Framework\MockObject\MockBuilder is deprecated in PHPUnit 10
parent 5776f287
No related branches found
No related tags found
No related merge requests found
......@@ -75,7 +75,6 @@ public function testFailedValidate() {
/**
* A test class to use to test EntityResourceValidationTrait.
*
* Using ->getMockForTrait is problematic, as this trait is marked internal.
* Because the mock doesn't use the \Drupal namespace, the Symfony 4+ class
* loader will throw a deprecation error.
*/
......
......@@ -73,9 +73,9 @@ public function testShouldRedirectToInstaller($expected, $exception, $connection
}
catch (\Exception $e) {
// Mock the trait.
$trait = $this->getMockBuilder(InstallerRedirectTrait::class)
$trait = $this->getMockBuilder(InstallerRedirectTraitMockableClass::class)
->onlyMethods(['isCli'])
->getMockForTrait();
->getMock();
// Make sure that the method thinks we are not using the cli.
$trait->expects($this->any())
......@@ -125,3 +125,12 @@ public function testShouldRedirectToInstaller($expected, $exception, $connection
}
}
/**
* A class using the InstallerRedirectTrait for mocking purposes.
*/
class InstallerRedirectTraitMockableClass {
use InstallerRedirectTrait;
}
......@@ -4,6 +4,7 @@
namespace Drupal\Tests\Component\Plugin\Discovery;
use Drupal\Component\Plugin\Discovery\DiscoveryCachedTrait;
use PHPUnit\Framework\TestCase;
/**
......@@ -35,8 +36,9 @@ public static function providerGetDefinition() {
* @dataProvider providerGetDefinition
*/
public function testGetDefinition($expected, $cached_definitions, $get_definitions, $plugin_id) {
// Mock a DiscoveryCachedTrait.
$trait = $this->getMockForTrait('Drupal\Component\Plugin\Discovery\DiscoveryCachedTrait');
$trait = $this->getMockBuilder(DiscoveryCachedTraitMockableClass::class)
->onlyMethods(['getDefinitions'])
->getMock();
$reflection_definitions = new \ReflectionProperty($trait, 'definitions');
// getDefinition() needs the ::$definitions property to be set in one of two
// ways: 1) As existing cached data, or 2) as a side-effect of calling
......@@ -64,3 +66,16 @@ public function testGetDefinition($expected, $cached_definitions, $get_definitio
}
}
/**
* A class using the DiscoveryCachedTrait for mocking purposes.
*/
class DiscoveryCachedTraitMockableClass {
use DiscoveryCachedTrait;
public function getDefinitions(): array {
return [];
}
}
......@@ -4,6 +4,7 @@
namespace Drupal\Tests\Component\Plugin\Discovery;
use Drupal\Component\Plugin\Discovery\DiscoveryTrait;
use Drupal\Component\Plugin\Exception\PluginNotFoundException;
use PHPUnit\Framework\TestCase;
......@@ -33,8 +34,7 @@ public static function providerDoGetDefinition() {
* @dataProvider providerDoGetDefinition
*/
public function testDoGetDefinition($expected, $definitions, $plugin_id) {
// Mock the trait.
$trait = $this->getMockForTrait('Drupal\Component\Plugin\Discovery\DiscoveryTrait');
$trait = new DiscoveryTraitMockableClass();
// Un-protect the method using reflection.
$method_ref = new \ReflectionMethod($trait, 'doGetDefinition');
// Call doGetDefinition, with $exception_on_invalid always FALSE.
......@@ -64,8 +64,7 @@ public static function providerDoGetDefinitionException() {
* @uses \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
public function testDoGetDefinitionException($expected, $definitions, $plugin_id) {
// Mock the trait.
$trait = $this->getMockForTrait('Drupal\Component\Plugin\Discovery\DiscoveryTrait');
$trait = new DiscoveryTraitMockableClass();
// Un-protect the method using reflection.
$method_ref = new \ReflectionMethod($trait, 'doGetDefinition');
// Call doGetDefinition, with $exception_on_invalid always TRUE.
......@@ -81,7 +80,9 @@ public function testGetDefinition($expected, $definitions, $plugin_id) {
// Since getDefinition is a wrapper around doGetDefinition(), we can re-use
// its data provider. We just have to tell abstract method getDefinitions()
// to use the $definitions array.
$trait = $this->getMockForTrait('Drupal\Component\Plugin\Discovery\DiscoveryTrait');
$trait = $this->getMockBuilder(DiscoveryTraitMockableClass::class)
->onlyMethods(['getDefinitions'])
->getMock();
$trait->expects($this->once())
->method('getDefinitions')
->willReturn($definitions);
......@@ -101,7 +102,9 @@ public function testGetDefinitionException($expected, $definitions, $plugin_id)
// Since getDefinition is a wrapper around doGetDefinition(), we can re-use
// its data provider. We just have to tell abstract method getDefinitions()
// to use the $definitions array.
$trait = $this->getMockForTrait('Drupal\Component\Plugin\Discovery\DiscoveryTrait');
$trait = $this->getMockBuilder(DiscoveryTraitMockableClass::class)
->onlyMethods(['getDefinitions'])
->getMock();
$trait->expects($this->once())
->method('getDefinitions')
->willReturn($definitions);
......@@ -129,9 +132,9 @@ public static function providerHasDefinition() {
* @dataProvider providerHasDefinition
*/
public function testHasDefinition($expected, $plugin_id) {
$trait = $this->getMockBuilder('Drupal\Component\Plugin\Discovery\DiscoveryTrait')
$trait = $this->getMockBuilder(DiscoveryTraitMockableClass::class)
->onlyMethods(['getDefinition'])
->getMockForTrait();
->getMock();
// Set up our mocked getDefinition() to return TRUE for 'valid' and FALSE
// for 'not_valid'.
$trait->expects($this->once())
......@@ -148,3 +151,16 @@ public function testHasDefinition($expected, $plugin_id) {
}
}
/**
* A class using the DiscoveryTrait for mocking purposes.
*/
class DiscoveryTraitMockableClass {
use DiscoveryTrait;
public function getDefinitions(): array {
return [];
}
}
......@@ -45,26 +45,26 @@ public function testConfig() {
* @covers ::config
*/
public function testConfigFactoryException() {
$trait = $this->getMockForTrait('Drupal\Core\Form\ConfigFormBaseTrait');
$config_method = new \ReflectionMethod($trait, 'config');
$testObject = new ConfiguredTrait();
// There is no config factory available this should result in an exception.
$this->expectException(\LogicException::class);
$this->expectExceptionMessage('No config factory available for ConfigFormBaseTrait');
$config_method->invoke($trait, 'editable.config');
$config_method = new \ReflectionMethod($testObject, 'config');
$config_method->invoke($testObject, 'editable.config');
}
/**
* @covers ::config
*/
public function testConfigFactoryExceptionInvalidProperty() {
$trait = $this->getMockForTrait('Drupal\Core\Form\ConfigFormBaseTrait');
$config_method = new \ReflectionMethod($trait, 'config');
$testObject = new ConfiguredTrait();
// There is no config factory available this should result in an exception.
$this->expectException(\LogicException::class);
$this->expectExceptionMessage('No config factory available for ConfigFormBaseTrait');
$config_method->invoke($trait, 'editable.config');
$config_method = new \ReflectionMethod($testObject, 'config');
$config_method->invoke($testObject, 'editable.config');
}
}
......
......@@ -36,7 +36,11 @@ public function testChangeDatabasePrefix() {
// Create a mock for testing the trait and set a few properties that are
// used to avoid unnecessary set up.
$test_setup = $this->getMockForTrait(TestSetupTrait::class);
$test_setup = new class() {
use TestSetupTrait;
};
$reflection = new \ReflectionClass($test_setup);
$reflection->getProperty('databasePrefix')->setValue($test_setup, 'testDbPrefix');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment