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
Loading
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -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.
 */
+11 −2
Original line number Diff line number Diff line
@@ -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;

}
+17 −2
Original line number Diff line number Diff line
@@ -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 [];
  }

}
+24 −8
Original line number Diff line number Diff line
@@ -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 [];
  }

}
+6 −6
Original line number Diff line number Diff line
@@ -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');
  }

}
Loading