diff --git a/package_manager/tests/src/Kernel/ComposerExecutableValidatorTest.php b/package_manager/tests/src/Kernel/ComposerExecutableValidatorTest.php index 73379cbf9e03a9dde13e9ac528bccac072e430dc..67209855936c5aefa75674f3e94b7a12ca5c835b 100644 --- a/package_manager/tests/src/Kernel/ComposerExecutableValidatorTest.php +++ b/package_manager/tests/src/Kernel/ComposerExecutableValidatorTest.php @@ -3,7 +3,6 @@ namespace Drupal\Tests\package_manager\Kernel; use Drupal\KernelTests\KernelTestBase; -use Drupal\package_manager\Event\PreCreateEvent; use Drupal\package_manager\EventSubscriber\ComposerExecutableValidator; use Drupal\package_manager\ValidationResult; use Drupal\Tests\package_manager\Traits\ValidationTestTrait; @@ -16,29 +15,7 @@ use Prophecy\Argument; * * @group package_manager */ -class ComposerExecutableValidatorTest extends KernelTestBase { - - use ValidationTestTrait; - - /** - * {@inheritdoc} - */ - protected static $modules = ['package_manager']; - - /** - * Runs the validator under test, and asserts its results match expectations. - * - * @param \Drupal\package_manager\ValidationResult[] $expected_results - * The expected validation results. - */ - private function assertResults(array $expected_results): void { - $stage = $this->prophesize('\Drupal\package_manager\Stage'); - $event = new PreCreateEvent($stage->reveal()); - $this->container->get('package_manager.validator.composer_executable') - ->validateStage($event); - - $this->assertValidationResultsEqual($expected_results, $event->getResults()); - } +class ComposerExecutableValidatorTest extends PackageManagerKernelTestBase { /** * Tests that an error is raised if the Composer executable isn't found. diff --git a/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php b/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php index 9e33cdc73adaf9fd584571b4c18396674f7a75e6..47f783f4e1afd8fd8a1aca2e24d88aa53622b571 100644 --- a/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php +++ b/package_manager/tests/src/Kernel/DiskSpaceValidatorTest.php @@ -2,26 +2,16 @@ namespace Drupal\Tests\package_manager\Kernel; -use Drupal\KernelTests\KernelTestBase; -use Drupal\package_manager\Event\PreCreateEvent; use Drupal\package_manager\EventSubscriber\DiskSpaceValidator; use Drupal\package_manager\ValidationResult; use Drupal\Component\Utility\Bytes; -use Drupal\Tests\package_manager\Traits\ValidationTestTrait; /** * @covers \Drupal\package_manager\EventSubscriber\DiskSpaceValidator * * @group package_manager */ -class DiskSpaceValidatorTest extends KernelTestBase { - - use ValidationTestTrait; - - /** - * {@inheritdoc} - */ - protected static $modules = ['package_manager']; +class DiskSpaceValidatorTest extends PackageManagerKernelTestBase { /** * Data provider for ::testDiskSpaceValidation(). @@ -201,11 +191,7 @@ class DiskSpaceValidatorTest extends KernelTestBase { $validator->sharedDisk = $shared_disk; $validator->freeSpace = array_map([Bytes::class, 'toNumber'], $free_space); - $stage = $this->prophesize('\Drupal\package_manager\Stage'); - $event = new PreCreateEvent($stage->reveal()); - $validator->validateStage($event); - - $this->assertValidationResultsEqual($expected_results, $event->getResults()); + $this->assertResults($expected_results); } } diff --git a/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php new file mode 100644 index 0000000000000000000000000000000000000000..bcaaa645b9206dfa5e79fb4ff0120a940a86b629 --- /dev/null +++ b/package_manager/tests/src/Kernel/PackageManagerKernelTestBase.php @@ -0,0 +1,45 @@ +<?php + +namespace Drupal\Tests\package_manager\Kernel; + +use Drupal\KernelTests\KernelTestBase; +use Drupal\package_manager\Stage; +use Drupal\package_manager\StageException; +use Drupal\Tests\package_manager\Traits\ValidationTestTrait; + +/** + * Base class for kernel tests of Package Manager's functionality. + */ +abstract class PackageManagerKernelTestBase extends KernelTestBase { + + use ValidationTestTrait; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'package_manager', + 'package_manager_bypass', + ]; + + protected function assertResults(array $expected_results): void { + $stage = new Stage( + $this->container->get('package_manager.path_locator'), + $this->container->get('package_manager.beginner'), + $this->container->get('package_manager.stager'), + $this->container->get('package_manager.committer'), + $this->container->get('package_manager.cleaner'), + $this->container->get('event_dispatcher'), + ); + try { + $stage->create(); + $stage->require(['drupal/core:9.8.1']); + $stage->apply(); + $stage->destroy(); + } + catch (StageException $e) { + $this->assertValidationResultsEqual($expected_results, $e->getResults()); + } + } + +} diff --git a/package_manager/tests/src/Kernel/PendingUpdatesValidatorTest.php b/package_manager/tests/src/Kernel/PendingUpdatesValidatorTest.php index d388630745533ac87d23c2b8db1e6743a24d63a9..316b85d343189b4e276212a95ffdf20d098d98f3 100644 --- a/package_manager/tests/src/Kernel/PendingUpdatesValidatorTest.php +++ b/package_manager/tests/src/Kernel/PendingUpdatesValidatorTest.php @@ -2,39 +2,14 @@ namespace Drupal\Tests\package_manager\Kernel; -use Drupal\KernelTests\KernelTestBase; -use Drupal\package_manager\Event\PreCreateEvent; use Drupal\package_manager\ValidationResult; -use Drupal\Tests\package_manager\Traits\ValidationTestTrait; /** * @covers \Drupal\package_manager\EventSubscriber\PendingUpdatesValidator * * @group package_manager */ -class PendingUpdatesValidatorTest extends KernelTestBase { - - use ValidationTestTrait; - - /** - * {@inheritdoc} - */ - protected static $modules = ['package_manager']; - - /** - * Runs the validator under test, and asserts its results match expectations. - * - * @param \Drupal\package_manager\ValidationResult[] $expected_results - * The expected validation results. - */ - private function assertResults(array $expected_results): void { - $stage = $this->prophesize('\Drupal\package_manager\Stage'); - $event = new PreCreateEvent($stage->reveal()); - $this->container->get('package_manager.validator.pending_updates') - ->validateStage($event); - - $this->assertValidationResultsEqual($expected_results, $event->getResults()); - } +class PendingUpdatesValidatorTest extends PackageManagerKernelTestBase { /** * Tests that no error is raised if there are no pending updates.