Skip to content
Snippets Groups Projects
Commit 89d4a932 authored by Adam G-H's avatar Adam G-H
Browse files

Refactor tests to use more consistent validation

parent b04f8c2d
No related branches found
No related tags found
1 merge request!101Issue #3246673: Move PendingUpdatesValidator into Package Manager
This commit is part of merge request !101. Comments created here will be created in the context of that merge request.
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
namespace Drupal\Tests\package_manager\Kernel; namespace Drupal\Tests\package_manager\Kernel;
use Drupal\KernelTests\KernelTestBase; use Drupal\KernelTests\KernelTestBase;
use Drupal\package_manager\Event\PreCreateEvent;
use Drupal\package_manager\EventSubscriber\ComposerExecutableValidator; use Drupal\package_manager\EventSubscriber\ComposerExecutableValidator;
use Drupal\package_manager\ValidationResult; use Drupal\package_manager\ValidationResult;
use Drupal\Tests\package_manager\Traits\ValidationTestTrait; use Drupal\Tests\package_manager\Traits\ValidationTestTrait;
...@@ -16,29 +15,7 @@ use Prophecy\Argument; ...@@ -16,29 +15,7 @@ use Prophecy\Argument;
* *
* @group package_manager * @group package_manager
*/ */
class ComposerExecutableValidatorTest extends KernelTestBase { class ComposerExecutableValidatorTest extends PackageManagerKernelTestBase {
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());
}
/** /**
* Tests that an error is raised if the Composer executable isn't found. * Tests that an error is raised if the Composer executable isn't found.
......
...@@ -2,26 +2,16 @@ ...@@ -2,26 +2,16 @@
namespace Drupal\Tests\package_manager\Kernel; 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\EventSubscriber\DiskSpaceValidator;
use Drupal\package_manager\ValidationResult; use Drupal\package_manager\ValidationResult;
use Drupal\Component\Utility\Bytes; use Drupal\Component\Utility\Bytes;
use Drupal\Tests\package_manager\Traits\ValidationTestTrait;
/** /**
* @covers \Drupal\package_manager\EventSubscriber\DiskSpaceValidator * @covers \Drupal\package_manager\EventSubscriber\DiskSpaceValidator
* *
* @group package_manager * @group package_manager
*/ */
class DiskSpaceValidatorTest extends KernelTestBase { class DiskSpaceValidatorTest extends PackageManagerKernelTestBase {
use ValidationTestTrait;
/**
* {@inheritdoc}
*/
protected static $modules = ['package_manager'];
/** /**
* Data provider for ::testDiskSpaceValidation(). * Data provider for ::testDiskSpaceValidation().
...@@ -201,11 +191,7 @@ class DiskSpaceValidatorTest extends KernelTestBase { ...@@ -201,11 +191,7 @@ class DiskSpaceValidatorTest extends KernelTestBase {
$validator->sharedDisk = $shared_disk; $validator->sharedDisk = $shared_disk;
$validator->freeSpace = array_map([Bytes::class, 'toNumber'], $free_space); $validator->freeSpace = array_map([Bytes::class, 'toNumber'], $free_space);
$stage = $this->prophesize('\Drupal\package_manager\Stage'); $this->assertResults($expected_results);
$event = new PreCreateEvent($stage->reveal());
$validator->validateStage($event);
$this->assertValidationResultsEqual($expected_results, $event->getResults());
} }
} }
<?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());
}
}
}
...@@ -2,39 +2,14 @@ ...@@ -2,39 +2,14 @@
namespace Drupal\Tests\package_manager\Kernel; namespace Drupal\Tests\package_manager\Kernel;
use Drupal\KernelTests\KernelTestBase;
use Drupal\package_manager\Event\PreCreateEvent;
use Drupal\package_manager\ValidationResult; use Drupal\package_manager\ValidationResult;
use Drupal\Tests\package_manager\Traits\ValidationTestTrait;
/** /**
* @covers \Drupal\package_manager\EventSubscriber\PendingUpdatesValidator * @covers \Drupal\package_manager\EventSubscriber\PendingUpdatesValidator
* *
* @group package_manager * @group package_manager
*/ */
class PendingUpdatesValidatorTest extends KernelTestBase { class PendingUpdatesValidatorTest extends PackageManagerKernelTestBase {
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());
}
/** /**
* Tests that no error is raised if there are no pending updates. * Tests that no error is raised if there are no pending updates.
......
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